From 0c11976839913d076e0366dacc1f869051dab28b Mon Sep 17 00:00:00 2001 From: Roberto Alfieri Date: Mon, 24 Aug 2026 10:59:27 +0200 Subject: [PATCH] [edpm_deploy_baremetal] Wait for ProvisionServer localImageUrl The role queried OpenStackProvisionServer status as soon as the deployment was Available, but the baremetal operator sets status.localImageUrl asynchronously. Retry k8s_info until the URL is present and use dict.get() when building checksum fallback facts. Seen in cifmw-crc-podified-edpm-baremetal-bootc while validating ci-framework#4131 (unrelated failure). Co-authored-by: Cursor Signed-off-by: Roberto Alfieri --- roles/edpm_deploy_baremetal/tasks/main.yml | 34 ++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/roles/edpm_deploy_baremetal/tasks/main.yml b/roles/edpm_deploy_baremetal/tasks/main.yml index ea351e39f..c0cd5d58f 100644 --- a/roles/edpm_deploy_baremetal/tasks/main.yml +++ b/roles/edpm_deploy_baremetal/tasks/main.yml @@ -266,12 +266,42 @@ name: openstack-edpm-ipam-provisionserver namespace: "{{ cifmw_install_yamls_defaults['NAMESPACE'] }}" register: cifmw_edpm_deploy_baremetal_provisionserver - failed_when: cifmw_edpm_deploy_baremetal_provisionserver.resources | length == 0 + until: >- + cifmw_edpm_deploy_baremetal_provisionserver.resources | length > 0 + and ( + cifmw_edpm_deploy_baremetal_provisionserver.resources[0].status.get('localImageUrl', '') + | trim | length + ) > 0 + retries: "{{ cifmw_edpm_deploy_baremetal_wait_provisionserver_retries }}" + delay: 10 changed_when: false + - name: Set OpenStack Provision Server local image URL facts + ansible.builtin.set_fact: + cifmw_edpm_deploy_baremetal_provisionserver_local_image_url: >- + {{ + cifmw_edpm_deploy_baremetal_provisionserver.resources[0].status.get('localImageUrl', '') + }} + cifmw_edpm_deploy_baremetal_provisionserver_local_image_checksum_url_effective: >- + {{ + ( + cifmw_edpm_deploy_baremetal_provisionserver.resources[0].status.get('localImageChecksumUrl', '') + | trim + ) + if ( + cifmw_edpm_deploy_baremetal_provisionserver.resources[0].status.get('localImageChecksumUrl', '') + | trim | length + ) > 0 + else + ( + cifmw_edpm_deploy_baremetal_provisionserver.resources[0].status.get('localImageUrl', '') + | trim + ) ~ '.sha256' + }} + - name: Verify OpenStack Provision Server image is reachable ansible.builtin.uri: - url: "{{ cifmw_edpm_deploy_baremetal_provisionserver.resources[0].status.localImageUrl }}" + url: "{{ cifmw_edpm_deploy_baremetal_provisionserver_local_image_url }}" method: HEAD status_code: 200 register: cifmw_edpm_deploy_baremetal_provisionserver_image_head