all: children: zuul_unreachable: hosts: {} hosts: controller: ansible_connection: ssh ansible_host: 38.102.83.182 ansible_port: 22 ansible_python_interpreter: auto ansible_user: zuul ca_cert_approver: true cifmw_dlrn_report_result: false cifmw_is_nested_virt: true cifmw_manage_secrets_pullsecret_content: '{}' cifmw_operator_build_output: operators: infra-operator: git_commit_hash: 400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 git_src_dir: /home/zuul/src/github.com/openstack-k8s-operators/infra-operator image: 38.102.83.107:5001/openstack-k8s-operators/infra-operator:400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 image_bundle: 38.102.83.107:5001/openstack-k8s-operators/infra-operator-bundle:400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 image_catalog: 38.102.83.107:5001/openstack-k8s-operators/infra-operator-index:400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 openstack-operator: git_commit_hash: 721c3f7c64850716e5de5f4e76e1ef4c36c28652 git_src_dir: ~/src/github.com/openstack-k8s-operators/openstack-operator image: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator:721c3f7c64850716e5de5f4e76e1ef4c36c28652 image_bundle: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator-bundle:721c3f7c64850716e5de5f4e76e1ef4c36c28652 image_catalog: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator-index:721c3f7c64850716e5de5f4e76e1ef4c36c28652 cifmw_rhol_crc_binary_folder: /usr/local/bin content_provider_registry_available: true content_provider_registry_ip: 38.102.83.107 content_provider_registry_ip_port: 38.102.83.107:5001 crc_parameters: --memory 32000 --disk-size 240 --cpus 12 max_retries: 60 nodepool: az: nova cloud: vexxhost-nodepool-tripleo external_id: d53a6bc0-af7b-41d8-ba0f-a87d85a0adf9 host_id: bdb78bf25a270582fae0ca49d447ffffc4c7a50a772a0a4c0593588a interface_ip: 38.102.83.182 label: centos-9-stream-crc-2-56-0-6xlarge node_properties: {} private_ipv4: 38.102.83.182 private_ipv6: null provider: vexxhost-nodepool-tripleo public_ipv4: 38.102.83.182 public_ipv6: '' region: RegionOne slot: null pre_pull_images: - registry.redhat.io/rhosp-rhel9/openstack-rabbitmq:17.0 push_registry: quay.rdoproject.org quay_login_secret_name: quay_nextgen_zuulgithubci registry_login_enabled: true retry_delay: 15 zuul_log_collection: true zuul_node: az: nova cloud: vexxhost-nodepool-tripleo external_id: d53a6bc0-af7b-41d8-ba0f-a87d85a0adf9 host_id: bdb78bf25a270582fae0ca49d447ffffc4c7a50a772a0a4c0593588a interface_ip: 38.102.83.182 label: centos-9-stream-crc-2-56-0-6xlarge node_properties: {} private_ipv4: 38.102.83.182 private_ipv6: null provider: vexxhost-nodepool-tripleo public_ipv4: 38.102.83.182 public_ipv6: '' region: RegionOne slot: null uuid: null crc: ansible_check_mode: false ansible_config_file: /var/lib/zuul/builds/a10b3a7202534162af472f861c53f83d/ansible/playbook_0/ansible.cfg ansible_diff_mode: false ansible_facts: {} ansible_forks: 5 ansible_host: api.crc.testing ansible_inventory_sources: - /var/lib/zuul/builds/a10b3a7202534162af472f861c53f83d/ansible/playbook_0/inventory.yaml ansible_playbook_python: /usr/lib/zuul/ansible/9/bin/python ansible_run_tags: - all ansible_scp_extra_args: -o PermitLocalCommand=no ansible_sftp_extra_args: -o PermitLocalCommand=no ansible_skip_tags: [] ansible_ssh_common_args: -o PermitLocalCommand=no ansible_ssh_executable: ssh ansible_ssh_extra_args: -o PermitLocalCommand=no ansible_ssh_private_key_file: /home/zuul/.crc/machines/crc/id_ed25519 ansible_ssh_user: core ansible_verbosity: 1 ansible_version: full: 2.16.18 major: 2 minor: 16 revision: 18 string: 2.16.18 ca_cert_approver: true cifmw_dlrn_report_result: false cifmw_is_nested_virt: true cifmw_manage_secrets_pullsecret_content: '{}' cifmw_operator_build_output: operators: infra-operator: git_commit_hash: 400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 git_src_dir: /home/zuul/src/github.com/openstack-k8s-operators/infra-operator image: 38.102.83.107:5001/openstack-k8s-operators/infra-operator:400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 image_bundle: 38.102.83.107:5001/openstack-k8s-operators/infra-operator-bundle:400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 image_catalog: 38.102.83.107:5001/openstack-k8s-operators/infra-operator-index:400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 openstack-operator: git_commit_hash: 721c3f7c64850716e5de5f4e76e1ef4c36c28652 git_src_dir: ~/src/github.com/openstack-k8s-operators/openstack-operator image: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator:721c3f7c64850716e5de5f4e76e1ef4c36c28652 image_bundle: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator-bundle:721c3f7c64850716e5de5f4e76e1ef4c36c28652 image_catalog: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator-index:721c3f7c64850716e5de5f4e76e1ef4c36c28652 cifmw_rhol_crc_binary_folder: /usr/local/bin content_provider_registry_available: true content_provider_registry_ip: 38.102.83.107 content_provider_registry_ip_port: 38.102.83.107:5001 crc_parameters: --memory 32000 --disk-size 240 --cpus 12 group_names: - ungrouped groups: all: - controller - crc ungrouped: - controller - crc zuul_unreachable: [] inventory_dir: null inventory_file: null inventory_hostname: crc inventory_hostname_short: crc max_retries: 60 omit: __omit_place_holder__cdfb4434ad4f6dfba570adadcd37ab7928455aec playbook_dir: /var/lib/zuul/builds/a10b3a7202534162af472f861c53f83d/untrusted/project_0/github.com/openstack-k8s-operators/ci-framework/ci/playbooks/edpm_baremetal_deployment pre_pull_images: - registry.redhat.io/rhosp-rhel9/openstack-rabbitmq:17.0 push_registry: quay.rdoproject.org quay_login_secret_name: quay_nextgen_zuulgithubci registry_login_enabled: true retry_delay: 15 unsafe_vars: ca_cert_approver: true cifmw_dlrn_report_result: false cifmw_is_nested_virt: true cifmw_manage_secrets_pullsecret_content: '{}' cifmw_operator_build_output: operators: infra-operator: git_commit_hash: 400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 git_src_dir: /home/zuul/src/github.com/openstack-k8s-operators/infra-operator image: 38.102.83.107:5001/openstack-k8s-operators/infra-operator:400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 image_bundle: 38.102.83.107:5001/openstack-k8s-operators/infra-operator-bundle:400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 image_catalog: 38.102.83.107:5001/openstack-k8s-operators/infra-operator-index:400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 openstack-operator: git_commit_hash: 721c3f7c64850716e5de5f4e76e1ef4c36c28652 git_src_dir: ~/src/github.com/openstack-k8s-operators/openstack-operator image: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator:721c3f7c64850716e5de5f4e76e1ef4c36c28652 image_bundle: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator-bundle:721c3f7c64850716e5de5f4e76e1ef4c36c28652 image_catalog: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator-index:721c3f7c64850716e5de5f4e76e1ef4c36c28652 cifmw_rhol_crc_binary_folder: /usr/local/bin content_provider_registry_available: true content_provider_registry_ip: 38.102.83.107 content_provider_registry_ip_port: 38.102.83.107:5001 crc_parameters: --memory 32000 --disk-size 240 --cpus 12 max_retries: 60 pre_pull_images: - registry.redhat.io/rhosp-rhel9/openstack-rabbitmq:17.0 push_registry: quay.rdoproject.org quay_login_secret_name: quay_nextgen_zuulgithubci registry_login_enabled: true retry_delay: 15 zuul_log_collection: true zuul: _inheritance_path: - '' - '' - '' - '' - '' - '' - '' ansible_version: '9' attempts: 1 branch: main build: a10b3a7202534162af472f861c53f83d build_refs: - branch: main change: '596' change_message: "Final InstanceHA cleanup and small fixes\n\nThis PR consists of three commits:\r\n\r\n**Commit 1: Lazy-import novaclient and keystoneauth1 SDK modules**\r\n\r\nMove novaclient and keystoneauth1 imports from module level into the functions that use them (nova_login, _server_evacuate, _handle_nova_exception, main). \r\nEliminates ~135 lines of mock exception boilerplate across 4 test files. \r\nAdd shared patch_pipeline() fixture in conftest.py replacing 7-deep nested patch blocks in process_service tests. \r\nBind conftest sys.modules submodule mocks to parent mock attributes so lazy imports and patch() targets resolve to the same objects.\r\n\r\n**Commit 2: Remove dead code and consolidate redundant patterns**\r\n\r\nRemove MigrationStatus enum (inline strings), dead _previous_hash state, unreachable VALIDATION_PATTERNS entries, unused _check_critical_services params, redundant validate_input in _host_fence, single-use _cleanup_dict_by_condition helper, and redundant requests.exceptions import. \r\nConsolidate 5 manual error+traceback log pairs into _safe_log_exception calls. \r\nDeduplicate _get_nova_connection by delegating to _establish_nova_connection.\r\n\r\n**Commit 3: Fix fail-open startup, fencing decision log, and document safety model**\r\n\r\nInitialize k8s_api_reachable=True (fail-open) to prevent startup deadlock where fencing was silently blocked until the background health check thread completed its first probe. \r\nInitialize K8S_API_REACHABLE Prometheus gauge to 1 to match. \r\nEmit fencing decision log line before early return so cliff-detection and all-heartbeat-alive cases are logged. \r\nWarn at startup when CHECK_HEARTBEAT is disabled. \r\nAdd Fencing Safety Model section to architecture doc covering gate chain, fail-open/fail-closed semantics, startup race window trade-off, and MedIK8s/InstanceHA responsibility boundary.\r\n" change_url: https://github.com/openstack-k8s-operators/infra-operator/pull/596 commit_id: 400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 patchset: 400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 project: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/infra-operator name: openstack-k8s-operators/infra-operator short_name: infra-operator src_dir: src/github.com/openstack-k8s-operators/infra-operator src_dir: src/github.com/openstack-k8s-operators/infra-operator topic: null buildset: 2c8d38947fa34b7791221a65df9016c6 buildset_refs: - branch: main change: '596' change_message: "Final InstanceHA cleanup and small fixes\n\nThis PR consists of three commits:\r\n\r\n**Commit 1: Lazy-import novaclient and keystoneauth1 SDK modules**\r\n\r\nMove novaclient and keystoneauth1 imports from module level into the functions that use them (nova_login, _server_evacuate, _handle_nova_exception, main). \r\nEliminates ~135 lines of mock exception boilerplate across 4 test files. \r\nAdd shared patch_pipeline() fixture in conftest.py replacing 7-deep nested patch blocks in process_service tests. \r\nBind conftest sys.modules submodule mocks to parent mock attributes so lazy imports and patch() targets resolve to the same objects.\r\n\r\n**Commit 2: Remove dead code and consolidate redundant patterns**\r\n\r\nRemove MigrationStatus enum (inline strings), dead _previous_hash state, unreachable VALIDATION_PATTERNS entries, unused _check_critical_services params, redundant validate_input in _host_fence, single-use _cleanup_dict_by_condition helper, and redundant requests.exceptions import. \r\nConsolidate 5 manual error+traceback log pairs into _safe_log_exception calls. \r\nDeduplicate _get_nova_connection by delegating to _establish_nova_connection.\r\n\r\n**Commit 3: Fix fail-open startup, fencing decision log, and document safety model**\r\n\r\nInitialize k8s_api_reachable=True (fail-open) to prevent startup deadlock where fencing was silently blocked until the background health check thread completed its first probe. \r\nInitialize K8S_API_REACHABLE Prometheus gauge to 1 to match. \r\nEmit fencing decision log line before early return so cliff-detection and all-heartbeat-alive cases are logged. \r\nWarn at startup when CHECK_HEARTBEAT is disabled. \r\nAdd Fencing Safety Model section to architecture doc covering gate chain, fail-open/fail-closed semantics, startup race window trade-off, and MedIK8s/InstanceHA responsibility boundary.\r\n" change_url: https://github.com/openstack-k8s-operators/infra-operator/pull/596 commit_id: 400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 patchset: 400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 project: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/infra-operator name: openstack-k8s-operators/infra-operator short_name: infra-operator src_dir: src/github.com/openstack-k8s-operators/infra-operator src_dir: src/github.com/openstack-k8s-operators/infra-operator topic: null change: '596' change_message: "Final InstanceHA cleanup and small fixes\n\nThis PR consists of three commits:\r\n\r\n**Commit 1: Lazy-import novaclient and keystoneauth1 SDK modules**\r\n\r\nMove novaclient and keystoneauth1 imports from module level into the functions that use them (nova_login, _server_evacuate, _handle_nova_exception, main). \r\nEliminates ~135 lines of mock exception boilerplate across 4 test files. \r\nAdd shared patch_pipeline() fixture in conftest.py replacing 7-deep nested patch blocks in process_service tests. \r\nBind conftest sys.modules submodule mocks to parent mock attributes so lazy imports and patch() targets resolve to the same objects.\r\n\r\n**Commit 2: Remove dead code and consolidate redundant patterns**\r\n\r\nRemove MigrationStatus enum (inline strings), dead _previous_hash state, unreachable VALIDATION_PATTERNS entries, unused _check_critical_services params, redundant validate_input in _host_fence, single-use _cleanup_dict_by_condition helper, and redundant requests.exceptions import. \r\nConsolidate 5 manual error+traceback log pairs into _safe_log_exception calls. \r\nDeduplicate _get_nova_connection by delegating to _establish_nova_connection.\r\n\r\n**Commit 3: Fix fail-open startup, fencing decision log, and document safety model**\r\n\r\nInitialize k8s_api_reachable=True (fail-open) to prevent startup deadlock where fencing was silently blocked until the background health check thread completed its first probe. \r\nInitialize K8S_API_REACHABLE Prometheus gauge to 1 to match. \r\nEmit fencing decision log line before early return so cliff-detection and all-heartbeat-alive cases are logged. \r\nWarn at startup when CHECK_HEARTBEAT is disabled. \r\nAdd Fencing Safety Model section to architecture doc covering gate chain, fail-open/fail-closed semantics, startup race window trade-off, and MedIK8s/InstanceHA responsibility boundary.\r\n" change_url: https://github.com/openstack-k8s-operators/infra-operator/pull/596 child_jobs: [] commit_id: 400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 event_id: f85b9530-6349-11f1-8ef9-f881325761c5 executor: hostname: 38.102.83.51 inventory_file: /var/lib/zuul/builds/a10b3a7202534162af472f861c53f83d/ansible/inventory.yaml log_root: /var/lib/zuul/builds/a10b3a7202534162af472f861c53f83d/work/logs result_data_file: /var/lib/zuul/builds/a10b3a7202534162af472f861c53f83d/work/results.json src_root: /var/lib/zuul/builds/a10b3a7202534162af472f861c53f83d/work/src work_root: /var/lib/zuul/builds/a10b3a7202534162af472f861c53f83d/work include_vars: [] items: - branch: main change: '596' change_message: "Final InstanceHA cleanup and small fixes\n\nThis PR consists of three commits:\r\n\r\n**Commit 1: Lazy-import novaclient and keystoneauth1 SDK modules**\r\n\r\nMove novaclient and keystoneauth1 imports from module level into the functions that use them (nova_login, _server_evacuate, _handle_nova_exception, main). \r\nEliminates ~135 lines of mock exception boilerplate across 4 test files. \r\nAdd shared patch_pipeline() fixture in conftest.py replacing 7-deep nested patch blocks in process_service tests. \r\nBind conftest sys.modules submodule mocks to parent mock attributes so lazy imports and patch() targets resolve to the same objects.\r\n\r\n**Commit 2: Remove dead code and consolidate redundant patterns**\r\n\r\nRemove MigrationStatus enum (inline strings), dead _previous_hash state, unreachable VALIDATION_PATTERNS entries, unused _check_critical_services params, redundant validate_input in _host_fence, single-use _cleanup_dict_by_condition helper, and redundant requests.exceptions import. \r\nConsolidate 5 manual error+traceback log pairs into _safe_log_exception calls. \r\nDeduplicate _get_nova_connection by delegating to _establish_nova_connection.\r\n\r\n**Commit 3: Fix fail-open startup, fencing decision log, and document safety model**\r\n\r\nInitialize k8s_api_reachable=True (fail-open) to prevent startup deadlock where fencing was silently blocked until the background health check thread completed its first probe. \r\nInitialize K8S_API_REACHABLE Prometheus gauge to 1 to match. \r\nEmit fencing decision log line before early return so cliff-detection and all-heartbeat-alive cases are logged. \r\nWarn at startup when CHECK_HEARTBEAT is disabled. \r\nAdd Fencing Safety Model section to architecture doc covering gate chain, fail-open/fail-closed semantics, startup race window trade-off, and MedIK8s/InstanceHA responsibility boundary.\r\n" change_url: https://github.com/openstack-k8s-operators/infra-operator/pull/596 commit_id: 400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 patchset: 400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 project: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/infra-operator name: openstack-k8s-operators/infra-operator short_name: infra-operator src_dir: src/github.com/openstack-k8s-operators/infra-operator topic: null job: cifmw-crc-podified-edpm-baremetal jobtags: [] max_attempts: 1 message: RmluYWwgSW5zdGFuY2VIQSBjbGVhbnVwIGFuZCBzbWFsbCBmaXhlcwoKVGhpcyBQUiBjb25zaXN0cyBvZiB0aHJlZSBjb21taXRzOg0KDQoqKkNvbW1pdCAxOiBMYXp5LWltcG9ydCBub3ZhY2xpZW50IGFuZCBrZXlzdG9uZWF1dGgxIFNESyBtb2R1bGVzKioNCg0KTW92ZSBub3ZhY2xpZW50IGFuZCBrZXlzdG9uZWF1dGgxIGltcG9ydHMgZnJvbSBtb2R1bGUgbGV2ZWwgaW50byB0aGUgZnVuY3Rpb25zIHRoYXQgdXNlIHRoZW0gKG5vdmFfbG9naW4sIF9zZXJ2ZXJfZXZhY3VhdGUsIF9oYW5kbGVfbm92YV9leGNlcHRpb24sIG1haW4pLiANCkVsaW1pbmF0ZXMgfjEzNSBsaW5lcyBvZiBtb2NrIGV4Y2VwdGlvbiBib2lsZXJwbGF0ZSBhY3Jvc3MgNCB0ZXN0IGZpbGVzLiANCkFkZCBzaGFyZWQgcGF0Y2hfcGlwZWxpbmUoKSBmaXh0dXJlIGluIGNvbmZ0ZXN0LnB5IHJlcGxhY2luZyA3LWRlZXAgbmVzdGVkIHBhdGNoIGJsb2NrcyBpbiBwcm9jZXNzX3NlcnZpY2UgdGVzdHMuIA0KQmluZCBjb25mdGVzdCBzeXMubW9kdWxlcyBzdWJtb2R1bGUgbW9ja3MgdG8gcGFyZW50IG1vY2sgYXR0cmlidXRlcyBzbyBsYXp5IGltcG9ydHMgYW5kIHBhdGNoKCkgdGFyZ2V0cyByZXNvbHZlIHRvIHRoZSBzYW1lIG9iamVjdHMuDQoNCioqQ29tbWl0IDI6IFJlbW92ZSBkZWFkIGNvZGUgYW5kIGNvbnNvbGlkYXRlIHJlZHVuZGFudCBwYXR0ZXJucyoqDQoNClJlbW92ZSBNaWdyYXRpb25TdGF0dXMgZW51bSAoaW5saW5lIHN0cmluZ3MpLCBkZWFkIF9wcmV2aW91c19oYXNoIHN0YXRlLCB1bnJlYWNoYWJsZSBWQUxJREFUSU9OX1BBVFRFUk5TIGVudHJpZXMsIHVudXNlZCBfY2hlY2tfY3JpdGljYWxfc2VydmljZXMgcGFyYW1zLCByZWR1bmRhbnQgdmFsaWRhdGVfaW5wdXQgaW4gX2hvc3RfZmVuY2UsIHNpbmdsZS11c2UgX2NsZWFudXBfZGljdF9ieV9jb25kaXRpb24gaGVscGVyLCBhbmQgcmVkdW5kYW50IHJlcXVlc3RzLmV4Y2VwdGlvbnMgaW1wb3J0LiANCkNvbnNvbGlkYXRlIDUgbWFudWFsIGVycm9yK3RyYWNlYmFjayBsb2cgcGFpcnMgaW50byBfc2FmZV9sb2dfZXhjZXB0aW9uIGNhbGxzLiANCkRlZHVwbGljYXRlIF9nZXRfbm92YV9jb25uZWN0aW9uIGJ5IGRlbGVnYXRpbmcgdG8gX2VzdGFibGlzaF9ub3ZhX2Nvbm5lY3Rpb24uDQoNCioqQ29tbWl0IDM6IEZpeCBmYWlsLW9wZW4gc3RhcnR1cCwgZmVuY2luZyBkZWNpc2lvbiBsb2csIGFuZCBkb2N1bWVudCBzYWZldHkgbW9kZWwqKg0KDQpJbml0aWFsaXplIGs4c19hcGlfcmVhY2hhYmxlPVRydWUgKGZhaWwtb3BlbikgdG8gcHJldmVudCBzdGFydHVwIGRlYWRsb2NrIHdoZXJlIGZlbmNpbmcgd2FzIHNpbGVudGx5IGJsb2NrZWQgdW50aWwgdGhlIGJhY2tncm91bmQgaGVhbHRoIGNoZWNrIHRocmVhZCBjb21wbGV0ZWQgaXRzIGZpcnN0IHByb2JlLiANCkluaXRpYWxpemUgSzhTX0FQSV9SRUFDSEFCTEUgUHJvbWV0aGV1cyBnYXVnZSB0byAxIHRvIG1hdGNoLiANCkVtaXQgZmVuY2luZyBkZWNpc2lvbiBsb2cgbGluZSBiZWZvcmUgZWFybHkgcmV0dXJuIHNvIGNsaWZmLWRldGVjdGlvbiBhbmQgYWxsLWhlYXJ0YmVhdC1hbGl2ZSBjYXNlcyBhcmUgbG9nZ2VkLiANCldhcm4gYXQgc3RhcnR1cCB3aGVuIENIRUNLX0hFQVJUQkVBVCBpcyBkaXNhYmxlZC4gDQpBZGQgRmVuY2luZyBTYWZldHkgTW9kZWwgc2VjdGlvbiB0byBhcmNoaXRlY3R1cmUgZG9jIGNvdmVyaW5nIGdhdGUgY2hhaW4sIGZhaWwtb3Blbi9mYWlsLWNsb3NlZCBzZW1hbnRpY3MsIHN0YXJ0dXAgcmFjZSB3aW5kb3cgdHJhZGUtb2ZmLCBhbmQgTWVkSUs4cy9JbnN0YW5jZUhBIHJlc3BvbnNpYmlsaXR5IGJvdW5kYXJ5Lg0K patchset: 400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 pipeline: github-check playbook_context: playbook_projects: trusted/project_0/review.rdoproject.org/config: canonical_name: review.rdoproject.org/config checkout: master commit: f4086da87f3046c98f2a4b907deaeed353c7ab49 trusted/project_1/opendev.org/zuul/zuul-jobs: canonical_name: opendev.org/zuul/zuul-jobs checkout: master commit: 82e3e8b1292a25e38235bb92b157992d326531d1 trusted/project_2/review.rdoproject.org/rdo-jobs: canonical_name: review.rdoproject.org/rdo-jobs checkout: master commit: ae3f884c6c8c32b779dc61f758c0f6a43ade6877 trusted/project_3/github.com/openstack-k8s-operators/ci-framework: canonical_name: github.com/openstack-k8s-operators/ci-framework checkout: main commit: 2d92baec383a4662b63f80a4932f74a9b754b0cf untrusted/project_0/github.com/openstack-k8s-operators/ci-framework: canonical_name: github.com/openstack-k8s-operators/ci-framework checkout: main commit: 2d92baec383a4662b63f80a4932f74a9b754b0cf untrusted/project_1/review.rdoproject.org/config: canonical_name: review.rdoproject.org/config checkout: master commit: f4086da87f3046c98f2a4b907deaeed353c7ab49 untrusted/project_2/opendev.org/zuul/zuul-jobs: canonical_name: opendev.org/zuul/zuul-jobs checkout: master commit: 82e3e8b1292a25e38235bb92b157992d326531d1 untrusted/project_3/review.rdoproject.org/rdo-jobs: canonical_name: review.rdoproject.org/rdo-jobs checkout: master commit: ae3f884c6c8c32b779dc61f758c0f6a43ade6877 playbooks: - path: untrusted/project_0/github.com/openstack-k8s-operators/ci-framework/ci/playbooks/edpm_baremetal_deployment/run.yml roles: - checkout: main checkout_description: playbook branch link_name: ansible/playbook_0/role_0/ci-framework link_target: untrusted/project_0/github.com/openstack-k8s-operators/ci-framework role_path: ansible/playbook_0/role_0/ci-framework/roles - checkout: master checkout_description: project default branch link_name: ansible/playbook_0/role_1/config link_target: untrusted/project_1/review.rdoproject.org/config role_path: ansible/playbook_0/role_1/config/roles - checkout: master checkout_description: project default branch link_name: ansible/playbook_0/role_2/zuul-jobs link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs role_path: ansible/playbook_0/role_2/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/playbook_0/role_3/rdo-jobs link_target: untrusted/project_3/review.rdoproject.org/rdo-jobs role_path: ansible/playbook_0/role_3/rdo-jobs/roles post_playbooks: - path: untrusted/project_0/github.com/openstack-k8s-operators/ci-framework/ci/playbooks/e2e-collect-logs.yml roles: - checkout: main checkout_description: playbook branch link_name: ansible/post_playbook_0/role_0/ci-framework link_target: untrusted/project_0/github.com/openstack-k8s-operators/ci-framework role_path: ansible/post_playbook_0/role_0/ci-framework/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_0/role_1/config link_target: untrusted/project_1/review.rdoproject.org/config role_path: ansible/post_playbook_0/role_1/config/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_0/role_2/zuul-jobs link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs role_path: ansible/post_playbook_0/role_2/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_0/role_3/rdo-jobs link_target: untrusted/project_3/review.rdoproject.org/rdo-jobs role_path: ansible/post_playbook_0/role_3/rdo-jobs/roles - path: untrusted/project_0/github.com/openstack-k8s-operators/ci-framework/ci/playbooks/collect-logs.yml roles: - checkout: main checkout_description: playbook branch link_name: ansible/post_playbook_1/role_0/ci-framework link_target: untrusted/project_0/github.com/openstack-k8s-operators/ci-framework role_path: ansible/post_playbook_1/role_0/ci-framework/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_1/role_1/config link_target: untrusted/project_1/review.rdoproject.org/config role_path: ansible/post_playbook_1/role_1/config/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_1/role_2/zuul-jobs link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs role_path: ansible/post_playbook_1/role_2/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_1/role_3/rdo-jobs link_target: untrusted/project_3/review.rdoproject.org/rdo-jobs role_path: ansible/post_playbook_1/role_3/rdo-jobs/roles - path: trusted/project_0/review.rdoproject.org/config/playbooks/ci-framework-rdo-base/dlrn/dlrn-report.yaml roles: - checkout: main checkout_description: zuul branch link_name: ansible/post_playbook_2/role_0/ci-framework link_target: trusted/project_3/github.com/openstack-k8s-operators/ci-framework role_path: ansible/post_playbook_2/role_0/ci-framework/roles - checkout: master checkout_description: playbook branch link_name: ansible/post_playbook_2/role_1/config link_target: trusted/project_0/review.rdoproject.org/config role_path: ansible/post_playbook_2/role_1/config/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_2/role_2/zuul-jobs link_target: trusted/project_1/opendev.org/zuul/zuul-jobs role_path: ansible/post_playbook_2/role_2/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_2/role_3/rdo-jobs link_target: trusted/project_2/review.rdoproject.org/rdo-jobs role_path: ansible/post_playbook_2/role_3/rdo-jobs/roles - path: trusted/project_0/review.rdoproject.org/config/playbooks/base-minimal/post-ssh.yaml roles: - checkout: master checkout_description: playbook branch link_name: ansible/post_playbook_3/role_0/config link_target: trusted/project_0/review.rdoproject.org/config role_path: ansible/post_playbook_3/role_0/config/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_3/role_1/zuul-jobs link_target: trusted/project_1/opendev.org/zuul/zuul-jobs role_path: ansible/post_playbook_3/role_1/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_3/role_2/rdo-jobs link_target: trusted/project_2/review.rdoproject.org/rdo-jobs role_path: ansible/post_playbook_3/role_2/rdo-jobs/roles - path: trusted/project_0/review.rdoproject.org/config/playbooks/base-minimal/post-logs.yaml roles: - checkout: master checkout_description: playbook branch link_name: ansible/post_playbook_4/role_0/config link_target: trusted/project_0/review.rdoproject.org/config role_path: ansible/post_playbook_4/role_0/config/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_4/role_1/zuul-jobs link_target: trusted/project_1/opendev.org/zuul/zuul-jobs role_path: ansible/post_playbook_4/role_1/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_4/role_2/rdo-jobs link_target: trusted/project_2/review.rdoproject.org/rdo-jobs role_path: ansible/post_playbook_4/role_2/rdo-jobs/roles pre_playbooks: - path: trusted/project_0/review.rdoproject.org/config/playbooks/base-minimal/pre.yaml roles: - checkout: master checkout_description: playbook branch link_name: ansible/pre_playbook_0/role_0/config link_target: trusted/project_0/review.rdoproject.org/config role_path: ansible/pre_playbook_0/role_0/config/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_0/role_1/zuul-jobs link_target: trusted/project_1/opendev.org/zuul/zuul-jobs role_path: ansible/pre_playbook_0/role_1/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_0/role_2/rdo-jobs link_target: trusted/project_2/review.rdoproject.org/rdo-jobs role_path: ansible/pre_playbook_0/role_2/rdo-jobs/roles - path: trusted/project_0/review.rdoproject.org/config/playbooks/ci-framework-rdo-base/pre.yaml roles: - checkout: main checkout_description: zuul branch link_name: ansible/pre_playbook_1/role_0/ci-framework link_target: trusted/project_3/github.com/openstack-k8s-operators/ci-framework role_path: ansible/pre_playbook_1/role_0/ci-framework/roles - checkout: master checkout_description: playbook branch link_name: ansible/pre_playbook_1/role_1/config link_target: trusted/project_0/review.rdoproject.org/config role_path: ansible/pre_playbook_1/role_1/config/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_1/role_2/zuul-jobs link_target: trusted/project_1/opendev.org/zuul/zuul-jobs role_path: ansible/pre_playbook_1/role_2/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_1/role_3/rdo-jobs link_target: trusted/project_2/review.rdoproject.org/rdo-jobs role_path: ansible/pre_playbook_1/role_3/rdo-jobs/roles - path: trusted/project_0/review.rdoproject.org/config/playbooks/crc/podman.yaml roles: - checkout: main checkout_description: zuul branch link_name: ansible/pre_playbook_2/role_0/ci-framework link_target: trusted/project_3/github.com/openstack-k8s-operators/ci-framework role_path: ansible/pre_playbook_2/role_0/ci-framework/roles - checkout: master checkout_description: playbook branch link_name: ansible/pre_playbook_2/role_1/config link_target: trusted/project_0/review.rdoproject.org/config role_path: ansible/pre_playbook_2/role_1/config/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_2/role_2/zuul-jobs link_target: trusted/project_1/opendev.org/zuul/zuul-jobs role_path: ansible/pre_playbook_2/role_2/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_2/role_3/rdo-jobs link_target: trusted/project_2/review.rdoproject.org/rdo-jobs role_path: ansible/pre_playbook_2/role_3/rdo-jobs/roles - path: trusted/project_0/review.rdoproject.org/config/playbooks/crc/simple-start.yaml roles: - checkout: main checkout_description: zuul branch link_name: ansible/pre_playbook_3/role_0/ci-framework link_target: trusted/project_3/github.com/openstack-k8s-operators/ci-framework role_path: ansible/pre_playbook_3/role_0/ci-framework/roles - checkout: master checkout_description: playbook branch link_name: ansible/pre_playbook_3/role_1/config link_target: trusted/project_0/review.rdoproject.org/config role_path: ansible/pre_playbook_3/role_1/config/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_3/role_2/zuul-jobs link_target: trusted/project_1/opendev.org/zuul/zuul-jobs role_path: ansible/pre_playbook_3/role_2/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_3/role_3/rdo-jobs link_target: trusted/project_2/review.rdoproject.org/rdo-jobs role_path: ansible/pre_playbook_3/role_3/rdo-jobs/roles - path: untrusted/project_0/github.com/openstack-k8s-operators/ci-framework/ci/playbooks/e2e-prepare.yml roles: - checkout: main checkout_description: playbook branch link_name: ansible/pre_playbook_4/role_0/ci-framework link_target: untrusted/project_0/github.com/openstack-k8s-operators/ci-framework role_path: ansible/pre_playbook_4/role_0/ci-framework/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_4/role_1/config link_target: untrusted/project_1/review.rdoproject.org/config role_path: ansible/pre_playbook_4/role_1/config/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_4/role_2/zuul-jobs link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs role_path: ansible/pre_playbook_4/role_2/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_4/role_3/rdo-jobs link_target: untrusted/project_3/review.rdoproject.org/rdo-jobs role_path: ansible/pre_playbook_4/role_3/rdo-jobs/roles - path: untrusted/project_0/github.com/openstack-k8s-operators/ci-framework/ci/playbooks/dump_zuul_data.yml roles: - checkout: main checkout_description: playbook branch link_name: ansible/pre_playbook_5/role_0/ci-framework link_target: untrusted/project_0/github.com/openstack-k8s-operators/ci-framework role_path: ansible/pre_playbook_5/role_0/ci-framework/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_5/role_1/config link_target: untrusted/project_1/review.rdoproject.org/config role_path: ansible/pre_playbook_5/role_1/config/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_5/role_2/zuul-jobs link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs role_path: ansible/pre_playbook_5/role_2/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_5/role_3/rdo-jobs link_target: untrusted/project_3/review.rdoproject.org/rdo-jobs role_path: ansible/pre_playbook_5/role_3/rdo-jobs/roles post_review: false post_timeout: 5400 pre_timeout: null project: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/infra-operator name: openstack-k8s-operators/infra-operator short_name: infra-operator src_dir: src/github.com/openstack-k8s-operators/infra-operator projects: github.com/openstack-k8s-operators/ci-framework: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/ci-framework checkout: main checkout_description: zuul branch commit: 2d92baec383a4662b63f80a4932f74a9b754b0cf name: openstack-k8s-operators/ci-framework required: true short_name: ci-framework src_dir: src/github.com/openstack-k8s-operators/ci-framework github.com/openstack-k8s-operators/edpm-ansible: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/edpm-ansible checkout: main checkout_description: zuul branch commit: d5eae620a08b412f076b112b4c3d8e0d69cbb047 name: openstack-k8s-operators/edpm-ansible required: true short_name: edpm-ansible src_dir: src/github.com/openstack-k8s-operators/edpm-ansible github.com/openstack-k8s-operators/infra-operator: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/infra-operator checkout: main checkout_description: zuul branch commit: 400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 name: openstack-k8s-operators/infra-operator required: true short_name: infra-operator src_dir: src/github.com/openstack-k8s-operators/infra-operator github.com/openstack-k8s-operators/install_yamls: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/install_yamls checkout: main checkout_description: zuul branch commit: 28010890899b365d9b163f6cd2faeb71bf37d54f name: openstack-k8s-operators/install_yamls required: true short_name: install_yamls src_dir: src/github.com/openstack-k8s-operators/install_yamls github.com/openstack-k8s-operators/openstack-baremetal-operator: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/openstack-baremetal-operator checkout: main checkout_description: zuul branch commit: 96ee712650c0df1c6bd02de78be0a12085a9827c name: openstack-k8s-operators/openstack-baremetal-operator required: true short_name: openstack-baremetal-operator src_dir: src/github.com/openstack-k8s-operators/openstack-baremetal-operator github.com/openstack-k8s-operators/openstack-must-gather: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/openstack-must-gather checkout: main checkout_description: zuul branch commit: c368cbf84357cebd70fe8ec9c2c849e2aa7905e4 name: openstack-k8s-operators/openstack-must-gather required: true short_name: openstack-must-gather src_dir: src/github.com/openstack-k8s-operators/openstack-must-gather github.com/openstack-k8s-operators/openstack-operator: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/openstack-operator checkout: main checkout_description: zuul branch commit: 721c3f7c64850716e5de5f4e76e1ef4c36c28652 name: openstack-k8s-operators/openstack-operator required: true short_name: openstack-operator src_dir: src/github.com/openstack-k8s-operators/openstack-operator github.com/openstack-k8s-operators/repo-setup: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/repo-setup checkout: main checkout_description: zuul branch commit: 85321f7e0af502d7f06f845886058daf09da34f6 name: openstack-k8s-operators/repo-setup required: true short_name: repo-setup src_dir: src/github.com/openstack-k8s-operators/repo-setup opendev.org/zuul/zuul-jobs: canonical_hostname: opendev.org canonical_name: opendev.org/zuul/zuul-jobs checkout: master checkout_description: project default branch commit: 82e3e8b1292a25e38235bb92b157992d326531d1 name: zuul/zuul-jobs required: true short_name: zuul-jobs src_dir: src/opendev.org/zuul/zuul-jobs review.rdoproject.org/config: canonical_hostname: review.rdoproject.org canonical_name: review.rdoproject.org/config checkout: master checkout_description: project default branch commit: f4086da87f3046c98f2a4b907deaeed353c7ab49 name: config required: true short_name: config src_dir: src/review.rdoproject.org/config ref: refs/pull/596/head resources: {} tenant: rdoproject.org timeout: 10800 topic: null voting: true zuul_execution_branch: main zuul_execution_canonical_name_and_path: github.com/openstack-k8s-operators/ci-framework/ci/playbooks/edpm_baremetal_deployment/run.yml zuul_execution_phase: run zuul_execution_phase_index: '0' zuul_execution_trusted: 'False' zuul_log_collection: true localhost: ansible_connection: local vars: ca_cert_approver: true cifmw_dlrn_report_result: false cifmw_is_nested_virt: true cifmw_manage_secrets_pullsecret_content: '{}' cifmw_operator_build_output: operators: infra-operator: git_commit_hash: 400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 git_src_dir: /home/zuul/src/github.com/openstack-k8s-operators/infra-operator image: 38.102.83.107:5001/openstack-k8s-operators/infra-operator:400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 image_bundle: 38.102.83.107:5001/openstack-k8s-operators/infra-operator-bundle:400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 image_catalog: 38.102.83.107:5001/openstack-k8s-operators/infra-operator-index:400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 openstack-operator: git_commit_hash: 721c3f7c64850716e5de5f4e76e1ef4c36c28652 git_src_dir: ~/src/github.com/openstack-k8s-operators/openstack-operator image: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator:721c3f7c64850716e5de5f4e76e1ef4c36c28652 image_bundle: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator-bundle:721c3f7c64850716e5de5f4e76e1ef4c36c28652 image_catalog: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator-index:721c3f7c64850716e5de5f4e76e1ef4c36c28652 cifmw_rhol_crc_binary_folder: /usr/local/bin content_provider_registry_available: true content_provider_registry_ip: 38.102.83.107 content_provider_registry_ip_port: 38.102.83.107:5001 crc_parameters: --memory 32000 --disk-size 240 --cpus 12 max_retries: 60 pre_pull_images: - registry.redhat.io/rhosp-rhel9/openstack-rabbitmq:17.0 push_registry: quay.rdoproject.org quay_login_secret_name: quay_nextgen_zuulgithubci registry_login_enabled: true retry_delay: 15 zuul: _inheritance_path: - '' - '' - '' - '' - '' - '' - '' ansible_version: '9' attempts: 1 branch: main build: a10b3a7202534162af472f861c53f83d build_refs: - branch: main change: '596' change_message: "Final InstanceHA cleanup and small fixes\n\nThis PR consists of three commits:\r\n\r\n**Commit 1: Lazy-import novaclient and keystoneauth1 SDK modules**\r\n\r\nMove novaclient and keystoneauth1 imports from module level into the functions that use them (nova_login, _server_evacuate, _handle_nova_exception, main). \r\nEliminates ~135 lines of mock exception boilerplate across 4 test files. \r\nAdd shared patch_pipeline() fixture in conftest.py replacing 7-deep nested patch blocks in process_service tests. \r\nBind conftest sys.modules submodule mocks to parent mock attributes so lazy imports and patch() targets resolve to the same objects.\r\n\r\n**Commit 2: Remove dead code and consolidate redundant patterns**\r\n\r\nRemove MigrationStatus enum (inline strings), dead _previous_hash state, unreachable VALIDATION_PATTERNS entries, unused _check_critical_services params, redundant validate_input in _host_fence, single-use _cleanup_dict_by_condition helper, and redundant requests.exceptions import. \r\nConsolidate 5 manual error+traceback log pairs into _safe_log_exception calls. \r\nDeduplicate _get_nova_connection by delegating to _establish_nova_connection.\r\n\r\n**Commit 3: Fix fail-open startup, fencing decision log, and document safety model**\r\n\r\nInitialize k8s_api_reachable=True (fail-open) to prevent startup deadlock where fencing was silently blocked until the background health check thread completed its first probe. \r\nInitialize K8S_API_REACHABLE Prometheus gauge to 1 to match. \r\nEmit fencing decision log line before early return so cliff-detection and all-heartbeat-alive cases are logged. \r\nWarn at startup when CHECK_HEARTBEAT is disabled. \r\nAdd Fencing Safety Model section to architecture doc covering gate chain, fail-open/fail-closed semantics, startup race window trade-off, and MedIK8s/InstanceHA responsibility boundary.\r\n" change_url: https://github.com/openstack-k8s-operators/infra-operator/pull/596 commit_id: 400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 patchset: 400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 project: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/infra-operator name: openstack-k8s-operators/infra-operator short_name: infra-operator src_dir: src/github.com/openstack-k8s-operators/infra-operator src_dir: src/github.com/openstack-k8s-operators/infra-operator topic: null buildset: 2c8d38947fa34b7791221a65df9016c6 buildset_refs: - branch: main change: '596' change_message: "Final InstanceHA cleanup and small fixes\n\nThis PR consists of three commits:\r\n\r\n**Commit 1: Lazy-import novaclient and keystoneauth1 SDK modules**\r\n\r\nMove novaclient and keystoneauth1 imports from module level into the functions that use them (nova_login, _server_evacuate, _handle_nova_exception, main). \r\nEliminates ~135 lines of mock exception boilerplate across 4 test files. \r\nAdd shared patch_pipeline() fixture in conftest.py replacing 7-deep nested patch blocks in process_service tests. \r\nBind conftest sys.modules submodule mocks to parent mock attributes so lazy imports and patch() targets resolve to the same objects.\r\n\r\n**Commit 2: Remove dead code and consolidate redundant patterns**\r\n\r\nRemove MigrationStatus enum (inline strings), dead _previous_hash state, unreachable VALIDATION_PATTERNS entries, unused _check_critical_services params, redundant validate_input in _host_fence, single-use _cleanup_dict_by_condition helper, and redundant requests.exceptions import. \r\nConsolidate 5 manual error+traceback log pairs into _safe_log_exception calls. \r\nDeduplicate _get_nova_connection by delegating to _establish_nova_connection.\r\n\r\n**Commit 3: Fix fail-open startup, fencing decision log, and document safety model**\r\n\r\nInitialize k8s_api_reachable=True (fail-open) to prevent startup deadlock where fencing was silently blocked until the background health check thread completed its first probe. \r\nInitialize K8S_API_REACHABLE Prometheus gauge to 1 to match. \r\nEmit fencing decision log line before early return so cliff-detection and all-heartbeat-alive cases are logged. \r\nWarn at startup when CHECK_HEARTBEAT is disabled. \r\nAdd Fencing Safety Model section to architecture doc covering gate chain, fail-open/fail-closed semantics, startup race window trade-off, and MedIK8s/InstanceHA responsibility boundary.\r\n" change_url: https://github.com/openstack-k8s-operators/infra-operator/pull/596 commit_id: 400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 patchset: 400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 project: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/infra-operator name: openstack-k8s-operators/infra-operator short_name: infra-operator src_dir: src/github.com/openstack-k8s-operators/infra-operator src_dir: src/github.com/openstack-k8s-operators/infra-operator topic: null change: '596' change_message: "Final InstanceHA cleanup and small fixes\n\nThis PR consists of three commits:\r\n\r\n**Commit 1: Lazy-import novaclient and keystoneauth1 SDK modules**\r\n\r\nMove novaclient and keystoneauth1 imports from module level into the functions that use them (nova_login, _server_evacuate, _handle_nova_exception, main). \r\nEliminates ~135 lines of mock exception boilerplate across 4 test files. \r\nAdd shared patch_pipeline() fixture in conftest.py replacing 7-deep nested patch blocks in process_service tests. \r\nBind conftest sys.modules submodule mocks to parent mock attributes so lazy imports and patch() targets resolve to the same objects.\r\n\r\n**Commit 2: Remove dead code and consolidate redundant patterns**\r\n\r\nRemove MigrationStatus enum (inline strings), dead _previous_hash state, unreachable VALIDATION_PATTERNS entries, unused _check_critical_services params, redundant validate_input in _host_fence, single-use _cleanup_dict_by_condition helper, and redundant requests.exceptions import. \r\nConsolidate 5 manual error+traceback log pairs into _safe_log_exception calls. \r\nDeduplicate _get_nova_connection by delegating to _establish_nova_connection.\r\n\r\n**Commit 3: Fix fail-open startup, fencing decision log, and document safety model**\r\n\r\nInitialize k8s_api_reachable=True (fail-open) to prevent startup deadlock where fencing was silently blocked until the background health check thread completed its first probe. \r\nInitialize K8S_API_REACHABLE Prometheus gauge to 1 to match. \r\nEmit fencing decision log line before early return so cliff-detection and all-heartbeat-alive cases are logged. \r\nWarn at startup when CHECK_HEARTBEAT is disabled. \r\nAdd Fencing Safety Model section to architecture doc covering gate chain, fail-open/fail-closed semantics, startup race window trade-off, and MedIK8s/InstanceHA responsibility boundary.\r\n" change_url: https://github.com/openstack-k8s-operators/infra-operator/pull/596 child_jobs: [] commit_id: 400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 event_id: f85b9530-6349-11f1-8ef9-f881325761c5 executor: hostname: 38.102.83.51 inventory_file: /var/lib/zuul/builds/a10b3a7202534162af472f861c53f83d/ansible/inventory.yaml log_root: /var/lib/zuul/builds/a10b3a7202534162af472f861c53f83d/work/logs result_data_file: /var/lib/zuul/builds/a10b3a7202534162af472f861c53f83d/work/results.json src_root: /var/lib/zuul/builds/a10b3a7202534162af472f861c53f83d/work/src work_root: /var/lib/zuul/builds/a10b3a7202534162af472f861c53f83d/work include_vars: [] items: - branch: main change: '596' change_message: "Final InstanceHA cleanup and small fixes\n\nThis PR consists of three commits:\r\n\r\n**Commit 1: Lazy-import novaclient and keystoneauth1 SDK modules**\r\n\r\nMove novaclient and keystoneauth1 imports from module level into the functions that use them (nova_login, _server_evacuate, _handle_nova_exception, main). \r\nEliminates ~135 lines of mock exception boilerplate across 4 test files. \r\nAdd shared patch_pipeline() fixture in conftest.py replacing 7-deep nested patch blocks in process_service tests. \r\nBind conftest sys.modules submodule mocks to parent mock attributes so lazy imports and patch() targets resolve to the same objects.\r\n\r\n**Commit 2: Remove dead code and consolidate redundant patterns**\r\n\r\nRemove MigrationStatus enum (inline strings), dead _previous_hash state, unreachable VALIDATION_PATTERNS entries, unused _check_critical_services params, redundant validate_input in _host_fence, single-use _cleanup_dict_by_condition helper, and redundant requests.exceptions import. \r\nConsolidate 5 manual error+traceback log pairs into _safe_log_exception calls. \r\nDeduplicate _get_nova_connection by delegating to _establish_nova_connection.\r\n\r\n**Commit 3: Fix fail-open startup, fencing decision log, and document safety model**\r\n\r\nInitialize k8s_api_reachable=True (fail-open) to prevent startup deadlock where fencing was silently blocked until the background health check thread completed its first probe. \r\nInitialize K8S_API_REACHABLE Prometheus gauge to 1 to match. \r\nEmit fencing decision log line before early return so cliff-detection and all-heartbeat-alive cases are logged. \r\nWarn at startup when CHECK_HEARTBEAT is disabled. \r\nAdd Fencing Safety Model section to architecture doc covering gate chain, fail-open/fail-closed semantics, startup race window trade-off, and MedIK8s/InstanceHA responsibility boundary.\r\n" change_url: https://github.com/openstack-k8s-operators/infra-operator/pull/596 commit_id: 400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 patchset: 400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 project: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/infra-operator name: openstack-k8s-operators/infra-operator short_name: infra-operator src_dir: src/github.com/openstack-k8s-operators/infra-operator topic: null job: cifmw-crc-podified-edpm-baremetal jobtags: [] max_attempts: 1 message: RmluYWwgSW5zdGFuY2VIQSBjbGVhbnVwIGFuZCBzbWFsbCBmaXhlcwoKVGhpcyBQUiBjb25zaXN0cyBvZiB0aHJlZSBjb21taXRzOg0KDQoqKkNvbW1pdCAxOiBMYXp5LWltcG9ydCBub3ZhY2xpZW50IGFuZCBrZXlzdG9uZWF1dGgxIFNESyBtb2R1bGVzKioNCg0KTW92ZSBub3ZhY2xpZW50IGFuZCBrZXlzdG9uZWF1dGgxIGltcG9ydHMgZnJvbSBtb2R1bGUgbGV2ZWwgaW50byB0aGUgZnVuY3Rpb25zIHRoYXQgdXNlIHRoZW0gKG5vdmFfbG9naW4sIF9zZXJ2ZXJfZXZhY3VhdGUsIF9oYW5kbGVfbm92YV9leGNlcHRpb24sIG1haW4pLiANCkVsaW1pbmF0ZXMgfjEzNSBsaW5lcyBvZiBtb2NrIGV4Y2VwdGlvbiBib2lsZXJwbGF0ZSBhY3Jvc3MgNCB0ZXN0IGZpbGVzLiANCkFkZCBzaGFyZWQgcGF0Y2hfcGlwZWxpbmUoKSBmaXh0dXJlIGluIGNvbmZ0ZXN0LnB5IHJlcGxhY2luZyA3LWRlZXAgbmVzdGVkIHBhdGNoIGJsb2NrcyBpbiBwcm9jZXNzX3NlcnZpY2UgdGVzdHMuIA0KQmluZCBjb25mdGVzdCBzeXMubW9kdWxlcyBzdWJtb2R1bGUgbW9ja3MgdG8gcGFyZW50IG1vY2sgYXR0cmlidXRlcyBzbyBsYXp5IGltcG9ydHMgYW5kIHBhdGNoKCkgdGFyZ2V0cyByZXNvbHZlIHRvIHRoZSBzYW1lIG9iamVjdHMuDQoNCioqQ29tbWl0IDI6IFJlbW92ZSBkZWFkIGNvZGUgYW5kIGNvbnNvbGlkYXRlIHJlZHVuZGFudCBwYXR0ZXJucyoqDQoNClJlbW92ZSBNaWdyYXRpb25TdGF0dXMgZW51bSAoaW5saW5lIHN0cmluZ3MpLCBkZWFkIF9wcmV2aW91c19oYXNoIHN0YXRlLCB1bnJlYWNoYWJsZSBWQUxJREFUSU9OX1BBVFRFUk5TIGVudHJpZXMsIHVudXNlZCBfY2hlY2tfY3JpdGljYWxfc2VydmljZXMgcGFyYW1zLCByZWR1bmRhbnQgdmFsaWRhdGVfaW5wdXQgaW4gX2hvc3RfZmVuY2UsIHNpbmdsZS11c2UgX2NsZWFudXBfZGljdF9ieV9jb25kaXRpb24gaGVscGVyLCBhbmQgcmVkdW5kYW50IHJlcXVlc3RzLmV4Y2VwdGlvbnMgaW1wb3J0LiANCkNvbnNvbGlkYXRlIDUgbWFudWFsIGVycm9yK3RyYWNlYmFjayBsb2cgcGFpcnMgaW50byBfc2FmZV9sb2dfZXhjZXB0aW9uIGNhbGxzLiANCkRlZHVwbGljYXRlIF9nZXRfbm92YV9jb25uZWN0aW9uIGJ5IGRlbGVnYXRpbmcgdG8gX2VzdGFibGlzaF9ub3ZhX2Nvbm5lY3Rpb24uDQoNCioqQ29tbWl0IDM6IEZpeCBmYWlsLW9wZW4gc3RhcnR1cCwgZmVuY2luZyBkZWNpc2lvbiBsb2csIGFuZCBkb2N1bWVudCBzYWZldHkgbW9kZWwqKg0KDQpJbml0aWFsaXplIGs4c19hcGlfcmVhY2hhYmxlPVRydWUgKGZhaWwtb3BlbikgdG8gcHJldmVudCBzdGFydHVwIGRlYWRsb2NrIHdoZXJlIGZlbmNpbmcgd2FzIHNpbGVudGx5IGJsb2NrZWQgdW50aWwgdGhlIGJhY2tncm91bmQgaGVhbHRoIGNoZWNrIHRocmVhZCBjb21wbGV0ZWQgaXRzIGZpcnN0IHByb2JlLiANCkluaXRpYWxpemUgSzhTX0FQSV9SRUFDSEFCTEUgUHJvbWV0aGV1cyBnYXVnZSB0byAxIHRvIG1hdGNoLiANCkVtaXQgZmVuY2luZyBkZWNpc2lvbiBsb2cgbGluZSBiZWZvcmUgZWFybHkgcmV0dXJuIHNvIGNsaWZmLWRldGVjdGlvbiBhbmQgYWxsLWhlYXJ0YmVhdC1hbGl2ZSBjYXNlcyBhcmUgbG9nZ2VkLiANCldhcm4gYXQgc3RhcnR1cCB3aGVuIENIRUNLX0hFQVJUQkVBVCBpcyBkaXNhYmxlZC4gDQpBZGQgRmVuY2luZyBTYWZldHkgTW9kZWwgc2VjdGlvbiB0byBhcmNoaXRlY3R1cmUgZG9jIGNvdmVyaW5nIGdhdGUgY2hhaW4sIGZhaWwtb3Blbi9mYWlsLWNsb3NlZCBzZW1hbnRpY3MsIHN0YXJ0dXAgcmFjZSB3aW5kb3cgdHJhZGUtb2ZmLCBhbmQgTWVkSUs4cy9JbnN0YW5jZUhBIHJlc3BvbnNpYmlsaXR5IGJvdW5kYXJ5Lg0K patchset: 400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 pipeline: github-check playbook_context: playbook_projects: trusted/project_0/review.rdoproject.org/config: canonical_name: review.rdoproject.org/config checkout: master commit: f4086da87f3046c98f2a4b907deaeed353c7ab49 trusted/project_1/opendev.org/zuul/zuul-jobs: canonical_name: opendev.org/zuul/zuul-jobs checkout: master commit: 82e3e8b1292a25e38235bb92b157992d326531d1 trusted/project_2/review.rdoproject.org/rdo-jobs: canonical_name: review.rdoproject.org/rdo-jobs checkout: master commit: ae3f884c6c8c32b779dc61f758c0f6a43ade6877 trusted/project_3/github.com/openstack-k8s-operators/ci-framework: canonical_name: github.com/openstack-k8s-operators/ci-framework checkout: main commit: 2d92baec383a4662b63f80a4932f74a9b754b0cf untrusted/project_0/github.com/openstack-k8s-operators/ci-framework: canonical_name: github.com/openstack-k8s-operators/ci-framework checkout: main commit: 2d92baec383a4662b63f80a4932f74a9b754b0cf untrusted/project_1/review.rdoproject.org/config: canonical_name: review.rdoproject.org/config checkout: master commit: f4086da87f3046c98f2a4b907deaeed353c7ab49 untrusted/project_2/opendev.org/zuul/zuul-jobs: canonical_name: opendev.org/zuul/zuul-jobs checkout: master commit: 82e3e8b1292a25e38235bb92b157992d326531d1 untrusted/project_3/review.rdoproject.org/rdo-jobs: canonical_name: review.rdoproject.org/rdo-jobs checkout: master commit: ae3f884c6c8c32b779dc61f758c0f6a43ade6877 playbooks: - path: untrusted/project_0/github.com/openstack-k8s-operators/ci-framework/ci/playbooks/edpm_baremetal_deployment/run.yml roles: - checkout: main checkout_description: playbook branch link_name: ansible/playbook_0/role_0/ci-framework link_target: untrusted/project_0/github.com/openstack-k8s-operators/ci-framework role_path: ansible/playbook_0/role_0/ci-framework/roles - checkout: master checkout_description: project default branch link_name: ansible/playbook_0/role_1/config link_target: untrusted/project_1/review.rdoproject.org/config role_path: ansible/playbook_0/role_1/config/roles - checkout: master checkout_description: project default branch link_name: ansible/playbook_0/role_2/zuul-jobs link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs role_path: ansible/playbook_0/role_2/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/playbook_0/role_3/rdo-jobs link_target: untrusted/project_3/review.rdoproject.org/rdo-jobs role_path: ansible/playbook_0/role_3/rdo-jobs/roles post_playbooks: - path: untrusted/project_0/github.com/openstack-k8s-operators/ci-framework/ci/playbooks/e2e-collect-logs.yml roles: - checkout: main checkout_description: playbook branch link_name: ansible/post_playbook_0/role_0/ci-framework link_target: untrusted/project_0/github.com/openstack-k8s-operators/ci-framework role_path: ansible/post_playbook_0/role_0/ci-framework/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_0/role_1/config link_target: untrusted/project_1/review.rdoproject.org/config role_path: ansible/post_playbook_0/role_1/config/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_0/role_2/zuul-jobs link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs role_path: ansible/post_playbook_0/role_2/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_0/role_3/rdo-jobs link_target: untrusted/project_3/review.rdoproject.org/rdo-jobs role_path: ansible/post_playbook_0/role_3/rdo-jobs/roles - path: untrusted/project_0/github.com/openstack-k8s-operators/ci-framework/ci/playbooks/collect-logs.yml roles: - checkout: main checkout_description: playbook branch link_name: ansible/post_playbook_1/role_0/ci-framework link_target: untrusted/project_0/github.com/openstack-k8s-operators/ci-framework role_path: ansible/post_playbook_1/role_0/ci-framework/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_1/role_1/config link_target: untrusted/project_1/review.rdoproject.org/config role_path: ansible/post_playbook_1/role_1/config/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_1/role_2/zuul-jobs link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs role_path: ansible/post_playbook_1/role_2/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_1/role_3/rdo-jobs link_target: untrusted/project_3/review.rdoproject.org/rdo-jobs role_path: ansible/post_playbook_1/role_3/rdo-jobs/roles - path: trusted/project_0/review.rdoproject.org/config/playbooks/ci-framework-rdo-base/dlrn/dlrn-report.yaml roles: - checkout: main checkout_description: zuul branch link_name: ansible/post_playbook_2/role_0/ci-framework link_target: trusted/project_3/github.com/openstack-k8s-operators/ci-framework role_path: ansible/post_playbook_2/role_0/ci-framework/roles - checkout: master checkout_description: playbook branch link_name: ansible/post_playbook_2/role_1/config link_target: trusted/project_0/review.rdoproject.org/config role_path: ansible/post_playbook_2/role_1/config/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_2/role_2/zuul-jobs link_target: trusted/project_1/opendev.org/zuul/zuul-jobs role_path: ansible/post_playbook_2/role_2/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_2/role_3/rdo-jobs link_target: trusted/project_2/review.rdoproject.org/rdo-jobs role_path: ansible/post_playbook_2/role_3/rdo-jobs/roles - path: trusted/project_0/review.rdoproject.org/config/playbooks/base-minimal/post-ssh.yaml roles: - checkout: master checkout_description: playbook branch link_name: ansible/post_playbook_3/role_0/config link_target: trusted/project_0/review.rdoproject.org/config role_path: ansible/post_playbook_3/role_0/config/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_3/role_1/zuul-jobs link_target: trusted/project_1/opendev.org/zuul/zuul-jobs role_path: ansible/post_playbook_3/role_1/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_3/role_2/rdo-jobs link_target: trusted/project_2/review.rdoproject.org/rdo-jobs role_path: ansible/post_playbook_3/role_2/rdo-jobs/roles - path: trusted/project_0/review.rdoproject.org/config/playbooks/base-minimal/post-logs.yaml roles: - checkout: master checkout_description: playbook branch link_name: ansible/post_playbook_4/role_0/config link_target: trusted/project_0/review.rdoproject.org/config role_path: ansible/post_playbook_4/role_0/config/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_4/role_1/zuul-jobs link_target: trusted/project_1/opendev.org/zuul/zuul-jobs role_path: ansible/post_playbook_4/role_1/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/post_playbook_4/role_2/rdo-jobs link_target: trusted/project_2/review.rdoproject.org/rdo-jobs role_path: ansible/post_playbook_4/role_2/rdo-jobs/roles pre_playbooks: - path: trusted/project_0/review.rdoproject.org/config/playbooks/base-minimal/pre.yaml roles: - checkout: master checkout_description: playbook branch link_name: ansible/pre_playbook_0/role_0/config link_target: trusted/project_0/review.rdoproject.org/config role_path: ansible/pre_playbook_0/role_0/config/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_0/role_1/zuul-jobs link_target: trusted/project_1/opendev.org/zuul/zuul-jobs role_path: ansible/pre_playbook_0/role_1/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_0/role_2/rdo-jobs link_target: trusted/project_2/review.rdoproject.org/rdo-jobs role_path: ansible/pre_playbook_0/role_2/rdo-jobs/roles - path: trusted/project_0/review.rdoproject.org/config/playbooks/ci-framework-rdo-base/pre.yaml roles: - checkout: main checkout_description: zuul branch link_name: ansible/pre_playbook_1/role_0/ci-framework link_target: trusted/project_3/github.com/openstack-k8s-operators/ci-framework role_path: ansible/pre_playbook_1/role_0/ci-framework/roles - checkout: master checkout_description: playbook branch link_name: ansible/pre_playbook_1/role_1/config link_target: trusted/project_0/review.rdoproject.org/config role_path: ansible/pre_playbook_1/role_1/config/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_1/role_2/zuul-jobs link_target: trusted/project_1/opendev.org/zuul/zuul-jobs role_path: ansible/pre_playbook_1/role_2/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_1/role_3/rdo-jobs link_target: trusted/project_2/review.rdoproject.org/rdo-jobs role_path: ansible/pre_playbook_1/role_3/rdo-jobs/roles - path: trusted/project_0/review.rdoproject.org/config/playbooks/crc/podman.yaml roles: - checkout: main checkout_description: zuul branch link_name: ansible/pre_playbook_2/role_0/ci-framework link_target: trusted/project_3/github.com/openstack-k8s-operators/ci-framework role_path: ansible/pre_playbook_2/role_0/ci-framework/roles - checkout: master checkout_description: playbook branch link_name: ansible/pre_playbook_2/role_1/config link_target: trusted/project_0/review.rdoproject.org/config role_path: ansible/pre_playbook_2/role_1/config/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_2/role_2/zuul-jobs link_target: trusted/project_1/opendev.org/zuul/zuul-jobs role_path: ansible/pre_playbook_2/role_2/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_2/role_3/rdo-jobs link_target: trusted/project_2/review.rdoproject.org/rdo-jobs role_path: ansible/pre_playbook_2/role_3/rdo-jobs/roles - path: trusted/project_0/review.rdoproject.org/config/playbooks/crc/simple-start.yaml roles: - checkout: main checkout_description: zuul branch link_name: ansible/pre_playbook_3/role_0/ci-framework link_target: trusted/project_3/github.com/openstack-k8s-operators/ci-framework role_path: ansible/pre_playbook_3/role_0/ci-framework/roles - checkout: master checkout_description: playbook branch link_name: ansible/pre_playbook_3/role_1/config link_target: trusted/project_0/review.rdoproject.org/config role_path: ansible/pre_playbook_3/role_1/config/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_3/role_2/zuul-jobs link_target: trusted/project_1/opendev.org/zuul/zuul-jobs role_path: ansible/pre_playbook_3/role_2/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_3/role_3/rdo-jobs link_target: trusted/project_2/review.rdoproject.org/rdo-jobs role_path: ansible/pre_playbook_3/role_3/rdo-jobs/roles - path: untrusted/project_0/github.com/openstack-k8s-operators/ci-framework/ci/playbooks/e2e-prepare.yml roles: - checkout: main checkout_description: playbook branch link_name: ansible/pre_playbook_4/role_0/ci-framework link_target: untrusted/project_0/github.com/openstack-k8s-operators/ci-framework role_path: ansible/pre_playbook_4/role_0/ci-framework/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_4/role_1/config link_target: untrusted/project_1/review.rdoproject.org/config role_path: ansible/pre_playbook_4/role_1/config/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_4/role_2/zuul-jobs link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs role_path: ansible/pre_playbook_4/role_2/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_4/role_3/rdo-jobs link_target: untrusted/project_3/review.rdoproject.org/rdo-jobs role_path: ansible/pre_playbook_4/role_3/rdo-jobs/roles - path: untrusted/project_0/github.com/openstack-k8s-operators/ci-framework/ci/playbooks/dump_zuul_data.yml roles: - checkout: main checkout_description: playbook branch link_name: ansible/pre_playbook_5/role_0/ci-framework link_target: untrusted/project_0/github.com/openstack-k8s-operators/ci-framework role_path: ansible/pre_playbook_5/role_0/ci-framework/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_5/role_1/config link_target: untrusted/project_1/review.rdoproject.org/config role_path: ansible/pre_playbook_5/role_1/config/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_5/role_2/zuul-jobs link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs role_path: ansible/pre_playbook_5/role_2/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/pre_playbook_5/role_3/rdo-jobs link_target: untrusted/project_3/review.rdoproject.org/rdo-jobs role_path: ansible/pre_playbook_5/role_3/rdo-jobs/roles post_review: false post_timeout: 5400 pre_timeout: null project: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/infra-operator name: openstack-k8s-operators/infra-operator short_name: infra-operator src_dir: src/github.com/openstack-k8s-operators/infra-operator projects: github.com/openstack-k8s-operators/ci-framework: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/ci-framework checkout: main checkout_description: zuul branch commit: 2d92baec383a4662b63f80a4932f74a9b754b0cf name: openstack-k8s-operators/ci-framework required: true short_name: ci-framework src_dir: src/github.com/openstack-k8s-operators/ci-framework github.com/openstack-k8s-operators/edpm-ansible: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/edpm-ansible checkout: main checkout_description: zuul branch commit: d5eae620a08b412f076b112b4c3d8e0d69cbb047 name: openstack-k8s-operators/edpm-ansible required: true short_name: edpm-ansible src_dir: src/github.com/openstack-k8s-operators/edpm-ansible github.com/openstack-k8s-operators/infra-operator: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/infra-operator checkout: main checkout_description: zuul branch commit: 400b0a26fa4cc56c87e2f38a55bd7e772edbb4c8 name: openstack-k8s-operators/infra-operator required: true short_name: infra-operator src_dir: src/github.com/openstack-k8s-operators/infra-operator github.com/openstack-k8s-operators/install_yamls: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/install_yamls checkout: main checkout_description: zuul branch commit: 28010890899b365d9b163f6cd2faeb71bf37d54f name: openstack-k8s-operators/install_yamls required: true short_name: install_yamls src_dir: src/github.com/openstack-k8s-operators/install_yamls github.com/openstack-k8s-operators/openstack-baremetal-operator: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/openstack-baremetal-operator checkout: main checkout_description: zuul branch commit: 96ee712650c0df1c6bd02de78be0a12085a9827c name: openstack-k8s-operators/openstack-baremetal-operator required: true short_name: openstack-baremetal-operator src_dir: src/github.com/openstack-k8s-operators/openstack-baremetal-operator github.com/openstack-k8s-operators/openstack-must-gather: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/openstack-must-gather checkout: main checkout_description: zuul branch commit: c368cbf84357cebd70fe8ec9c2c849e2aa7905e4 name: openstack-k8s-operators/openstack-must-gather required: true short_name: openstack-must-gather src_dir: src/github.com/openstack-k8s-operators/openstack-must-gather github.com/openstack-k8s-operators/openstack-operator: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/openstack-operator checkout: main checkout_description: zuul branch commit: 721c3f7c64850716e5de5f4e76e1ef4c36c28652 name: openstack-k8s-operators/openstack-operator required: true short_name: openstack-operator src_dir: src/github.com/openstack-k8s-operators/openstack-operator github.com/openstack-k8s-operators/repo-setup: canonical_hostname: github.com canonical_name: github.com/openstack-k8s-operators/repo-setup checkout: main checkout_description: zuul branch commit: 85321f7e0af502d7f06f845886058daf09da34f6 name: openstack-k8s-operators/repo-setup required: true short_name: repo-setup src_dir: src/github.com/openstack-k8s-operators/repo-setup opendev.org/zuul/zuul-jobs: canonical_hostname: opendev.org canonical_name: opendev.org/zuul/zuul-jobs checkout: master checkout_description: project default branch commit: 82e3e8b1292a25e38235bb92b157992d326531d1 name: zuul/zuul-jobs required: true short_name: zuul-jobs src_dir: src/opendev.org/zuul/zuul-jobs review.rdoproject.org/config: canonical_hostname: review.rdoproject.org canonical_name: review.rdoproject.org/config checkout: master checkout_description: project default branch commit: f4086da87f3046c98f2a4b907deaeed353c7ab49 name: config required: true short_name: config src_dir: src/review.rdoproject.org/config ref: refs/pull/596/head resources: {} tenant: rdoproject.org timeout: 10800 topic: null voting: true zuul_log_collection: true