all:
    children:
        computes:
            hosts:
                compute-0: null
        ocps:
            hosts:
                crc: null
        zuul_unreachable:
            hosts: {}
    hosts:
        compute-0:
            ansible_connection: ssh
            ansible_host: 38.102.83.166
            ansible_port: 22
            ansible_python_interpreter: auto
            ansible_user: zuul
            ca_cert_approver: true
            cifmw_artifacts_crc_sshkey: ~/.ssh/id_cifw
            cifmw_dlrn_report_result: false
            cifmw_extras:
            - '@scenarios/centos-9/multinode-ci.yml'
            - '@scenarios/centos-9/horizon.yml'
            cifmw_openshift_api: api.crc.testing:6443
            cifmw_openshift_kubeconfig: '{{ ansible_user_dir }}/.crc/machines/crc/kubeconfig'
            cifmw_openshift_password: '12**********89'
            cifmw_openshift_skip_tls_verify: true
            cifmw_openshift_user: kubeadmin
            cifmw_operator_build_output:
                operators:
                    infra-operator:
                        git_commit_hash: e4e3813a70bd8e2b4ca8279b5773a3251d408970
                        git_src_dir: /home/zuul/src/github.com/openstack-k8s-operators/infra-operator
                        image: 38.102.83.107:5001/openstack-k8s-operators/infra-operator:e4e3813a70bd8e2b4ca8279b5773a3251d408970
                        image_bundle: 38.102.83.107:5001/openstack-k8s-operators/infra-operator-bundle:e4e3813a70bd8e2b4ca8279b5773a3251d408970
                        image_catalog: 38.102.83.107:5001/openstack-k8s-operators/infra-operator-index:e4e3813a70bd8e2b4ca8279b5773a3251d408970
                    openstack-operator:
                        git_commit_hash: cfb5b19a1d88e996ce505b07130d7315dc60bf22
                        git_src_dir: /home/zuul/src/github.com/openstack-k8s-operators/openstack-operator
                        image: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator:cfb5b19a1d88e996ce505b07130d7315dc60bf22
                        image_bundle: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator-bundle:cfb5b19a1d88e996ce505b07130d7315dc60bf22
                        image_catalog: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator-index:cfb5b19a1d88e996ce505b07130d7315dc60bf22
            cifmw_use_libvirt: false
            cifmw_zuul_target_host: controller
            content_provider_registry_available: true
            content_provider_registry_ip: 38.102.83.107
            content_provider_registry_ip_port: 38.102.83.107:5001
            crc_ci_bootstrap_cloud_name: '{{ nodepool.cloud | replace(''-nodepool-tripleo'','''')
                }}'
            crc_ci_bootstrap_networking:
                instances:
                    compute-0:
                        networks:
                            default:
                                ip: 192.168.122.100
                            internal-api:
                                config_nm: false
                                ip: 172.17.0.100
                            storage:
                                config_nm: false
                                ip: 172.18.0.100
                            tenant:
                                config_nm: false
                                ip: 172.19.0.100
                    controller:
                        networks:
                            default:
                                ip: 192.168.122.11
                    crc:
                        networks:
                            default:
                                ip: 192.168.122.10
                            internal-api:
                                ip: 172.17.0.5
                            storage:
                                ip: 172.18.0.5
                            tenant:
                                ip: 172.19.0.5
                networks:
                    default:
                        mtu: '{{ (''ibm'' in nodepool.cloud) | ternary(''1440'', ''1500'')
                            }}'
                        range: 192.168.122.0/24
                        router_net: ''
                        transparent: true
                    internal-api:
                        range: 172.17.0.0/24
                        vlan: 20
                    storage:
                        range: 172.18.0.0/24
                        vlan: 21
                    tenant:
                        range: 172.19.0.0/24
                        vlan: 22
            enable_ramdisk: true
            max_retries: 60
            nodepool:
                az: nova
                cloud: vexxhost-nodepool-tripleo
                external_id: 14280bfa-68f9-43ad-a5fb-a0f94636c86f
                host_id: 4d5af5c3d4216850e4ad6b0187cc3c64a31e016b0c19899ec067977a
                interface_ip: 38.102.83.166
                label: cloud-centos-9-stream-tripleo
                private_ipv4: 38.102.83.166
                private_ipv6: null
                provider: vexxhost-nodepool-tripleo
                public_ipv4: 38.102.83.166
                public_ipv6: ''
                region: RegionOne
                slot: null
            push_registry: quay.rdoproject.org
            quay_login_secret_name: quay_nextgen_zuulgithubci
            registry_login_enabled: true
            retry_delay: 15
            zuul_log_collection: true
        controller:
            ansible_connection: ssh
            ansible_host: 38.102.83.174
            ansible_port: 22
            ansible_python_interpreter: auto
            ansible_user: zuul
            ca_cert_approver: true
            cifmw_artifacts_crc_sshkey: ~/.ssh/id_cifw
            cifmw_dlrn_report_result: false
            cifmw_extras:
            - '@scenarios/centos-9/multinode-ci.yml'
            - '@scenarios/centos-9/horizon.yml'
            cifmw_openshift_api: api.crc.testing:6443
            cifmw_openshift_kubeconfig: '{{ ansible_user_dir }}/.crc/machines/crc/kubeconfig'
            cifmw_openshift_password: '12**********89'
            cifmw_openshift_skip_tls_verify: true
            cifmw_openshift_user: kubeadmin
            cifmw_operator_build_output:
                operators:
                    infra-operator:
                        git_commit_hash: e4e3813a70bd8e2b4ca8279b5773a3251d408970
                        git_src_dir: /home/zuul/src/github.com/openstack-k8s-operators/infra-operator
                        image: 38.102.83.107:5001/openstack-k8s-operators/infra-operator:e4e3813a70bd8e2b4ca8279b5773a3251d408970
                        image_bundle: 38.102.83.107:5001/openstack-k8s-operators/infra-operator-bundle:e4e3813a70bd8e2b4ca8279b5773a3251d408970
                        image_catalog: 38.102.83.107:5001/openstack-k8s-operators/infra-operator-index:e4e3813a70bd8e2b4ca8279b5773a3251d408970
                    openstack-operator:
                        git_commit_hash: cfb5b19a1d88e996ce505b07130d7315dc60bf22
                        git_src_dir: /home/zuul/src/github.com/openstack-k8s-operators/openstack-operator
                        image: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator:cfb5b19a1d88e996ce505b07130d7315dc60bf22
                        image_bundle: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator-bundle:cfb5b19a1d88e996ce505b07130d7315dc60bf22
                        image_catalog: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator-index:cfb5b19a1d88e996ce505b07130d7315dc60bf22
            cifmw_use_libvirt: false
            cifmw_zuul_target_host: controller
            content_provider_registry_available: true
            content_provider_registry_ip: 38.102.83.107
            content_provider_registry_ip_port: 38.102.83.107:5001
            crc_ci_bootstrap_cloud_name: '{{ nodepool.cloud | replace(''-nodepool-tripleo'','''')
                }}'
            crc_ci_bootstrap_networking:
                instances:
                    compute-0:
                        networks:
                            default:
                                ip: 192.168.122.100
                            internal-api:
                                config_nm: false
                                ip: 172.17.0.100
                            storage:
                                config_nm: false
                                ip: 172.18.0.100
                            tenant:
                                config_nm: false
                                ip: 172.19.0.100
                    controller:
                        networks:
                            default:
                                ip: 192.168.122.11
                    crc:
                        networks:
                            default:
                                ip: 192.168.122.10
                            internal-api:
                                ip: 172.17.0.5
                            storage:
                                ip: 172.18.0.5
                            tenant:
                                ip: 172.19.0.5
                networks:
                    default:
                        mtu: '{{ (''ibm'' in nodepool.cloud) | ternary(''1440'', ''1500'')
                            }}'
                        range: 192.168.122.0/24
                        router_net: ''
                        transparent: true
                    internal-api:
                        range: 172.17.0.0/24
                        vlan: 20
                    storage:
                        range: 172.18.0.0/24
                        vlan: 21
                    tenant:
                        range: 172.19.0.0/24
                        vlan: 22
            enable_ramdisk: true
            max_retries: 60
            nodepool:
                az: nova
                cloud: vexxhost-nodepool-tripleo
                external_id: 3e60ff6c-b492-4da1-932a-8b29c09173d3
                host_id: 511625867b15899f344b49f50e790882b35aedda883941cf1472ae2b
                interface_ip: 38.102.83.174
                label: cloud-centos-9-stream-tripleo-medium
                private_ipv4: 38.102.83.174
                private_ipv6: null
                provider: vexxhost-nodepool-tripleo
                public_ipv4: 38.102.83.174
                public_ipv6: ''
                region: RegionOne
                slot: null
            push_registry: quay.rdoproject.org
            quay_login_secret_name: quay_nextgen_zuulgithubci
            registry_login_enabled: true
            retry_delay: 15
            zuul_log_collection: true
        crc:
            ansible_connection: ssh
            ansible_host: 38.102.83.138
            ansible_port: 22
            ansible_python_interpreter: auto
            ansible_user: core
            ca_cert_approver: true
            cifmw_artifacts_crc_sshkey: ~/.ssh/id_cifw
            cifmw_dlrn_report_result: false
            cifmw_extras:
            - '@scenarios/centos-9/multinode-ci.yml'
            - '@scenarios/centos-9/horizon.yml'
            cifmw_openshift_api: api.crc.testing:6443
            cifmw_openshift_kubeconfig: '{{ ansible_user_dir }}/.crc/machines/crc/kubeconfig'
            cifmw_openshift_password: '12**********89'
            cifmw_openshift_skip_tls_verify: true
            cifmw_openshift_user: kubeadmin
            cifmw_operator_build_output:
                operators:
                    infra-operator:
                        git_commit_hash: e4e3813a70bd8e2b4ca8279b5773a3251d408970
                        git_src_dir: /home/zuul/src/github.com/openstack-k8s-operators/infra-operator
                        image: 38.102.83.107:5001/openstack-k8s-operators/infra-operator:e4e3813a70bd8e2b4ca8279b5773a3251d408970
                        image_bundle: 38.102.83.107:5001/openstack-k8s-operators/infra-operator-bundle:e4e3813a70bd8e2b4ca8279b5773a3251d408970
                        image_catalog: 38.102.83.107:5001/openstack-k8s-operators/infra-operator-index:e4e3813a70bd8e2b4ca8279b5773a3251d408970
                    openstack-operator:
                        git_commit_hash: cfb5b19a1d88e996ce505b07130d7315dc60bf22
                        git_src_dir: /home/zuul/src/github.com/openstack-k8s-operators/openstack-operator
                        image: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator:cfb5b19a1d88e996ce505b07130d7315dc60bf22
                        image_bundle: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator-bundle:cfb5b19a1d88e996ce505b07130d7315dc60bf22
                        image_catalog: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator-index:cfb5b19a1d88e996ce505b07130d7315dc60bf22
            cifmw_use_libvirt: false
            cifmw_zuul_target_host: controller
            content_provider_registry_available: true
            content_provider_registry_ip: 38.102.83.107
            content_provider_registry_ip_port: 38.102.83.107:5001
            crc_ci_bootstrap_cloud_name: '{{ nodepool.cloud | replace(''-nodepool-tripleo'','''')
                }}'
            crc_ci_bootstrap_networking:
                instances:
                    compute-0:
                        networks:
                            default:
                                ip: 192.168.122.100
                            internal-api:
                                config_nm: false
                                ip: 172.17.0.100
                            storage:
                                config_nm: false
                                ip: 172.18.0.100
                            tenant:
                                config_nm: false
                                ip: 172.19.0.100
                    controller:
                        networks:
                            default:
                                ip: 192.168.122.11
                    crc:
                        networks:
                            default:
                                ip: 192.168.122.10
                            internal-api:
                                ip: 172.17.0.5
                            storage:
                                ip: 172.18.0.5
                            tenant:
                                ip: 172.19.0.5
                networks:
                    default:
                        mtu: '{{ (''ibm'' in nodepool.cloud) | ternary(''1440'', ''1500'')
                            }}'
                        range: 192.168.122.0/24
                        router_net: ''
                        transparent: true
                    internal-api:
                        range: 172.17.0.0/24
                        vlan: 20
                    storage:
                        range: 172.18.0.0/24
                        vlan: 21
                    tenant:
                        range: 172.19.0.0/24
                        vlan: 22
            enable_ramdisk: true
            max_retries: 60
            nodepool:
                az: nova
                cloud: vexxhost-nodepool-tripleo
                external_id: 3be5867b-5df6-4c65-8d4b-c54c471927ff
                host_id: 4d5af5c3d4216850e4ad6b0187cc3c64a31e016b0c19899ec067977a
                interface_ip: 38.102.83.138
                label: crc-cloud-ocp-4-18-1-3xl
                private_ipv4: 38.102.83.138
                private_ipv6: null
                provider: vexxhost-nodepool-tripleo
                public_ipv4: 38.102.83.138
                public_ipv6: ''
                region: RegionOne
                slot: null
            push_registry: quay.rdoproject.org
            quay_login_secret_name: quay_nextgen_zuulgithubci
            registry_login_enabled: true
            retry_delay: 15
            zuul_log_collection: true
        localhost:
            ansible_connection: local
    vars:
        ca_cert_approver: true
        cifmw_artifacts_crc_sshkey: ~/.ssh/id_cifw
        cifmw_dlrn_report_result: false
        cifmw_extras:
        - '@scenarios/centos-9/multinode-ci.yml'
        - '@scenarios/centos-9/horizon.yml'
        cifmw_openshift_api: api.crc.testing:6443
        cifmw_openshift_kubeconfig: '{{ ansible_user_dir }}/.crc/machines/crc/kubeconfig'
        cifmw_openshift_password: '12**********89'
        cifmw_openshift_skip_tls_verify: true
        cifmw_openshift_user: kubeadmin
        cifmw_operator_build_output:
            operators:
                infra-operator:
                    git_commit_hash: e4e3813a70bd8e2b4ca8279b5773a3251d408970
                    git_src_dir: /home/zuul/src/github.com/openstack-k8s-operators/infra-operator
                    image: 38.102.83.107:5001/openstack-k8s-operators/infra-operator:e4e3813a70bd8e2b4ca8279b5773a3251d408970
                    image_bundle: 38.102.83.107:5001/openstack-k8s-operators/infra-operator-bundle:e4e3813a70bd8e2b4ca8279b5773a3251d408970
                    image_catalog: 38.102.83.107:5001/openstack-k8s-operators/infra-operator-index:e4e3813a70bd8e2b4ca8279b5773a3251d408970
                openstack-operator:
                    git_commit_hash: cfb5b19a1d88e996ce505b07130d7315dc60bf22
                    git_src_dir: /home/zuul/src/github.com/openstack-k8s-operators/openstack-operator
                    image: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator:cfb5b19a1d88e996ce505b07130d7315dc60bf22
                    image_bundle: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator-bundle:cfb5b19a1d88e996ce505b07130d7315dc60bf22
                    image_catalog: 38.102.83.107:5001/openstack-k8s-operators/openstack-operator-index:cfb5b19a1d88e996ce505b07130d7315dc60bf22
        cifmw_use_libvirt: false
        cifmw_zuul_target_host: controller
        content_provider_registry_available: true
        content_provider_registry_ip: 38.102.83.107
        content_provider_registry_ip_port: 38.102.83.107:5001
        crc_ci_bootstrap_cloud_name: '{{ nodepool.cloud | replace(''-nodepool-tripleo'','''')
            }}'
        crc_ci_bootstrap_networking:
            instances:
                compute-0:
                    networks:
                        default:
                            ip: 192.168.122.100
                        internal-api:
                            config_nm: false
                            ip: 172.17.0.100
                        storage:
                            config_nm: false
                            ip: 172.18.0.100
                        tenant:
                            config_nm: false
                            ip: 172.19.0.100
                controller:
                    networks:
                        default:
                            ip: 192.168.122.11
                crc:
                    networks:
                        default:
                            ip: 192.168.122.10
                        internal-api:
                            ip: 172.17.0.5
                        storage:
                            ip: 172.18.0.5
                        tenant:
                            ip: 172.19.0.5
            networks:
                default:
                    mtu: '{{ (''ibm'' in nodepool.cloud) | ternary(''1440'', ''1500'')
                        }}'
                    range: 192.168.122.0/24
                    router_net: ''
                    transparent: true
                internal-api:
                    range: 172.17.0.0/24
                    vlan: 20
                storage:
                    range: 172.18.0.0/24
                    vlan: 21
                tenant:
                    range: 172.19.0.0/24
                    vlan: 22
        enable_ramdisk: true
        max_retries: 60
        push_registry: quay.rdoproject.org
        quay_login_secret_name: quay_nextgen_zuulgithubci
        registry_login_enabled: true
        retry_delay: 15
        zuul:
            _inheritance_path:
            - '<Job base-minimal branches: None source: config/zuul.d/jobs.yaml@master#24>'
            - '<Job base-crc-cloud branches: None source: config/zuul.d/_jobs-crc.yaml@master#239>'
            - '<Job cifmw-podified-multinode-edpm-base-crc branches: None source:
                openstack-k8s-operators/ci-framework/zuul.d/base.yaml@main#125>'
            - '<Job podified-multinode-edpm-deployment-crc branches: None source:
                openstack-k8s-operators/ci-framework/zuul.d/edpm_multinode.yaml@main#317>'
            - '<Job podified-multinode-edpm-deployment-crc branches: None source:
                openstack-k8s-operators/ci-framework/zuul.d/project-templates.yaml@main#3>'
            - '<Job podified-multinode-edpm-deployment-crc branches: None source:
                openstack-k8s-operators/infra-operator/zuul.d/projects.yaml@main#2>'
            ansible_version: '8'
            attempts: 1
            branch: main
            build: 859776a774cb412a9db7c3ff47a24aaf
            build_refs:
            -   branch: main
                change: '551'
                change_message: "Drop rabbitmq-cluster-operator dependency and manage
                    RabbitMQ directly\n\nRemove the dependency on the external rabbitmq-cluster-operator
                    and have\r\nthe infra-operator manage RabbitMQ StatefulSets, Services,
                    ConfigMaps,\r\nand Secrets directly.\r\n\r\nCore controller changes:\r\n-
                    Direct StatefulSet management with proper volume mounts, config\r\n
                    \ generation, and TLS support (both client and inter-node)\r\n-
                    Service creation for client (AMQP/AMQPS) and headless node discovery\r\n-
                    ConfigMap generation for server config, plugins, and config-data\r\n-
                    Secret management for default-user credentials and Erlang cookie\r\n-
                    PodDisruptionBudget for multi-replica deployments\r\n- Fix stale
                    ownerReferences in volumeClaimTemplates from adopted\r\n  StatefulSets
                    (orphan-delete + recreate with annotation-based storage\r\n  class
                    preservation)\r\n- Label pods with skipPreStopChecks before StatefulSet
                    deletion so the \r\n  Downward API volume is populated when cascade
                    deletion triggers the \r\n  PreStop hook, preventing 7-day termination
                    hangs\r\n\r\nVersion upgrade workflow (3.x to 4.x):\r\n- State
                    machine with phases: None -> DeletingResources -> WaitingForCluster
                    -> None\r\n- Detects targetVersion changes and triggers storage
                    wipe when crossing\r\n  major versions (required by RabbitMQ for
                    3.x -> 4.x upgrades)\r\n- Sets wipeReason=VersionUpgrade in status
                    to track upgrade progress\r\n- Deletes StatefulSet to stop all
                    pods atomically, then recreates it\r\n  with a wipe-data init
                    container that clears /var/lib/rabbitmq on the \r\n  existing
                    PVs (marker files prevent re-wipes across pod restarts)\r\n- Tracks
                    currentVersion in status after successful upgrade\r\n\r\nQueue
                    type migration (Mirrored to Quorum):\r\n- Supports migrating from
                    classic mirrored (ha-all policy) queues to\r\n  quorum queues
                    via spec.queueType change\r\n- Triggers storage wipe with wipeReason=QueueTypeMigration\r\n-
                    Manages ha-all policy lifecycle: applies for Mirrored (replicas
                    > 1), \r\n  removes when transitioning away from Mirrored\r\n-
                    Defaulting webhook forces queueType from Mirrored to Quorum when\r\n
                    \ targetVersion is 4.x+, since mirrored queues are not supported
                    in\r\n  RabbitMQ 4.x. This enables the openstack-operator to upgrade
                    from\r\n  3.x (Mirrored) to 4.x and have the migration handled
                    automatically\r\n- Validation webhook rejects Mirrored+4.x as
                    a safety net after\r\n  defaulting\r\n\r\nAMQP proxy sidecar:\r\n-
                    Python-based TCP proxy injected as a sidecar container when\r\n
                    \ status.proxyRequired is true (after version upgrade or queue
                    migration)\r\n- Rewrites AMQP queue.declare frames to force durable=True
                    and \r\n  x-queue-type=quorum, and exchange.declare frames to
                    force durable=True\r\n- Listens on port 5672 (plain) or 5671 (TLS)
                    depending on TLS config\r\n- Forwards connections to RabbitMQ
                    backend on port 5673\r\n- Removed via clients-reconfigured annotation
                    once consumers reconnect\r\n- Includes liveness/readiness probes
                    and TLS certificate mounting\r\n\r\nMigration from rabbitmq-cluster-operator:\r\n-
                    Detects migration by checking for an existing RabbitmqCluster
                    CR with\r\n  the same name; if none is found (or the CRD is not
                    installed), the \r\n  controller skips all migration logic and
                    sets OldCRCleaned=True,\r\n  allowing both operators to run side-by-side
                    managing their own \r\n  independent resources without conflict\r\n-
                    Adoption logic reparents existing StatefulSets, Services, and
                    Secrets\r\n  from old RabbitmqCluster owner to new RabbitMq CR\r\n-
                    Strips old ownerReferences from PVCs before deleting old CR to
                    prevent\r\n  cascade garbage collection\r\n- Cleans up old RabbitmqCluster
                    CR after successful adoption\r\n- Fixes stale volumeClaimTemplate
                    ownerReferences that cause new PVCs\r\n  to be garbage-collected
                    when scaling up adopted StatefulSets\r\n\r\nTesting:\r\n- Functional
                    tests (envtest): RabbitMQ controller reconciliation,\r\n  RabbitMQPolicy
                    lifecycle, TransportURL (plain, TLS, custom user/vhost,\r\n  credential
                    rotation), VCT fix, combined version+queue migration,\r\n  proxy
                    sidecar, operator coexistence (OldCRCleaned set when no old CR\r\n
                    \ exists, unrelated RabbitmqCluster CRs not touched)\r\n- Kuttl
                    integration tests: basic cluster deployment, cluster resource\r\n
                    \ ownership, credential rotation with cleanup-blocked finalizer,\r\n
                    \ deletion with dependent resources, plugin enable/disable, policy\r\n
                    \ enforcement via rabbitmqctl, queue migration (Mirrored to Quorum)\r\n
                    \ with AMQP proxy rewrite verification (classic non-durable ->
                    quorum\r\n  durable), resource management (vhost/user/policy),
                    scale-up with PDB,\r\n  TLS configuration, TLS TransportURL, custom
                    TransportURL, migration\r\n  from old operator, version upgrades
                    (3.9->4.2 with/without TLS,\r\n  Mirrored upgrade), operator coexistence
                    (both operators managing\r\n  independent clusters without interference)\r\n\r\nCo-Authored-By:
                    Claude Opus 4.6 <noreply@anthropic.com>\r\n\r\n\r\nDepends-on:
                    https://github.com/openstack-k8s-operators/openstack-operator/pull/1857"
                change_url: https://github.com/openstack-k8s-operators/infra-operator/pull/551
                commit_id: e4e3813a70bd8e2b4ca8279b5773a3251d408970
                patchset: e4e3813a70bd8e2b4ca8279b5773a3251d408970
                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
            buildset: bac0f036d5d24fc1b7843a95a7ca23ed
            buildset_refs:
            -   branch: main
                change: '551'
                change_message: "Drop rabbitmq-cluster-operator dependency and manage
                    RabbitMQ directly\n\nRemove the dependency on the external rabbitmq-cluster-operator
                    and have\r\nthe infra-operator manage RabbitMQ StatefulSets, Services,
                    ConfigMaps,\r\nand Secrets directly.\r\n\r\nCore controller changes:\r\n-
                    Direct StatefulSet management with proper volume mounts, config\r\n
                    \ generation, and TLS support (both client and inter-node)\r\n-
                    Service creation for client (AMQP/AMQPS) and headless node discovery\r\n-
                    ConfigMap generation for server config, plugins, and config-data\r\n-
                    Secret management for default-user credentials and Erlang cookie\r\n-
                    PodDisruptionBudget for multi-replica deployments\r\n- Fix stale
                    ownerReferences in volumeClaimTemplates from adopted\r\n  StatefulSets
                    (orphan-delete + recreate with annotation-based storage\r\n  class
                    preservation)\r\n- Label pods with skipPreStopChecks before StatefulSet
                    deletion so the \r\n  Downward API volume is populated when cascade
                    deletion triggers the \r\n  PreStop hook, preventing 7-day termination
                    hangs\r\n\r\nVersion upgrade workflow (3.x to 4.x):\r\n- State
                    machine with phases: None -> DeletingResources -> WaitingForCluster
                    -> None\r\n- Detects targetVersion changes and triggers storage
                    wipe when crossing\r\n  major versions (required by RabbitMQ for
                    3.x -> 4.x upgrades)\r\n- Sets wipeReason=VersionUpgrade in status
                    to track upgrade progress\r\n- Deletes StatefulSet to stop all
                    pods atomically, then recreates it\r\n  with a wipe-data init
                    container that clears /var/lib/rabbitmq on the \r\n  existing
                    PVs (marker files prevent re-wipes across pod restarts)\r\n- Tracks
                    currentVersion in status after successful upgrade\r\n\r\nQueue
                    type migration (Mirrored to Quorum):\r\n- Supports migrating from
                    classic mirrored (ha-all policy) queues to\r\n  quorum queues
                    via spec.queueType change\r\n- Triggers storage wipe with wipeReason=QueueTypeMigration\r\n-
                    Manages ha-all policy lifecycle: applies for Mirrored (replicas
                    > 1), \r\n  removes when transitioning away from Mirrored\r\n-
                    Defaulting webhook forces queueType from Mirrored to Quorum when\r\n
                    \ targetVersion is 4.x+, since mirrored queues are not supported
                    in\r\n  RabbitMQ 4.x. This enables the openstack-operator to upgrade
                    from\r\n  3.x (Mirrored) to 4.x and have the migration handled
                    automatically\r\n- Validation webhook rejects Mirrored+4.x as
                    a safety net after\r\n  defaulting\r\n\r\nAMQP proxy sidecar:\r\n-
                    Python-based TCP proxy injected as a sidecar container when\r\n
                    \ status.proxyRequired is true (after version upgrade or queue
                    migration)\r\n- Rewrites AMQP queue.declare frames to force durable=True
                    and \r\n  x-queue-type=quorum, and exchange.declare frames to
                    force durable=True\r\n- Listens on port 5672 (plain) or 5671 (TLS)
                    depending on TLS config\r\n- Forwards connections to RabbitMQ
                    backend on port 5673\r\n- Removed via clients-reconfigured annotation
                    once consumers reconnect\r\n- Includes liveness/readiness probes
                    and TLS certificate mounting\r\n\r\nMigration from rabbitmq-cluster-operator:\r\n-
                    Detects migration by checking for an existing RabbitmqCluster
                    CR with\r\n  the same name; if none is found (or the CRD is not
                    installed), the \r\n  controller skips all migration logic and
                    sets OldCRCleaned=True,\r\n  allowing both operators to run side-by-side
                    managing their own \r\n  independent resources without conflict\r\n-
                    Adoption logic reparents existing StatefulSets, Services, and
                    Secrets\r\n  from old RabbitmqCluster owner to new RabbitMq CR\r\n-
                    Strips old ownerReferences from PVCs before deleting old CR to
                    prevent\r\n  cascade garbage collection\r\n- Cleans up old RabbitmqCluster
                    CR after successful adoption\r\n- Fixes stale volumeClaimTemplate
                    ownerReferences that cause new PVCs\r\n  to be garbage-collected
                    when scaling up adopted StatefulSets\r\n\r\nTesting:\r\n- Functional
                    tests (envtest): RabbitMQ controller reconciliation,\r\n  RabbitMQPolicy
                    lifecycle, TransportURL (plain, TLS, custom user/vhost,\r\n  credential
                    rotation), VCT fix, combined version+queue migration,\r\n  proxy
                    sidecar, operator coexistence (OldCRCleaned set when no old CR\r\n
                    \ exists, unrelated RabbitmqCluster CRs not touched)\r\n- Kuttl
                    integration tests: basic cluster deployment, cluster resource\r\n
                    \ ownership, credential rotation with cleanup-blocked finalizer,\r\n
                    \ deletion with dependent resources, plugin enable/disable, policy\r\n
                    \ enforcement via rabbitmqctl, queue migration (Mirrored to Quorum)\r\n
                    \ with AMQP proxy rewrite verification (classic non-durable ->
                    quorum\r\n  durable), resource management (vhost/user/policy),
                    scale-up with PDB,\r\n  TLS configuration, TLS TransportURL, custom
                    TransportURL, migration\r\n  from old operator, version upgrades
                    (3.9->4.2 with/without TLS,\r\n  Mirrored upgrade), operator coexistence
                    (both operators managing\r\n  independent clusters without interference)\r\n\r\nCo-Authored-By:
                    Claude Opus 4.6 <noreply@anthropic.com>\r\n\r\n\r\nDepends-on:
                    https://github.com/openstack-k8s-operators/openstack-operator/pull/1857"
                change_url: https://github.com/openstack-k8s-operators/infra-operator/pull/551
                commit_id: e4e3813a70bd8e2b4ca8279b5773a3251d408970
                patchset: e4e3813a70bd8e2b4ca8279b5773a3251d408970
                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
            change: '551'
            change_message: "Drop rabbitmq-cluster-operator dependency and manage
                RabbitMQ directly\n\nRemove the dependency on the external rabbitmq-cluster-operator
                and have\r\nthe infra-operator manage RabbitMQ StatefulSets, Services,
                ConfigMaps,\r\nand Secrets directly.\r\n\r\nCore controller changes:\r\n-
                Direct StatefulSet management with proper volume mounts, config\r\n
                \ generation, and TLS support (both client and inter-node)\r\n- Service
                creation for client (AMQP/AMQPS) and headless node discovery\r\n-
                ConfigMap generation for server config, plugins, and config-data\r\n-
                Secret management for default-user credentials and Erlang cookie\r\n-
                PodDisruptionBudget for multi-replica deployments\r\n- Fix stale ownerReferences
                in volumeClaimTemplates from adopted\r\n  StatefulSets (orphan-delete
                + recreate with annotation-based storage\r\n  class preservation)\r\n-
                Label pods with skipPreStopChecks before StatefulSet deletion so the
                \r\n  Downward API volume is populated when cascade deletion triggers
                the \r\n  PreStop hook, preventing 7-day termination hangs\r\n\r\nVersion
                upgrade workflow (3.x to 4.x):\r\n- State machine with phases: None
                -> DeletingResources -> WaitingForCluster -> None\r\n- Detects targetVersion
                changes and triggers storage wipe when crossing\r\n  major versions
                (required by RabbitMQ for 3.x -> 4.x upgrades)\r\n- Sets wipeReason=VersionUpgrade
                in status to track upgrade progress\r\n- Deletes StatefulSet to stop
                all pods atomically, then recreates it\r\n  with a wipe-data init
                container that clears /var/lib/rabbitmq on the \r\n  existing PVs
                (marker files prevent re-wipes across pod restarts)\r\n- Tracks currentVersion
                in status after successful upgrade\r\n\r\nQueue type migration (Mirrored
                to Quorum):\r\n- Supports migrating from classic mirrored (ha-all
                policy) queues to\r\n  quorum queues via spec.queueType change\r\n-
                Triggers storage wipe with wipeReason=QueueTypeMigration\r\n- Manages
                ha-all policy lifecycle: applies for Mirrored (replicas > 1), \r\n
                \ removes when transitioning away from Mirrored\r\n- Defaulting webhook
                forces queueType from Mirrored to Quorum when\r\n  targetVersion is
                4.x+, since mirrored queues are not supported in\r\n  RabbitMQ 4.x.
                This enables the openstack-operator to upgrade from\r\n  3.x (Mirrored)
                to 4.x and have the migration handled automatically\r\n- Validation
                webhook rejects Mirrored+4.x as a safety net after\r\n  defaulting\r\n\r\nAMQP
                proxy sidecar:\r\n- Python-based TCP proxy injected as a sidecar container
                when\r\n  status.proxyRequired is true (after version upgrade or queue
                migration)\r\n- Rewrites AMQP queue.declare frames to force durable=True
                and \r\n  x-queue-type=quorum, and exchange.declare frames to force
                durable=True\r\n- Listens on port 5672 (plain) or 5671 (TLS) depending
                on TLS config\r\n- Forwards connections to RabbitMQ backend on port
                5673\r\n- Removed via clients-reconfigured annotation once consumers
                reconnect\r\n- Includes liveness/readiness probes and TLS certificate
                mounting\r\n\r\nMigration from rabbitmq-cluster-operator:\r\n- Detects
                migration by checking for an existing RabbitmqCluster CR with\r\n
                \ the same name; if none is found (or the CRD is not installed), the
                \r\n  controller skips all migration logic and sets OldCRCleaned=True,\r\n
                \ allowing both operators to run side-by-side managing their own \r\n
                \ independent resources without conflict\r\n- Adoption logic reparents
                existing StatefulSets, Services, and Secrets\r\n  from old RabbitmqCluster
                owner to new RabbitMq CR\r\n- Strips old ownerReferences from PVCs
                before deleting old CR to prevent\r\n  cascade garbage collection\r\n-
                Cleans up old RabbitmqCluster CR after successful adoption\r\n- Fixes
                stale volumeClaimTemplate ownerReferences that cause new PVCs\r\n
                \ to be garbage-collected when scaling up adopted StatefulSets\r\n\r\nTesting:\r\n-
                Functional tests (envtest): RabbitMQ controller reconciliation,\r\n
                \ RabbitMQPolicy lifecycle, TransportURL (plain, TLS, custom user/vhost,\r\n
                \ credential rotation), VCT fix, combined version+queue migration,\r\n
                \ proxy sidecar, operator coexistence (OldCRCleaned set when no old
                CR\r\n  exists, unrelated RabbitmqCluster CRs not touched)\r\n- Kuttl
                integration tests: basic cluster deployment, cluster resource\r\n
                \ ownership, credential rotation with cleanup-blocked finalizer,\r\n
                \ deletion with dependent resources, plugin enable/disable, policy\r\n
                \ enforcement via rabbitmqctl, queue migration (Mirrored to Quorum)\r\n
                \ with AMQP proxy rewrite verification (classic non-durable -> quorum\r\n
                \ durable), resource management (vhost/user/policy), scale-up with
                PDB,\r\n  TLS configuration, TLS TransportURL, custom TransportURL,
                migration\r\n  from old operator, version upgrades (3.9->4.2 with/without
                TLS,\r\n  Mirrored upgrade), operator coexistence (both operators
                managing\r\n  independent clusters without interference)\r\n\r\nCo-Authored-By:
                Claude Opus 4.6 <noreply@anthropic.com>\r\n\r\n\r\nDepends-on: https://github.com/openstack-k8s-operators/openstack-operator/pull/1857"
            change_url: https://github.com/openstack-k8s-operators/infra-operator/pull/551
            child_jobs: []
            commit_id: e4e3813a70bd8e2b4ca8279b5773a3251d408970
            event_id: 51f5bce0-2e95-11f1-9a6d-8076e355528f
            executor:
                hostname: ze03.softwarefactory-project.io
                inventory_file: /var/lib/zuul/builds/859776a774cb412a9db7c3ff47a24aaf/ansible/inventory.yaml
                log_root: /var/lib/zuul/builds/859776a774cb412a9db7c3ff47a24aaf/work/logs
                result_data_file: /var/lib/zuul/builds/859776a774cb412a9db7c3ff47a24aaf/work/results.json
                src_root: /var/lib/zuul/builds/859776a774cb412a9db7c3ff47a24aaf/work/src
                work_root: /var/lib/zuul/builds/859776a774cb412a9db7c3ff47a24aaf/work
            items:
            -   branch: main
                change: '1857'
                change_message: "Drop rabbitmq-cluster-operator and add rabbitmq version
                    label\n\nRemove all rabbitmq-cluster-operator references, CRDs,
                    RBAC, and deployment manifests from openstack-operator. Use custom
                    infra-operator image that no longer depends on the rabbitmq-cluster-operator.\r\n\r\nAdd
                    RabbitmqVersion field to ServiceDefaults and set the target rabbitmq-server
                    version (4.2) in the RabbitMQ spec during reconciliation."
                change_url: https://github.com/openstack-k8s-operators/openstack-operator/pull/1857
                commit_id: cfb5b19a1d88e996ce505b07130d7315dc60bf22
                patchset: cfb5b19a1d88e996ce505b07130d7315dc60bf22
                project:
                    canonical_hostname: github.com
                    canonical_name: github.com/openstack-k8s-operators/openstack-operator
                    name: openstack-k8s-operators/openstack-operator
                    short_name: openstack-operator
                    src_dir: src/github.com/openstack-k8s-operators/openstack-operator
                topic: null
            -   branch: main
                change: '551'
                change_message: "Drop rabbitmq-cluster-operator dependency and manage
                    RabbitMQ directly\n\nRemove the dependency on the external rabbitmq-cluster-operator
                    and have\r\nthe infra-operator manage RabbitMQ StatefulSets, Services,
                    ConfigMaps,\r\nand Secrets directly.\r\n\r\nCore controller changes:\r\n-
                    Direct StatefulSet management with proper volume mounts, config\r\n
                    \ generation, and TLS support (both client and inter-node)\r\n-
                    Service creation for client (AMQP/AMQPS) and headless node discovery\r\n-
                    ConfigMap generation for server config, plugins, and config-data\r\n-
                    Secret management for default-user credentials and Erlang cookie\r\n-
                    PodDisruptionBudget for multi-replica deployments\r\n- Fix stale
                    ownerReferences in volumeClaimTemplates from adopted\r\n  StatefulSets
                    (orphan-delete + recreate with annotation-based storage\r\n  class
                    preservation)\r\n- Label pods with skipPreStopChecks before StatefulSet
                    deletion so the \r\n  Downward API volume is populated when cascade
                    deletion triggers the \r\n  PreStop hook, preventing 7-day termination
                    hangs\r\n\r\nVersion upgrade workflow (3.x to 4.x):\r\n- State
                    machine with phases: None -> DeletingResources -> WaitingForCluster
                    -> None\r\n- Detects targetVersion changes and triggers storage
                    wipe when crossing\r\n  major versions (required by RabbitMQ for
                    3.x -> 4.x upgrades)\r\n- Sets wipeReason=VersionUpgrade in status
                    to track upgrade progress\r\n- Deletes StatefulSet to stop all
                    pods atomically, then recreates it\r\n  with a wipe-data init
                    container that clears /var/lib/rabbitmq on the \r\n  existing
                    PVs (marker files prevent re-wipes across pod restarts)\r\n- Tracks
                    currentVersion in status after successful upgrade\r\n\r\nQueue
                    type migration (Mirrored to Quorum):\r\n- Supports migrating from
                    classic mirrored (ha-all policy) queues to\r\n  quorum queues
                    via spec.queueType change\r\n- Triggers storage wipe with wipeReason=QueueTypeMigration\r\n-
                    Manages ha-all policy lifecycle: applies for Mirrored (replicas
                    > 1), \r\n  removes when transitioning away from Mirrored\r\n-
                    Defaulting webhook forces queueType from Mirrored to Quorum when\r\n
                    \ targetVersion is 4.x+, since mirrored queues are not supported
                    in\r\n  RabbitMQ 4.x. This enables the openstack-operator to upgrade
                    from\r\n  3.x (Mirrored) to 4.x and have the migration handled
                    automatically\r\n- Validation webhook rejects Mirrored+4.x as
                    a safety net after\r\n  defaulting\r\n\r\nAMQP proxy sidecar:\r\n-
                    Python-based TCP proxy injected as a sidecar container when\r\n
                    \ status.proxyRequired is true (after version upgrade or queue
                    migration)\r\n- Rewrites AMQP queue.declare frames to force durable=True
                    and \r\n  x-queue-type=quorum, and exchange.declare frames to
                    force durable=True\r\n- Listens on port 5672 (plain) or 5671 (TLS)
                    depending on TLS config\r\n- Forwards connections to RabbitMQ
                    backend on port 5673\r\n- Removed via clients-reconfigured annotation
                    once consumers reconnect\r\n- Includes liveness/readiness probes
                    and TLS certificate mounting\r\n\r\nMigration from rabbitmq-cluster-operator:\r\n-
                    Detects migration by checking for an existing RabbitmqCluster
                    CR with\r\n  the same name; if none is found (or the CRD is not
                    installed), the \r\n  controller skips all migration logic and
                    sets OldCRCleaned=True,\r\n  allowing both operators to run side-by-side
                    managing their own \r\n  independent resources without conflict\r\n-
                    Adoption logic reparents existing StatefulSets, Services, and
                    Secrets\r\n  from old RabbitmqCluster owner to new RabbitMq CR\r\n-
                    Strips old ownerReferences from PVCs before deleting old CR to
                    prevent\r\n  cascade garbage collection\r\n- Cleans up old RabbitmqCluster
                    CR after successful adoption\r\n- Fixes stale volumeClaimTemplate
                    ownerReferences that cause new PVCs\r\n  to be garbage-collected
                    when scaling up adopted StatefulSets\r\n\r\nTesting:\r\n- Functional
                    tests (envtest): RabbitMQ controller reconciliation,\r\n  RabbitMQPolicy
                    lifecycle, TransportURL (plain, TLS, custom user/vhost,\r\n  credential
                    rotation), VCT fix, combined version+queue migration,\r\n  proxy
                    sidecar, operator coexistence (OldCRCleaned set when no old CR\r\n
                    \ exists, unrelated RabbitmqCluster CRs not touched)\r\n- Kuttl
                    integration tests: basic cluster deployment, cluster resource\r\n
                    \ ownership, credential rotation with cleanup-blocked finalizer,\r\n
                    \ deletion with dependent resources, plugin enable/disable, policy\r\n
                    \ enforcement via rabbitmqctl, queue migration (Mirrored to Quorum)\r\n
                    \ with AMQP proxy rewrite verification (classic non-durable ->
                    quorum\r\n  durable), resource management (vhost/user/policy),
                    scale-up with PDB,\r\n  TLS configuration, TLS TransportURL, custom
                    TransportURL, migration\r\n  from old operator, version upgrades
                    (3.9->4.2 with/without TLS,\r\n  Mirrored upgrade), operator coexistence
                    (both operators managing\r\n  independent clusters without interference)\r\n\r\nCo-Authored-By:
                    Claude Opus 4.6 <noreply@anthropic.com>\r\n\r\n\r\nDepends-on:
                    https://github.com/openstack-k8s-operators/openstack-operator/pull/1857"
                change_url: https://github.com/openstack-k8s-operators/infra-operator/pull/551
                commit_id: e4e3813a70bd8e2b4ca8279b5773a3251d408970
                patchset: e4e3813a70bd8e2b4ca8279b5773a3251d408970
                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: podified-multinode-edpm-deployment-crc
            jobtags: []
            max_attempts: 1
            message: RHJvcCByYWJiaXRtcS1jbHVzdGVyLW9wZXJhdG9yIGRlcGVuZGVuY3kgYW5kIG1hbmFnZSBSYWJiaXRNUSBkaXJlY3RseQoKUmVtb3ZlIHRoZSBkZXBlbmRlbmN5IG9uIHRoZSBleHRlcm5hbCByYWJiaXRtcS1jbHVzdGVyLW9wZXJhdG9yIGFuZCBoYXZlDQp0aGUgaW5mcmEtb3BlcmF0b3IgbWFuYWdlIFJhYmJpdE1RIFN0YXRlZnVsU2V0cywgU2VydmljZXMsIENvbmZpZ01hcHMsDQphbmQgU2VjcmV0cyBkaXJlY3RseS4NCg0KQ29yZSBjb250cm9sbGVyIGNoYW5nZXM6DQotIERpcmVjdCBTdGF0ZWZ1bFNldCBtYW5hZ2VtZW50IHdpdGggcHJvcGVyIHZvbHVtZSBtb3VudHMsIGNvbmZpZw0KICBnZW5lcmF0aW9uLCBhbmQgVExTIHN1cHBvcnQgKGJvdGggY2xpZW50IGFuZCBpbnRlci1ub2RlKQ0KLSBTZXJ2aWNlIGNyZWF0aW9uIGZvciBjbGllbnQgKEFNUVAvQU1RUFMpIGFuZCBoZWFkbGVzcyBub2RlIGRpc2NvdmVyeQ0KLSBDb25maWdNYXAgZ2VuZXJhdGlvbiBmb3Igc2VydmVyIGNvbmZpZywgcGx1Z2lucywgYW5kIGNvbmZpZy1kYXRhDQotIFNlY3JldCBtYW5hZ2VtZW50IGZvciBkZWZhdWx0LXVzZXIgY3JlZGVudGlhbHMgYW5kIEVybGFuZyBjb29raWUNCi0gUG9kRGlzcnVwdGlvbkJ1ZGdldCBmb3IgbXVsdGktcmVwbGljYSBkZXBsb3ltZW50cw0KLSBGaXggc3RhbGUgb3duZXJSZWZlcmVuY2VzIGluIHZvbHVtZUNsYWltVGVtcGxhdGVzIGZyb20gYWRvcHRlZA0KICBTdGF0ZWZ1bFNldHMgKG9ycGhhbi1kZWxldGUgKyByZWNyZWF0ZSB3aXRoIGFubm90YXRpb24tYmFzZWQgc3RvcmFnZQ0KICBjbGFzcyBwcmVzZXJ2YXRpb24pDQotIExhYmVsIHBvZHMgd2l0aCBza2lwUHJlU3RvcENoZWNrcyBiZWZvcmUgU3RhdGVmdWxTZXQgZGVsZXRpb24gc28gdGhlIA0KICBEb3dud2FyZCBBUEkgdm9sdW1lIGlzIHBvcHVsYXRlZCB3aGVuIGNhc2NhZGUgZGVsZXRpb24gdHJpZ2dlcnMgdGhlIA0KICBQcmVTdG9wIGhvb2ssIHByZXZlbnRpbmcgNy1kYXkgdGVybWluYXRpb24gaGFuZ3MNCg0KVmVyc2lvbiB1cGdyYWRlIHdvcmtmbG93ICgzLnggdG8gNC54KToNCi0gU3RhdGUgbWFjaGluZSB3aXRoIHBoYXNlczogTm9uZSAtPiBEZWxldGluZ1Jlc291cmNlcyAtPiBXYWl0aW5nRm9yQ2x1c3RlciAtPiBOb25lDQotIERldGVjdHMgdGFyZ2V0VmVyc2lvbiBjaGFuZ2VzIGFuZCB0cmlnZ2VycyBzdG9yYWdlIHdpcGUgd2hlbiBjcm9zc2luZw0KICBtYWpvciB2ZXJzaW9ucyAocmVxdWlyZWQgYnkgUmFiYml0TVEgZm9yIDMueCAtPiA0LnggdXBncmFkZXMpDQotIFNldHMgd2lwZVJlYXNvbj1WZXJzaW9uVXBncmFkZSBpbiBzdGF0dXMgdG8gdHJhY2sgdXBncmFkZSBwcm9ncmVzcw0KLSBEZWxldGVzIFN0YXRlZnVsU2V0IHRvIHN0b3AgYWxsIHBvZHMgYXRvbWljYWxseSwgdGhlbiByZWNyZWF0ZXMgaXQNCiAgd2l0aCBhIHdpcGUtZGF0YSBpbml0IGNvbnRhaW5lciB0aGF0IGNsZWFycyAvdmFyL2xpYi9yYWJiaXRtcSBvbiB0aGUgDQogIGV4aXN0aW5nIFBWcyAobWFya2VyIGZpbGVzIHByZXZlbnQgcmUtd2lwZXMgYWNyb3NzIHBvZCByZXN0YXJ0cykNCi0gVHJhY2tzIGN1cnJlbnRWZXJzaW9uIGluIHN0YXR1cyBhZnRlciBzdWNjZXNzZnVsIHVwZ3JhZGUNCg0KUXVldWUgdHlwZSBtaWdyYXRpb24gKE1pcnJvcmVkIHRvIFF1b3J1bSk6DQotIFN1cHBvcnRzIG1pZ3JhdGluZyBmcm9tIGNsYXNzaWMgbWlycm9yZWQgKGhhLWFsbCBwb2xpY3kpIHF1ZXVlcyB0bw0KICBxdW9ydW0gcXVldWVzIHZpYSBzcGVjLnF1ZXVlVHlwZSBjaGFuZ2UNCi0gVHJpZ2dlcnMgc3RvcmFnZSB3aXBlIHdpdGggd2lwZVJlYXNvbj1RdWV1ZVR5cGVNaWdyYXRpb24NCi0gTWFuYWdlcyBoYS1hbGwgcG9saWN5IGxpZmVjeWNsZTogYXBwbGllcyBmb3IgTWlycm9yZWQgKHJlcGxpY2FzID4gMSksIA0KICByZW1vdmVzIHdoZW4gdHJhbnNpdGlvbmluZyBhd2F5IGZyb20gTWlycm9yZWQNCi0gRGVmYXVsdGluZyB3ZWJob29rIGZvcmNlcyBxdWV1ZVR5cGUgZnJvbSBNaXJyb3JlZCB0byBRdW9ydW0gd2hlbg0KICB0YXJnZXRWZXJzaW9uIGlzIDQueCssIHNpbmNlIG1pcnJvcmVkIHF1ZXVlcyBhcmUgbm90IHN1cHBvcnRlZCBpbg0KICBSYWJiaXRNUSA0LnguIFRoaXMgZW5hYmxlcyB0aGUgb3BlbnN0YWNrLW9wZXJhdG9yIHRvIHVwZ3JhZGUgZnJvbQ0KICAzLnggKE1pcnJvcmVkKSB0byA0LnggYW5kIGhhdmUgdGhlIG1pZ3JhdGlvbiBoYW5kbGVkIGF1dG9tYXRpY2FsbHkNCi0gVmFsaWRhdGlvbiB3ZWJob29rIHJlamVjdHMgTWlycm9yZWQrNC54IGFzIGEgc2FmZXR5IG5ldCBhZnRlcg0KICBkZWZhdWx0aW5nDQoNCkFNUVAgcHJveHkgc2lkZWNhcjoNCi0gUHl0aG9uLWJhc2VkIFRDUCBwcm94eSBpbmplY3RlZCBhcyBhIHNpZGVjYXIgY29udGFpbmVyIHdoZW4NCiAgc3RhdHVzLnByb3h5UmVxdWlyZWQgaXMgdHJ1ZSAoYWZ0ZXIgdmVyc2lvbiB1cGdyYWRlIG9yIHF1ZXVlIG1pZ3JhdGlvbikNCi0gUmV3cml0ZXMgQU1RUCBxdWV1ZS5kZWNsYXJlIGZyYW1lcyB0byBmb3JjZSBkdXJhYmxlPVRydWUgYW5kIA0KICB4LXF1ZXVlLXR5cGU9cXVvcnVtLCBhbmQgZXhjaGFuZ2UuZGVjbGFyZSBmcmFtZXMgdG8gZm9yY2UgZHVyYWJsZT1UcnVlDQotIExpc3RlbnMgb24gcG9ydCA1NjcyIChwbGFpbikgb3IgNTY3MSAoVExTKSBkZXBlbmRpbmcgb24gVExTIGNvbmZpZw0KLSBGb3J3YXJkcyBjb25uZWN0aW9ucyB0byBSYWJiaXRNUSBiYWNrZW5kIG9uIHBvcnQgNTY3Mw0KLSBSZW1vdmVkIHZpYSBjbGllbnRzLXJlY29uZmlndXJlZCBhbm5vdGF0aW9uIG9uY2UgY29uc3VtZXJzIHJlY29ubmVjdA0KLSBJbmNsdWRlcyBsaXZlbmVzcy9yZWFkaW5lc3MgcHJvYmVzIGFuZCBUTFMgY2VydGlmaWNhdGUgbW91bnRpbmcNCg0KTWlncmF0aW9uIGZyb20gcmFiYml0bXEtY2x1c3Rlci1vcGVyYXRvcjoNCi0gRGV0ZWN0cyBtaWdyYXRpb24gYnkgY2hlY2tpbmcgZm9yIGFuIGV4aXN0aW5nIFJhYmJpdG1xQ2x1c3RlciBDUiB3aXRoDQogIHRoZSBzYW1lIG5hbWU7IGlmIG5vbmUgaXMgZm91bmQgKG9yIHRoZSBDUkQgaXMgbm90IGluc3RhbGxlZCksIHRoZSANCiAgY29udHJvbGxlciBza2lwcyBhbGwgbWlncmF0aW9uIGxvZ2ljIGFuZCBzZXRzIE9sZENSQ2xlYW5lZD1UcnVlLA0KICBhbGxvd2luZyBib3RoIG9wZXJhdG9ycyB0byBydW4gc2lkZS1ieS1zaWRlIG1hbmFnaW5nIHRoZWlyIG93biANCiAgaW5kZXBlbmRlbnQgcmVzb3VyY2VzIHdpdGhvdXQgY29uZmxpY3QNCi0gQWRvcHRpb24gbG9naWMgcmVwYXJlbnRzIGV4aXN0aW5nIFN0YXRlZnVsU2V0cywgU2VydmljZXMsIGFuZCBTZWNyZXRzDQogIGZyb20gb2xkIFJhYmJpdG1xQ2x1c3RlciBvd25lciB0byBuZXcgUmFiYml0TXEgQ1INCi0gU3RyaXBzIG9sZCBvd25lclJlZmVyZW5jZXMgZnJvbSBQVkNzIGJlZm9yZSBkZWxldGluZyBvbGQgQ1IgdG8gcHJldmVudA0KICBjYXNjYWRlIGdhcmJhZ2UgY29sbGVjdGlvbg0KLSBDbGVhbnMgdXAgb2xkIFJhYmJpdG1xQ2x1c3RlciBDUiBhZnRlciBzdWNjZXNzZnVsIGFkb3B0aW9uDQotIEZpeGVzIHN0YWxlIHZvbHVtZUNsYWltVGVtcGxhdGUgb3duZXJSZWZlcmVuY2VzIHRoYXQgY2F1c2UgbmV3IFBWQ3MNCiAgdG8gYmUgZ2FyYmFnZS1jb2xsZWN0ZWQgd2hlbiBzY2FsaW5nIHVwIGFkb3B0ZWQgU3RhdGVmdWxTZXRzDQoNClRlc3Rpbmc6DQotIEZ1bmN0aW9uYWwgdGVzdHMgKGVudnRlc3QpOiBSYWJiaXRNUSBjb250cm9sbGVyIHJlY29uY2lsaWF0aW9uLA0KICBSYWJiaXRNUVBvbGljeSBsaWZlY3ljbGUsIFRyYW5zcG9ydFVSTCAocGxhaW4sIFRMUywgY3VzdG9tIHVzZXIvdmhvc3QsDQogIGNyZWRlbnRpYWwgcm90YXRpb24pLCBWQ1QgZml4LCBjb21iaW5lZCB2ZXJzaW9uK3F1ZXVlIG1pZ3JhdGlvbiwNCiAgcHJveHkgc2lkZWNhciwgb3BlcmF0b3IgY29leGlzdGVuY2UgKE9sZENSQ2xlYW5lZCBzZXQgd2hlbiBubyBvbGQgQ1INCiAgZXhpc3RzLCB1bnJlbGF0ZWQgUmFiYml0bXFDbHVzdGVyIENScyBub3QgdG91Y2hlZCkNCi0gS3V0dGwgaW50ZWdyYXRpb24gdGVzdHM6IGJhc2ljIGNsdXN0ZXIgZGVwbG95bWVudCwgY2x1c3RlciByZXNvdXJjZQ0KICBvd25lcnNoaXAsIGNyZWRlbnRpYWwgcm90YXRpb24gd2l0aCBjbGVhbnVwLWJsb2NrZWQgZmluYWxpemVyLA0KICBkZWxldGlvbiB3aXRoIGRlcGVuZGVudCByZXNvdXJjZXMsIHBsdWdpbiBlbmFibGUvZGlzYWJsZSwgcG9saWN5DQogIGVuZm9yY2VtZW50IHZpYSByYWJiaXRtcWN0bCwgcXVldWUgbWlncmF0aW9uIChNaXJyb3JlZCB0byBRdW9ydW0pDQogIHdpdGggQU1RUCBwcm94eSByZXdyaXRlIHZlcmlmaWNhdGlvbiAoY2xhc3NpYyBub24tZHVyYWJsZSAtPiBxdW9ydW0NCiAgZHVyYWJsZSksIHJlc291cmNlIG1hbmFnZW1lbnQgKHZob3N0L3VzZXIvcG9saWN5KSwgc2NhbGUtdXAgd2l0aCBQREIsDQogIFRMUyBjb25maWd1cmF0aW9uLCBUTFMgVHJhbnNwb3J0VVJMLCBjdXN0b20gVHJhbnNwb3J0VVJMLCBtaWdyYXRpb24NCiAgZnJvbSBvbGQgb3BlcmF0b3IsIHZlcnNpb24gdXBncmFkZXMgKDMuOS0+NC4yIHdpdGgvd2l0aG91dCBUTFMsDQogIE1pcnJvcmVkIHVwZ3JhZGUpLCBvcGVyYXRvciBjb2V4aXN0ZW5jZSAoYm90aCBvcGVyYXRvcnMgbWFuYWdpbmcNCiAgaW5kZXBlbmRlbnQgY2x1c3RlcnMgd2l0aG91dCBpbnRlcmZlcmVuY2UpDQoNCkNvLUF1dGhvcmVkLUJ5OiBDbGF1ZGUgT3B1cyA0LjYgPG5vcmVwbHlAYW50aHJvcGljLmNvbT4NCg0KDQpEZXBlbmRzLW9uOiBodHRwczovL2dpdGh1Yi5jb20vb3BlbnN0YWNrLWs4cy1vcGVyYXRvcnMvb3BlbnN0YWNrLW9wZXJhdG9yL3B1bGwvMTg1Nw==
            patchset: e4e3813a70bd8e2b4ca8279b5773a3251d408970
            pipeline: github-check
            playbook_context:
                playbook_projects:
                    trusted/project_0/review.rdoproject.org/config:
                        canonical_name: review.rdoproject.org/config
                        checkout: master
                        commit: c202bacbbd704bba004cd445bb4ac8759cd71603
                    trusted/project_1/opendev.org/zuul/zuul-jobs:
                        canonical_name: opendev.org/zuul/zuul-jobs
                        checkout: master
                        commit: c75fe6ef19c05b98349573c971950c51bbf24758
                    trusted/project_2/review.rdoproject.org/rdo-jobs:
                        canonical_name: review.rdoproject.org/rdo-jobs
                        checkout: master
                        commit: 42833c2800465195063199e35051e028e7483685
                    trusted/project_3/github.com/openstack-k8s-operators/ci-framework:
                        canonical_name: github.com/openstack-k8s-operators/ci-framework
                        checkout: main
                        commit: dc72a2c3e9d875a69f66e63ddaec9eba9e308326
                    untrusted/project_0/github.com/openstack-k8s-operators/ci-framework:
                        canonical_name: github.com/openstack-k8s-operators/ci-framework
                        checkout: main
                        commit: dc72a2c3e9d875a69f66e63ddaec9eba9e308326
                    untrusted/project_1/review.rdoproject.org/config:
                        canonical_name: review.rdoproject.org/config
                        checkout: master
                        commit: c202bacbbd704bba004cd445bb4ac8759cd71603
                    untrusted/project_2/opendev.org/zuul/zuul-jobs:
                        canonical_name: opendev.org/zuul/zuul-jobs
                        checkout: master
                        commit: c75fe6ef19c05b98349573c971950c51bbf24758
                    untrusted/project_3/review.rdoproject.org/rdo-jobs:
                        canonical_name: review.rdoproject.org/rdo-jobs
                        checkout: master
                        commit: 42833c2800465195063199e35051e028e7483685
                playbooks:
                -   path: untrusted/project_0/github.com/openstack-k8s-operators/ci-framework/ci/playbooks/edpm/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_review: false
            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/crc-org/crc-cloud:
                    canonical_hostname: github.com
                    canonical_name: github.com/crc-org/crc-cloud
                    checkout: main
                    checkout_description: project override ref
                    commit: 7db2fd7048647a142b2118458ab76b07aed5a494
                    name: crc-org/crc-cloud
                    required: true
                    short_name: crc-cloud
                    src_dir: src/github.com/crc-org/crc-cloud
                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: dc72a2c3e9d875a69f66e63ddaec9eba9e308326
                    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: 421976f4c9028d1e48d3bb8e55cef87067a21e6d
                    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: e4e3813a70bd8e2b4ca8279b5773a3251d408970
                    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: bc3777043145e3918ead69759c09f17ef365070c
                    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: ddfcabd7b3424c2ce5e2e1a26b13216c0ee41578
                    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: 36543956b2d3bf32aecd29e68abe94294f97f8a0
                    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: cfb5b19a1d88e996ce505b07130d7315dc60bf22
                    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: d3b114711653a7821a8c486e8d093f6222e9def7
                    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: c75fe6ef19c05b98349573c971950c51bbf24758
                    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: c202bacbbd704bba004cd445bb4ac8759cd71603
                    name: config
                    required: true
                    short_name: config
                    src_dir: src/review.rdoproject.org/config
            ref: refs/pull/551/head
            resources: {}
            tenant: rdoproject.org
            timeout: 10800
            topic: null
            voting: true
        zuul_log_collection: true
