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: '123456789'
      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: '123456789'
      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: '123456789'
      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
  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: '123456789'
    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
