all:
  children:
    tempest:
      hosts:
        controller: null
    zuul_unreachable:
      hosts: {}
  hosts:
    controller:
      ansible_connection: ssh
      ansible_host: 10.4.3.197
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: ubuntu
      configure_swap_size: 8192
      devstack_local_conf:
        post-config:
          $CINDER_CONF:
            storpool:
              storpool_template: virtual
              volume_backend_name: storpool
              volume_driver: cinder.volume.drivers.storpool.StorPoolDriver
          $NEUTRON_CONF:
            DEFAULT:
              global_physnet_mtu: '{{ external_bridge_mtu }}'
        test-config:
          $TEMPEST_CONFIG:
            compute:
              min_compute_nodes: '{{ groups[''compute''] | default([''controller''])
                | length }}'
            service-clients:
              http_timeout: 90
      devstack_localrc:
        ADMIN_PASSWORD: secretadmin
        CINDER_ENABLED_BACKENDS: storpool:storpool
        DATABASE_PASSWORD: secretdatabase
        DEBUG_LIBVIRT_COREDUMPS: true
        ENABLE_FILE_INJECTION: false
        ENABLE_SYSCTL_MEM_TUNING: true
        ENABLE_SYSCTL_NET_TUNING: true
        ENABLE_VOLUME_MULTIATTACH: false
        ENABLE_ZSWAP: true
        ERROR_ON_CLONE: true
        FIXED_RANGE: 10.1.0.0/20
        FLOATING_RANGE: 172.24.5.0/24
        FORCE_CONFIG_DRIVE: true
        GLANCE_USE_IMPORT_WORKFLOW: true
        HOST_IP: '{{ hostvars[''controller''][''nodepool''][''private_ipv4''] }}'
        IMAGE_URLS: http://download.cirros-cloud.net/0.6.2/cirros-0.6.2-x86_64-disk.img,
          http://download.cirros-cloud.net/0.6.1/cirros-0.6.1-x86_64-disk.img
        IPV4_ADDRS_SAFE_TO_USE: 10.1.0.0/20
        LIBVIRT_TYPE: '{{ devstack_libvirt_type | default("qemu") }}'
        LOGFILE: /opt/stack/logs/devstacklog.txt
        LOG_COLOR: false
        NETWORK_GATEWAY: 10.1.0.1
        NOVA_LIBVIRT_TB_CACHE_SIZE: 128
        NOVA_VNC_ENABLED: true
        OVN_DBS_LOG_LEVEL: dbg
        PUBLIC_BRIDGE_MTU: '{{ external_bridge_mtu }}'
        PUBLIC_NETWORK_GATEWAY: 172.24.5.1
        RABBIT_PASSWORD: secretrabbit
        SERVICE_HOST: '{{ hostvars[''controller''][''nodepool''][''private_ipv4'']
          }}'
        SERVICE_PASSWORD: secretservice
        SWIFT_HASH: 1234123412341234
        SWIFT_REPLICAS: 1
        SWIFT_START_ALL_SERVICES: false
        TEMPEST_EXTEND_ATTACHED_VOLUME: true
        TEMPEST_PLUGINS: cinder-tempest-plugin
        TEMPEST_RUN_VALIDATION: true
        TEMPEST_STORAGE_PROTOCOL: storpool
        TEMPEST_VOLUME_REVERT_TO_SNAPSHOT: true
        TEMPEST_VOLUME_VENDOR: StorPool
        VERBOSE: true
        VERBOSE_NO_TIMESTAMP: true
      devstack_plugins:
        neutron: https://opendev.org/openstack/neutron
      devstack_services:
        base: false
        c-api: true
        c-bak: true
        c-sch: true
        c-vol: true
        dstat: false
        etcd3: true
        file_tracker: true
        g-api: true
        horizon: false
        key: true
        memory_tracker: true
        mysql: true
        n-api: true
        n-api-meta: true
        n-cond: true
        n-cpu: true
        n-novnc: true
        n-sch: true
        openstack-cli-server: true
        ovn-controller: true
        ovn-northd: true
        ovs-vswitchd: true
        ovsdb-server: true
        placement-api: true
        q-ovn-agent: true
        q-svc: true
        rabbit: true
        s-account: true
        s-container: true
        s-object: true
        s-proxy: true
        tempest: true
        tls-proxy: true
      extensions_to_txt:
        auto: true
        conf: true
        localrc: true
        log: true
        stackenv: true
        yaml: true
        yml: true
      local_gerrit: gerrit-openstack-ci.sof-k8s.storpool.net
      nodepool:
        az: lab
        cloud: openstack-testing
        external_id: f7c49d63-1099-4685-b3c7-dc04a95b470e
        host_id: 7494f74baa07d17789d96d3d24bdd7bcd37fb89e8217586c2be59c98
        interface_ip: 10.4.3.197
        label: os-ubuntu2404-2xlarge
        node_properties: {}
        private_ipv4: 10.4.3.197
        private_ipv6: null
        provider: upstream-openstack-ci
        public_ipv4: ''
        public_ipv6: ''
        region: RegionOne
        slot: null
      os_venv: ~/sp-venv-openstack
      sp_target_release: release
      storpool_connection: block
      tempest_concurrency: 8
      tempest_test_regex: volume
      test_results_stage_name: test_results
      tox_envlist: all
      zuul_copy_output:
        /etc/ceph: logs
        /etc/glusterfs/glusterd.vol: logs
        /etc/libvirt: logs
        /etc/lvm: logs
        /etc/resolv.conf: logs
        /etc/sudoers: logs
        /etc/sudoers.d: logs
        /var/log/ceph: logs
        /var/log/glusterfs: logs
        /var/log/libvirt: logs
        /var/log/mysql: logs
        /var/log/openvswitch: logs
        /var/log/ovn: logs
        /var/log/postgresql: logs
        /var/log/rabbitmq: logs
        /var/log/unbound.log: logs
        '{{ devstack_base_dir }}/tempest/etc/accounts.yaml': logs
        '{{ devstack_base_dir }}/tempest/etc/tempest.conf': logs
        '{{ devstack_base_dir }}/tempest/tempest.log': logs
        '{{ devstack_conf_dir }}/.localrc.auto': logs
        '{{ devstack_conf_dir }}/.stackenv': logs
        '{{ devstack_conf_dir }}/local.conf': logs
        '{{ devstack_conf_dir }}/localrc': logs
        '{{ devstack_full_log}}': logs
        '{{ devstack_log_dir }}/atop': logs
        '{{ devstack_log_dir }}/devstacklog.txt': logs
        '{{ devstack_log_dir }}/devstacklog.txt.summary': logs
        '{{ devstack_log_dir }}/dstat-csv.log': logs
        '{{ devstack_log_dir }}/qemu.coredump': logs
        '{{ devstack_log_dir }}/tcpdump.pcap': logs
        '{{ devstack_log_dir }}/worlddump-latest.txt': logs
        '{{ stage_dir }}/apache': logs
        '{{ stage_dir }}/apache_config': logs
        '{{ stage_dir }}/audit.log': logs
        '{{ stage_dir }}/core': logs
        '{{ stage_dir }}/deprecations.log': logs
        '{{ stage_dir }}/df.txt': logs
        '{{ stage_dir }}/dpkg-l.txt': logs
        '{{ stage_dir }}/etc': logs
        '{{ stage_dir }}/iptables.txt': logs
        '{{ stage_dir }}/listen53.txt': logs
        '{{ stage_dir }}/mount.txt': logs
        '{{ stage_dir }}/performance.json': logs
        '{{ stage_dir }}/pip2-freeze.txt': logs
        '{{ stage_dir }}/pip3-freeze.txt': logs
        '{{ stage_dir }}/rpm-qa.txt': logs
        '{{ stage_dir }}/services.txt': logs
        '{{ stage_dir }}/stackviz': logs
        '{{ stage_dir }}/verify_tempest_conf.log': logs
        '{{ stage_dir }}/{{ test_results_stage_name }}.html': logs
        '{{ stage_dir }}/{{ test_results_stage_name }}.subunit': logs
      zuul_node:
        az: lab
        cloud: openstack-testing
        external_id: f7c49d63-1099-4685-b3c7-dc04a95b470e
        host_id: 7494f74baa07d17789d96d3d24bdd7bcd37fb89e8217586c2be59c98
        interface_ip: 10.4.3.197
        label: os-ubuntu2404-2xlarge
        node_properties: {}
        private_ipv4: 10.4.3.197
        private_ipv6: null
        provider: upstream-openstack-ci
        public_ipv4: ''
        public_ipv6: ''
        region: RegionOne
        reuse: false
        slot: null
        uuid: null
      zuul_use_fetch_output: true
    lab-sp-a1:
      ansible_connection: ssh
      ansible_host: 10.4.3.163
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: ubuntu
      configure_swap_size: 8192
      devstack_local_conf:
        post-config:
          $CINDER_CONF:
            storpool:
              storpool_template: virtual
              volume_backend_name: storpool
              volume_driver: cinder.volume.drivers.storpool.StorPoolDriver
          $NEUTRON_CONF:
            DEFAULT:
              global_physnet_mtu: '{{ external_bridge_mtu }}'
        test-config:
          $TEMPEST_CONFIG:
            compute:
              min_compute_nodes: '{{ groups[''compute''] | default([''controller''])
                | length }}'
            service-clients:
              http_timeout: 90
      devstack_localrc:
        ADMIN_PASSWORD: secretadmin
        CINDER_ENABLED_BACKENDS: storpool:storpool
        DATABASE_PASSWORD: secretdatabase
        DEBUG_LIBVIRT_COREDUMPS: true
        ENABLE_FILE_INJECTION: false
        ENABLE_SYSCTL_MEM_TUNING: true
        ENABLE_SYSCTL_NET_TUNING: true
        ENABLE_VOLUME_MULTIATTACH: false
        ENABLE_ZSWAP: true
        ERROR_ON_CLONE: true
        FIXED_RANGE: 10.1.0.0/20
        FLOATING_RANGE: 172.24.5.0/24
        FORCE_CONFIG_DRIVE: true
        GLANCE_USE_IMPORT_WORKFLOW: true
        HOST_IP: '{{ hostvars[''controller''][''nodepool''][''private_ipv4''] }}'
        IMAGE_URLS: http://download.cirros-cloud.net/0.6.2/cirros-0.6.2-x86_64-disk.img,
          http://download.cirros-cloud.net/0.6.1/cirros-0.6.1-x86_64-disk.img
        IPV4_ADDRS_SAFE_TO_USE: 10.1.0.0/20
        LIBVIRT_TYPE: '{{ devstack_libvirt_type | default("qemu") }}'
        LOGFILE: /opt/stack/logs/devstacklog.txt
        LOG_COLOR: false
        NETWORK_GATEWAY: 10.1.0.1
        NOVA_LIBVIRT_TB_CACHE_SIZE: 128
        NOVA_VNC_ENABLED: true
        OVN_DBS_LOG_LEVEL: dbg
        PUBLIC_BRIDGE_MTU: '{{ external_bridge_mtu }}'
        PUBLIC_NETWORK_GATEWAY: 172.24.5.1
        RABBIT_PASSWORD: secretrabbit
        SERVICE_HOST: '{{ hostvars[''controller''][''nodepool''][''private_ipv4'']
          }}'
        SERVICE_PASSWORD: secretservice
        SWIFT_HASH: 1234123412341234
        SWIFT_REPLICAS: 1
        SWIFT_START_ALL_SERVICES: false
        TEMPEST_EXTEND_ATTACHED_VOLUME: true
        TEMPEST_PLUGINS: cinder-tempest-plugin
        TEMPEST_RUN_VALIDATION: true
        TEMPEST_STORAGE_PROTOCOL: storpool
        TEMPEST_VOLUME_REVERT_TO_SNAPSHOT: true
        TEMPEST_VOLUME_VENDOR: StorPool
        VERBOSE: true
        VERBOSE_NO_TIMESTAMP: true
      devstack_plugins:
        neutron: https://opendev.org/openstack/neutron
      devstack_services:
        base: false
        c-api: true
        c-bak: true
        c-sch: true
        c-vol: true
        dstat: false
        etcd3: true
        file_tracker: true
        g-api: true
        horizon: false
        key: true
        memory_tracker: true
        mysql: true
        n-api: true
        n-api-meta: true
        n-cond: true
        n-cpu: true
        n-novnc: true
        n-sch: true
        openstack-cli-server: true
        ovn-controller: true
        ovn-northd: true
        ovs-vswitchd: true
        ovsdb-server: true
        placement-api: true
        q-ovn-agent: true
        q-svc: true
        rabbit: true
        s-account: true
        s-container: true
        s-object: true
        s-proxy: true
        tempest: true
        tls-proxy: true
      extensions_to_txt:
        auto: true
        conf: true
        localrc: true
        log: true
        stackenv: true
        yaml: true
        yml: true
      local_gerrit: gerrit-openstack-ci.sof-k8s.storpool.net
      nodepool:
        az: lab
        cloud: openstack-testing
        external_id: 666c9cf6-308e-429f-a7f1-6d1a8c4a8411
        host_id: 7494f74baa07d17789d96d3d24bdd7bcd37fb89e8217586c2be59c98
        interface_ip: 10.4.3.163
        label: os-ubuntu2404-2xlarge
        node_properties: {}
        private_ipv4: 10.4.3.163
        private_ipv6: null
        provider: upstream-openstack-ci
        public_ipv4: ''
        public_ipv6: ''
        region: RegionOne
        slot: null
      os_venv: ~/sp-venv-openstack
      sp_target_release: release
      storpool_connection: block
      tempest_concurrency: 8
      tempest_test_regex: volume
      test_results_stage_name: test_results
      tox_envlist: all
      zuul_copy_output:
        /etc/ceph: logs
        /etc/glusterfs/glusterd.vol: logs
        /etc/libvirt: logs
        /etc/lvm: logs
        /etc/resolv.conf: logs
        /etc/sudoers: logs
        /etc/sudoers.d: logs
        /var/log/ceph: logs
        /var/log/glusterfs: logs
        /var/log/libvirt: logs
        /var/log/mysql: logs
        /var/log/openvswitch: logs
        /var/log/ovn: logs
        /var/log/postgresql: logs
        /var/log/rabbitmq: logs
        /var/log/unbound.log: logs
        '{{ devstack_base_dir }}/tempest/etc/accounts.yaml': logs
        '{{ devstack_base_dir }}/tempest/etc/tempest.conf': logs
        '{{ devstack_base_dir }}/tempest/tempest.log': logs
        '{{ devstack_conf_dir }}/.localrc.auto': logs
        '{{ devstack_conf_dir }}/.stackenv': logs
        '{{ devstack_conf_dir }}/local.conf': logs
        '{{ devstack_conf_dir }}/localrc': logs
        '{{ devstack_full_log}}': logs
        '{{ devstack_log_dir }}/atop': logs
        '{{ devstack_log_dir }}/devstacklog.txt': logs
        '{{ devstack_log_dir }}/devstacklog.txt.summary': logs
        '{{ devstack_log_dir }}/dstat-csv.log': logs
        '{{ devstack_log_dir }}/qemu.coredump': logs
        '{{ devstack_log_dir }}/tcpdump.pcap': logs
        '{{ devstack_log_dir }}/worlddump-latest.txt': logs
        '{{ stage_dir }}/apache': logs
        '{{ stage_dir }}/apache_config': logs
        '{{ stage_dir }}/audit.log': logs
        '{{ stage_dir }}/core': logs
        '{{ stage_dir }}/deprecations.log': logs
        '{{ stage_dir }}/df.txt': logs
        '{{ stage_dir }}/dpkg-l.txt': logs
        '{{ stage_dir }}/etc': logs
        '{{ stage_dir }}/iptables.txt': logs
        '{{ stage_dir }}/listen53.txt': logs
        '{{ stage_dir }}/mount.txt': logs
        '{{ stage_dir }}/performance.json': logs
        '{{ stage_dir }}/pip2-freeze.txt': logs
        '{{ stage_dir }}/pip3-freeze.txt': logs
        '{{ stage_dir }}/rpm-qa.txt': logs
        '{{ stage_dir }}/services.txt': logs
        '{{ stage_dir }}/stackviz': logs
        '{{ stage_dir }}/verify_tempest_conf.log': logs
        '{{ stage_dir }}/{{ test_results_stage_name }}.html': logs
        '{{ stage_dir }}/{{ test_results_stage_name }}.subunit': logs
      zuul_node:
        az: lab
        cloud: openstack-testing
        external_id: 666c9cf6-308e-429f-a7f1-6d1a8c4a8411
        host_id: 7494f74baa07d17789d96d3d24bdd7bcd37fb89e8217586c2be59c98
        interface_ip: 10.4.3.163
        label: os-ubuntu2404-2xlarge
        node_properties: {}
        private_ipv4: 10.4.3.163
        private_ipv6: null
        provider: upstream-openstack-ci
        public_ipv4: ''
        public_ipv6: ''
        region: RegionOne
        reuse: false
        slot: null
        uuid: null
      zuul_use_fetch_output: true
    undercloud-client:
      ansible_connection: ssh
      ansible_host: 10.4.3.70
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: ubuntu
      configure_swap_size: 8192
      devstack_local_conf:
        post-config:
          $CINDER_CONF:
            storpool:
              storpool_template: virtual
              volume_backend_name: storpool
              volume_driver: cinder.volume.drivers.storpool.StorPoolDriver
          $NEUTRON_CONF:
            DEFAULT:
              global_physnet_mtu: '{{ external_bridge_mtu }}'
        test-config:
          $TEMPEST_CONFIG:
            compute:
              min_compute_nodes: '{{ groups[''compute''] | default([''controller''])
                | length }}'
            service-clients:
              http_timeout: 90
      devstack_localrc:
        ADMIN_PASSWORD: secretadmin
        CINDER_ENABLED_BACKENDS: storpool:storpool
        DATABASE_PASSWORD: secretdatabase
        DEBUG_LIBVIRT_COREDUMPS: true
        ENABLE_FILE_INJECTION: false
        ENABLE_SYSCTL_MEM_TUNING: true
        ENABLE_SYSCTL_NET_TUNING: true
        ENABLE_VOLUME_MULTIATTACH: false
        ENABLE_ZSWAP: true
        ERROR_ON_CLONE: true
        FIXED_RANGE: 10.1.0.0/20
        FLOATING_RANGE: 172.24.5.0/24
        FORCE_CONFIG_DRIVE: true
        GLANCE_USE_IMPORT_WORKFLOW: true
        HOST_IP: '{{ hostvars[''controller''][''nodepool''][''private_ipv4''] }}'
        IMAGE_URLS: http://download.cirros-cloud.net/0.6.2/cirros-0.6.2-x86_64-disk.img,
          http://download.cirros-cloud.net/0.6.1/cirros-0.6.1-x86_64-disk.img
        IPV4_ADDRS_SAFE_TO_USE: 10.1.0.0/20
        LIBVIRT_TYPE: '{{ devstack_libvirt_type | default("qemu") }}'
        LOGFILE: /opt/stack/logs/devstacklog.txt
        LOG_COLOR: false
        NETWORK_GATEWAY: 10.1.0.1
        NOVA_LIBVIRT_TB_CACHE_SIZE: 128
        NOVA_VNC_ENABLED: true
        OVN_DBS_LOG_LEVEL: dbg
        PUBLIC_BRIDGE_MTU: '{{ external_bridge_mtu }}'
        PUBLIC_NETWORK_GATEWAY: 172.24.5.1
        RABBIT_PASSWORD: secretrabbit
        SERVICE_HOST: '{{ hostvars[''controller''][''nodepool''][''private_ipv4'']
          }}'
        SERVICE_PASSWORD: secretservice
        SWIFT_HASH: 1234123412341234
        SWIFT_REPLICAS: 1
        SWIFT_START_ALL_SERVICES: false
        TEMPEST_EXTEND_ATTACHED_VOLUME: true
        TEMPEST_PLUGINS: cinder-tempest-plugin
        TEMPEST_RUN_VALIDATION: true
        TEMPEST_STORAGE_PROTOCOL: storpool
        TEMPEST_VOLUME_REVERT_TO_SNAPSHOT: true
        TEMPEST_VOLUME_VENDOR: StorPool
        VERBOSE: true
        VERBOSE_NO_TIMESTAMP: true
      devstack_plugins:
        neutron: https://opendev.org/openstack/neutron
      devstack_services:
        base: false
        c-api: true
        c-bak: true
        c-sch: true
        c-vol: true
        dstat: false
        etcd3: true
        file_tracker: true
        g-api: true
        horizon: false
        key: true
        memory_tracker: true
        mysql: true
        n-api: true
        n-api-meta: true
        n-cond: true
        n-cpu: true
        n-novnc: true
        n-sch: true
        openstack-cli-server: true
        ovn-controller: true
        ovn-northd: true
        ovs-vswitchd: true
        ovsdb-server: true
        placement-api: true
        q-ovn-agent: true
        q-svc: true
        rabbit: true
        s-account: true
        s-container: true
        s-object: true
        s-proxy: true
        tempest: true
        tls-proxy: true
      extensions_to_txt:
        auto: true
        conf: true
        localrc: true
        log: true
        stackenv: true
        yaml: true
        yml: true
      local_gerrit: gerrit-openstack-ci.sof-k8s.storpool.net
      nodepool:
        az: lab
        cloud: openstack-testing
        external_id: 54660db1-62ad-4850-b903-7a21f4579ffc
        host_id: 7494f74baa07d17789d96d3d24bdd7bcd37fb89e8217586c2be59c98
        interface_ip: 10.4.3.70
        label: os-ubuntu2404-small
        node_properties: {}
        private_ipv4: 10.4.3.70
        private_ipv6: null
        provider: upstream-openstack-ci
        public_ipv4: ''
        public_ipv6: ''
        region: RegionOne
        slot: null
      os_venv: ~/sp-venv-openstack
      sp_target_release: release
      storpool_connection: block
      tempest_concurrency: 8
      tempest_test_regex: volume
      test_results_stage_name: test_results
      tox_envlist: all
      zuul_copy_output:
        /etc/ceph: logs
        /etc/glusterfs/glusterd.vol: logs
        /etc/libvirt: logs
        /etc/lvm: logs
        /etc/resolv.conf: logs
        /etc/sudoers: logs
        /etc/sudoers.d: logs
        /var/log/ceph: logs
        /var/log/glusterfs: logs
        /var/log/libvirt: logs
        /var/log/mysql: logs
        /var/log/openvswitch: logs
        /var/log/ovn: logs
        /var/log/postgresql: logs
        /var/log/rabbitmq: logs
        /var/log/unbound.log: logs
        '{{ devstack_base_dir }}/tempest/etc/accounts.yaml': logs
        '{{ devstack_base_dir }}/tempest/etc/tempest.conf': logs
        '{{ devstack_base_dir }}/tempest/tempest.log': logs
        '{{ devstack_conf_dir }}/.localrc.auto': logs
        '{{ devstack_conf_dir }}/.stackenv': logs
        '{{ devstack_conf_dir }}/local.conf': logs
        '{{ devstack_conf_dir }}/localrc': logs
        '{{ devstack_full_log}}': logs
        '{{ devstack_log_dir }}/atop': logs
        '{{ devstack_log_dir }}/devstacklog.txt': logs
        '{{ devstack_log_dir }}/devstacklog.txt.summary': logs
        '{{ devstack_log_dir }}/dstat-csv.log': logs
        '{{ devstack_log_dir }}/qemu.coredump': logs
        '{{ devstack_log_dir }}/tcpdump.pcap': logs
        '{{ devstack_log_dir }}/worlddump-latest.txt': logs
        '{{ stage_dir }}/apache': logs
        '{{ stage_dir }}/apache_config': logs
        '{{ stage_dir }}/audit.log': logs
        '{{ stage_dir }}/core': logs
        '{{ stage_dir }}/deprecations.log': logs
        '{{ stage_dir }}/df.txt': logs
        '{{ stage_dir }}/dpkg-l.txt': logs
        '{{ stage_dir }}/etc': logs
        '{{ stage_dir }}/iptables.txt': logs
        '{{ stage_dir }}/listen53.txt': logs
        '{{ stage_dir }}/mount.txt': logs
        '{{ stage_dir }}/performance.json': logs
        '{{ stage_dir }}/pip2-freeze.txt': logs
        '{{ stage_dir }}/pip3-freeze.txt': logs
        '{{ stage_dir }}/rpm-qa.txt': logs
        '{{ stage_dir }}/services.txt': logs
        '{{ stage_dir }}/stackviz': logs
        '{{ stage_dir }}/verify_tempest_conf.log': logs
        '{{ stage_dir }}/{{ test_results_stage_name }}.html': logs
        '{{ stage_dir }}/{{ test_results_stage_name }}.subunit': logs
      zuul_node:
        az: lab
        cloud: openstack-testing
        external_id: 54660db1-62ad-4850-b903-7a21f4579ffc
        host_id: 7494f74baa07d17789d96d3d24bdd7bcd37fb89e8217586c2be59c98
        interface_ip: 10.4.3.70
        label: os-ubuntu2404-small
        node_properties: {}
        private_ipv4: 10.4.3.70
        private_ipv6: null
        provider: upstream-openstack-ci
        public_ipv4: ''
        public_ipv6: ''
        region: RegionOne
        reuse: false
        slot: null
        uuid: null
      zuul_use_fetch_output: true
  vars:
    configure_swap_size: 8192
    devstack_local_conf:
      post-config:
        $CINDER_CONF:
          storpool:
            storpool_template: virtual
            volume_backend_name: storpool
            volume_driver: cinder.volume.drivers.storpool.StorPoolDriver
        $NEUTRON_CONF:
          DEFAULT:
            global_physnet_mtu: '{{ external_bridge_mtu }}'
      test-config:
        $TEMPEST_CONFIG:
          compute:
            min_compute_nodes: '{{ groups[''compute''] | default([''controller''])
              | length }}'
          service-clients:
            http_timeout: 90
    devstack_localrc:
      ADMIN_PASSWORD: secretadmin
      CINDER_ENABLED_BACKENDS: storpool:storpool
      DATABASE_PASSWORD: secretdatabase
      DEBUG_LIBVIRT_COREDUMPS: true
      ENABLE_FILE_INJECTION: false
      ENABLE_SYSCTL_MEM_TUNING: true
      ENABLE_SYSCTL_NET_TUNING: true
      ENABLE_VOLUME_MULTIATTACH: false
      ENABLE_ZSWAP: true
      ERROR_ON_CLONE: true
      FIXED_RANGE: 10.1.0.0/20
      FLOATING_RANGE: 172.24.5.0/24
      FORCE_CONFIG_DRIVE: true
      GLANCE_USE_IMPORT_WORKFLOW: true
      HOST_IP: '{{ hostvars[''controller''][''nodepool''][''private_ipv4''] }}'
      IMAGE_URLS: http://download.cirros-cloud.net/0.6.2/cirros-0.6.2-x86_64-disk.img,
        http://download.cirros-cloud.net/0.6.1/cirros-0.6.1-x86_64-disk.img
      IPV4_ADDRS_SAFE_TO_USE: 10.1.0.0/20
      LIBVIRT_TYPE: '{{ devstack_libvirt_type | default("qemu") }}'
      LOGFILE: /opt/stack/logs/devstacklog.txt
      LOG_COLOR: false
      NETWORK_GATEWAY: 10.1.0.1
      NOVA_LIBVIRT_TB_CACHE_SIZE: 128
      NOVA_VNC_ENABLED: true
      OVN_DBS_LOG_LEVEL: dbg
      PUBLIC_BRIDGE_MTU: '{{ external_bridge_mtu }}'
      PUBLIC_NETWORK_GATEWAY: 172.24.5.1
      RABBIT_PASSWORD: secretrabbit
      SERVICE_HOST: '{{ hostvars[''controller''][''nodepool''][''private_ipv4''] }}'
      SERVICE_PASSWORD: secretservice
      SWIFT_HASH: 1234123412341234
      SWIFT_REPLICAS: 1
      SWIFT_START_ALL_SERVICES: false
      TEMPEST_EXTEND_ATTACHED_VOLUME: true
      TEMPEST_PLUGINS: cinder-tempest-plugin
      TEMPEST_RUN_VALIDATION: true
      TEMPEST_STORAGE_PROTOCOL: storpool
      TEMPEST_VOLUME_REVERT_TO_SNAPSHOT: true
      TEMPEST_VOLUME_VENDOR: StorPool
      VERBOSE: true
      VERBOSE_NO_TIMESTAMP: true
    devstack_plugins:
      neutron: https://opendev.org/openstack/neutron
    devstack_services:
      base: false
      c-api: true
      c-bak: true
      c-sch: true
      c-vol: true
      dstat: false
      etcd3: true
      file_tracker: true
      g-api: true
      horizon: false
      key: true
      memory_tracker: true
      mysql: true
      n-api: true
      n-api-meta: true
      n-cond: true
      n-cpu: true
      n-novnc: true
      n-sch: true
      openstack-cli-server: true
      ovn-controller: true
      ovn-northd: true
      ovs-vswitchd: true
      ovsdb-server: true
      placement-api: true
      q-ovn-agent: true
      q-svc: true
      rabbit: true
      s-account: true
      s-container: true
      s-object: true
      s-proxy: true
      tempest: true
      tls-proxy: true
    extensions_to_txt:
      auto: true
      conf: true
      localrc: true
      log: true
      stackenv: true
      yaml: true
      yml: true
    local_gerrit: gerrit-openstack-ci.sof-k8s.storpool.net
    os_venv: ~/sp-venv-openstack
    sp_target_release: release
    storpool_connection: block
    tempest_concurrency: 8
    tempest_test_regex: volume
    test_results_stage_name: test_results
    tox_envlist: all
    zuul:
      _inheritance_path:
      - '<Job base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:master}}
        source: config/zuul.d/jobs-base.yaml@master#2>'
      - '<Job sp-shadowed explicit: None implied: {MatchAny:{ImpliedBranchMatcher:master}}
        source: config/zuul.d/sp-aaa-shadow.yaml@master#3>'
      - '<Job openstack-multinode-fips explicit: None implied: {MatchAny:{ImpliedBranchMatcher:master}}
        source: config/zuul.d/sp-aaa-shadow.yaml@master#180>'
      - '<Job devstack-base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:master}}
        source: openstack/devstack/.zuul.yaml@master#368>'
      - '<Job devstack-minimal explicit: None implied: {MatchAny:{ImpliedBranchMatcher:master}}
        source: openstack/devstack/.zuul.yaml@master#502>'
      - '<Job devstack explicit: None implied: {MatchAny:{ImpliedBranchMatcher:master}}
        source: openstack/devstack/.zuul.yaml@master#545>'
      - '<Job devstack-tempest explicit: None implied: {MatchAny:{ImpliedBranchMatcher:master}}
        source: openstack/tempest/zuul.d/base.yaml@master#1>'
      - '<Job tempest-full-py3 explicit: {MatchAny:{BranchMatcher:^.*/(victoria|wallaby)$}}
        implied: None source: openstack/tempest/zuul.d/integrated-gate.yaml@master#63>'
      - '<Job cinder-storpool-tempest explicit: None implied: {MatchAny:{ImpliedBranchMatcher:master}}
        source: config/zuul.d/sp-cinder.yaml@master#74>'
      - '<Job cinder-storpool-tempest explicit: {MatchAny:{BranchMatcher:master}}
        implied: None source: config/zuul.d/sp-cinder.yaml@master#388>'
      ansible_version: '9'
      attempts: 1
      branch: master
      build: 75d6ea26f9564403963aacfe48b6d27d
      build_refs:
      - branch: master
        change: '989836'
        change_message: "Implement graceful shutdown for Cinder services\n\nThree-phase
          graceful shutdown that allows in-flight volume and backup\noperations to
          complete before the pod exits during Kubernetes rolling\nupdates. Covers
          both cinder-volume and cinder-backup services.\n\nThe fix: install SIG_IGN
          for SIGTERM/SIGINT/SIGHUP at the start of\nService.stop(). cinder-volume
          runs as N forked child processes (one per\nbackend) under oslo_service.ProcessLauncher.
          On SIGTERM, oslo_service's\nchild handler calls SignalHandler.clear() which
          resets all handlers to\nSIG_DFL. The parent then sends a second SIGTERM
          via os.kill(child_pid,\nSIGTERM). Without SIG_IGN, the child terminates
          immediately \u2014 even\nthough it's still inside pool.waitall() waiting
          for in-flight RPC\nhandlers to finish.\n\nHow it works:\n\nPhase 1: Skip
          rpcserver.stop(). We do NOT call rpcserver.stop() because\n  it triggers
          an eventlet socket race (\"simultaneous read on fileno\")\n  that disrupts
          outbound HTTP/RPC connections used by in-flight ops.\n  Broker-side consumer
          deregistration happens automatically when the\n  AMQP channel closes at
          process exit. During the gap between SIGTERM\n  and exit, two things protect
          against message loss:\n  - Heartbeat continues during drain, keeping the
          service \"up\" in the\n    DB. The scheduler only stops routing new work
          once service_down_time\n    expires AFTER the process actually exits.\n
          \ - @reject_if_draining unconditionally rejects any late RPC that does\n
          \   arrive, raising ServiceUnavailable so the caller retries on a\n    healthy
          instance.\n\nPhase 2: Block in pool.waitall() until all in-flight RPC handler\n
          \ greenthreads complete their operations. The pool is the rpcserver's\n
          \ _work_executor._pool GreenPool \u2014 we access it directly since we\n
          \ skipped rpcserver.stop().\n\nPhase 3: Stop coordination, call super().stop(),
          cleanup threadpool\n  executor. Process exits cleanly.\n\nSupporting mechanisms:\n-
          Worker entry heartbeat (set_workers decorator in cleanable.py):\n  touches
          worker DB entries every 10s during operations, preventing\n  new pod init_host
          do_cleanup from resetting in-flight volumes to\n  error.\n- do_cleanup freshness
          check (manager.py): skips worker entries updated\n  within service_down_time
          \u2014 only cleans up truly stale entries from\n  crashed processes, not
          entries being actively heartbeated by a\n  draining pod.\n- Backup restore
          heartbeat (backup/manager.py): touches\n  backup.updated_at every 10s during
          restore, preventing new backup\n  pod init_host from triggering BackupRestoreCancel.\n-
          Backup _cleanup_one_backup freshness check: skips backups in\n  creating/restoring
          state if updated_at is recent.\n- Backup _detach_device no-reraise: if detach
          fails during shutdown\n  (e.g. RPC timeout), log the error but do not reraise.
          Data integrity\n  is preserved; dangling export is cleaned on next startup.\n-
          reject_if_draining decorator (volume/manager.py): unconditionally\n  rejects
          new RPC calls on a draining service.\n- CreateVolumeOnFinishTask unconditional
          write: ensures the final\n  status='available' write overwrites any transient
          'error' that the\n  new pod's cleanup may have set during the overlap window.\n\nKey
          design decisions:\n- Heartbeat is NOT suppressed during drain. This keeps
          the service\n  marked \"up\" in the DB, preventing the scheduler from prematurely\n
          \ routing work away and preventing init_host cleanup on the new pod\n  from
          firing too early. The service only goes \"down\" after the\n  process exits
          and misses service_down_time heartbeat cycles.\n- rpcserver.stop() is NOT
          called. Calling it triggers\n  AMQPListener.stop() -> conn.stop_consuming()
          which causes the\n  eventlet socket race. Instead, we let the process exit
          naturally\n  and rely on the OS closing the AMQP socket.\n- The oslo.messaging
          companion patch (review.opendev.org 986243) that\n  adds basic.cancel to
          Connection.stop_consuming() is NOT required.\n  Connection.stop_consuming()
          is never called in cinder's shutdown\n  path because we skip rpcserver.stop().\n\nRequires
          (separate changes):\n- dumb-init --single-child on container commands (ensures\n
          \ ProcessLauncher parent waits for all children before exit)\n- terminationGracePeriodSeconds
          >= graceful_shutdown_timeout on pod spec\n\nChange-Id: Icdd28affc73fd34491b656a68410dce8e46264d4\nSigned-off-by:
          Walter Boring <waboring@hemna.com>\n"
        change_url: https://review.opendev.org/c/openstack/cinder/+/989836
        commit_id: 922f57140ddfc6a2f2373ce32bad7df032606843
        patchset: '7'
        project:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/cinder
          name: openstack/cinder
          short_name: cinder
          src_dir: src/opendev.org/openstack/cinder
        src_dir: src/opendev.org/openstack/cinder
        topic: null
      buildset: 0919ffc78560493a9b0009b48e719a43
      buildset_refs:
      - branch: master
        change: '989836'
        change_message: "Implement graceful shutdown for Cinder services\n\nThree-phase
          graceful shutdown that allows in-flight volume and backup\noperations to
          complete before the pod exits during Kubernetes rolling\nupdates. Covers
          both cinder-volume and cinder-backup services.\n\nThe fix: install SIG_IGN
          for SIGTERM/SIGINT/SIGHUP at the start of\nService.stop(). cinder-volume
          runs as N forked child processes (one per\nbackend) under oslo_service.ProcessLauncher.
          On SIGTERM, oslo_service's\nchild handler calls SignalHandler.clear() which
          resets all handlers to\nSIG_DFL. The parent then sends a second SIGTERM
          via os.kill(child_pid,\nSIGTERM). Without SIG_IGN, the child terminates
          immediately \u2014 even\nthough it's still inside pool.waitall() waiting
          for in-flight RPC\nhandlers to finish.\n\nHow it works:\n\nPhase 1: Skip
          rpcserver.stop(). We do NOT call rpcserver.stop() because\n  it triggers
          an eventlet socket race (\"simultaneous read on fileno\")\n  that disrupts
          outbound HTTP/RPC connections used by in-flight ops.\n  Broker-side consumer
          deregistration happens automatically when the\n  AMQP channel closes at
          process exit. During the gap between SIGTERM\n  and exit, two things protect
          against message loss:\n  - Heartbeat continues during drain, keeping the
          service \"up\" in the\n    DB. The scheduler only stops routing new work
          once service_down_time\n    expires AFTER the process actually exits.\n
          \ - @reject_if_draining unconditionally rejects any late RPC that does\n
          \   arrive, raising ServiceUnavailable so the caller retries on a\n    healthy
          instance.\n\nPhase 2: Block in pool.waitall() until all in-flight RPC handler\n
          \ greenthreads complete their operations. The pool is the rpcserver's\n
          \ _work_executor._pool GreenPool \u2014 we access it directly since we\n
          \ skipped rpcserver.stop().\n\nPhase 3: Stop coordination, call super().stop(),
          cleanup threadpool\n  executor. Process exits cleanly.\n\nSupporting mechanisms:\n-
          Worker entry heartbeat (set_workers decorator in cleanable.py):\n  touches
          worker DB entries every 10s during operations, preventing\n  new pod init_host
          do_cleanup from resetting in-flight volumes to\n  error.\n- do_cleanup freshness
          check (manager.py): skips worker entries updated\n  within service_down_time
          \u2014 only cleans up truly stale entries from\n  crashed processes, not
          entries being actively heartbeated by a\n  draining pod.\n- Backup restore
          heartbeat (backup/manager.py): touches\n  backup.updated_at every 10s during
          restore, preventing new backup\n  pod init_host from triggering BackupRestoreCancel.\n-
          Backup _cleanup_one_backup freshness check: skips backups in\n  creating/restoring
          state if updated_at is recent.\n- Backup _detach_device no-reraise: if detach
          fails during shutdown\n  (e.g. RPC timeout), log the error but do not reraise.
          Data integrity\n  is preserved; dangling export is cleaned on next startup.\n-
          reject_if_draining decorator (volume/manager.py): unconditionally\n  rejects
          new RPC calls on a draining service.\n- CreateVolumeOnFinishTask unconditional
          write: ensures the final\n  status='available' write overwrites any transient
          'error' that the\n  new pod's cleanup may have set during the overlap window.\n\nKey
          design decisions:\n- Heartbeat is NOT suppressed during drain. This keeps
          the service\n  marked \"up\" in the DB, preventing the scheduler from prematurely\n
          \ routing work away and preventing init_host cleanup on the new pod\n  from
          firing too early. The service only goes \"down\" after the\n  process exits
          and misses service_down_time heartbeat cycles.\n- rpcserver.stop() is NOT
          called. Calling it triggers\n  AMQPListener.stop() -> conn.stop_consuming()
          which causes the\n  eventlet socket race. Instead, we let the process exit
          naturally\n  and rely on the OS closing the AMQP socket.\n- The oslo.messaging
          companion patch (review.opendev.org 986243) that\n  adds basic.cancel to
          Connection.stop_consuming() is NOT required.\n  Connection.stop_consuming()
          is never called in cinder's shutdown\n  path because we skip rpcserver.stop().\n\nRequires
          (separate changes):\n- dumb-init --single-child on container commands (ensures\n
          \ ProcessLauncher parent waits for all children before exit)\n- terminationGracePeriodSeconds
          >= graceful_shutdown_timeout on pod spec\n\nChange-Id: Icdd28affc73fd34491b656a68410dce8e46264d4\nSigned-off-by:
          Walter Boring <waboring@hemna.com>\n"
        change_url: https://review.opendev.org/c/openstack/cinder/+/989836
        commit_id: 922f57140ddfc6a2f2373ce32bad7df032606843
        patchset: '7'
        project:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/cinder
          name: openstack/cinder
          short_name: cinder
          src_dir: src/opendev.org/openstack/cinder
        src_dir: src/opendev.org/openstack/cinder
        topic: null
      change: '989836'
      change_message: "Implement graceful shutdown for Cinder services\n\nThree-phase
        graceful shutdown that allows in-flight volume and backup\noperations to complete
        before the pod exits during Kubernetes rolling\nupdates. Covers both cinder-volume
        and cinder-backup services.\n\nThe fix: install SIG_IGN for SIGTERM/SIGINT/SIGHUP
        at the start of\nService.stop(). cinder-volume runs as N forked child processes
        (one per\nbackend) under oslo_service.ProcessLauncher. On SIGTERM, oslo_service's\nchild
        handler calls SignalHandler.clear() which resets all handlers to\nSIG_DFL.
        The parent then sends a second SIGTERM via os.kill(child_pid,\nSIGTERM). Without
        SIG_IGN, the child terminates immediately \u2014 even\nthough it's still inside
        pool.waitall() waiting for in-flight RPC\nhandlers to finish.\n\nHow it works:\n\nPhase
        1: Skip rpcserver.stop(). We do NOT call rpcserver.stop() because\n  it triggers
        an eventlet socket race (\"simultaneous read on fileno\")\n  that disrupts
        outbound HTTP/RPC connections used by in-flight ops.\n  Broker-side consumer
        deregistration happens automatically when the\n  AMQP channel closes at process
        exit. During the gap between SIGTERM\n  and exit, two things protect against
        message loss:\n  - Heartbeat continues during drain, keeping the service \"up\"
        in the\n    DB. The scheduler only stops routing new work once service_down_time\n
        \   expires AFTER the process actually exits.\n  - @reject_if_draining unconditionally
        rejects any late RPC that does\n    arrive, raising ServiceUnavailable so
        the caller retries on a\n    healthy instance.\n\nPhase 2: Block in pool.waitall()
        until all in-flight RPC handler\n  greenthreads complete their operations.
        The pool is the rpcserver's\n  _work_executor._pool GreenPool \u2014 we access
        it directly since we\n  skipped rpcserver.stop().\n\nPhase 3: Stop coordination,
        call super().stop(), cleanup threadpool\n  executor. Process exits cleanly.\n\nSupporting
        mechanisms:\n- Worker entry heartbeat (set_workers decorator in cleanable.py):\n
        \ touches worker DB entries every 10s during operations, preventing\n  new
        pod init_host do_cleanup from resetting in-flight volumes to\n  error.\n-
        do_cleanup freshness check (manager.py): skips worker entries updated\n  within
        service_down_time \u2014 only cleans up truly stale entries from\n  crashed
        processes, not entries being actively heartbeated by a\n  draining pod.\n-
        Backup restore heartbeat (backup/manager.py): touches\n  backup.updated_at
        every 10s during restore, preventing new backup\n  pod init_host from triggering
        BackupRestoreCancel.\n- Backup _cleanup_one_backup freshness check: skips
        backups in\n  creating/restoring state if updated_at is recent.\n- Backup
        _detach_device no-reraise: if detach fails during shutdown\n  (e.g. RPC timeout),
        log the error but do not reraise. Data integrity\n  is preserved; dangling
        export is cleaned on next startup.\n- reject_if_draining decorator (volume/manager.py):
        unconditionally\n  rejects new RPC calls on a draining service.\n- CreateVolumeOnFinishTask
        unconditional write: ensures the final\n  status='available' write overwrites
        any transient 'error' that the\n  new pod's cleanup may have set during the
        overlap window.\n\nKey design decisions:\n- Heartbeat is NOT suppressed during
        drain. This keeps the service\n  marked \"up\" in the DB, preventing the scheduler
        from prematurely\n  routing work away and preventing init_host cleanup on
        the new pod\n  from firing too early. The service only goes \"down\" after
        the\n  process exits and misses service_down_time heartbeat cycles.\n- rpcserver.stop()
        is NOT called. Calling it triggers\n  AMQPListener.stop() -> conn.stop_consuming()
        which causes the\n  eventlet socket race. Instead, we let the process exit
        naturally\n  and rely on the OS closing the AMQP socket.\n- The oslo.messaging
        companion patch (review.opendev.org 986243) that\n  adds basic.cancel to Connection.stop_consuming()
        is NOT required.\n  Connection.stop_consuming() is never called in cinder's
        shutdown\n  path because we skip rpcserver.stop().\n\nRequires (separate changes):\n-
        dumb-init --single-child on container commands (ensures\n  ProcessLauncher
        parent waits for all children before exit)\n- terminationGracePeriodSeconds
        >= graceful_shutdown_timeout on pod spec\n\nChange-Id: Icdd28affc73fd34491b656a68410dce8e46264d4\nSigned-off-by:
        Walter Boring <waboring@hemna.com>\n"
      change_url: https://review.opendev.org/c/openstack/cinder/+/989836
      child_jobs: []
      commit_id: 922f57140ddfc6a2f2373ce32bad7df032606843
      event_id: c5b91bdd9f6c4e77b0623cc5e6de58c2
      executor:
        hostname: zuul-executor-0.zuul-executor.openstack-ci.svc.cluster.local
        inventory_file: /var/lib/zuul/builds/75d6ea26f9564403963aacfe48b6d27d/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/75d6ea26f9564403963aacfe48b6d27d/work/logs
        result_data_file: /var/lib/zuul/builds/75d6ea26f9564403963aacfe48b6d27d/work/results.json
        src_root: /var/lib/zuul/builds/75d6ea26f9564403963aacfe48b6d27d/work/src
        work_root: /var/lib/zuul/builds/75d6ea26f9564403963aacfe48b6d27d/work
      include_vars: []
      items:
      - branch: master
        change: '989836'
        change_message: "Implement graceful shutdown for Cinder services\n\nThree-phase
          graceful shutdown that allows in-flight volume and backup\noperations to
          complete before the pod exits during Kubernetes rolling\nupdates. Covers
          both cinder-volume and cinder-backup services.\n\nThe fix: install SIG_IGN
          for SIGTERM/SIGINT/SIGHUP at the start of\nService.stop(). cinder-volume
          runs as N forked child processes (one per\nbackend) under oslo_service.ProcessLauncher.
          On SIGTERM, oslo_service's\nchild handler calls SignalHandler.clear() which
          resets all handlers to\nSIG_DFL. The parent then sends a second SIGTERM
          via os.kill(child_pid,\nSIGTERM). Without SIG_IGN, the child terminates
          immediately \u2014 even\nthough it's still inside pool.waitall() waiting
          for in-flight RPC\nhandlers to finish.\n\nHow it works:\n\nPhase 1: Skip
          rpcserver.stop(). We do NOT call rpcserver.stop() because\n  it triggers
          an eventlet socket race (\"simultaneous read on fileno\")\n  that disrupts
          outbound HTTP/RPC connections used by in-flight ops.\n  Broker-side consumer
          deregistration happens automatically when the\n  AMQP channel closes at
          process exit. During the gap between SIGTERM\n  and exit, two things protect
          against message loss:\n  - Heartbeat continues during drain, keeping the
          service \"up\" in the\n    DB. The scheduler only stops routing new work
          once service_down_time\n    expires AFTER the process actually exits.\n
          \ - @reject_if_draining unconditionally rejects any late RPC that does\n
          \   arrive, raising ServiceUnavailable so the caller retries on a\n    healthy
          instance.\n\nPhase 2: Block in pool.waitall() until all in-flight RPC handler\n
          \ greenthreads complete their operations. The pool is the rpcserver's\n
          \ _work_executor._pool GreenPool \u2014 we access it directly since we\n
          \ skipped rpcserver.stop().\n\nPhase 3: Stop coordination, call super().stop(),
          cleanup threadpool\n  executor. Process exits cleanly.\n\nSupporting mechanisms:\n-
          Worker entry heartbeat (set_workers decorator in cleanable.py):\n  touches
          worker DB entries every 10s during operations, preventing\n  new pod init_host
          do_cleanup from resetting in-flight volumes to\n  error.\n- do_cleanup freshness
          check (manager.py): skips worker entries updated\n  within service_down_time
          \u2014 only cleans up truly stale entries from\n  crashed processes, not
          entries being actively heartbeated by a\n  draining pod.\n- Backup restore
          heartbeat (backup/manager.py): touches\n  backup.updated_at every 10s during
          restore, preventing new backup\n  pod init_host from triggering BackupRestoreCancel.\n-
          Backup _cleanup_one_backup freshness check: skips backups in\n  creating/restoring
          state if updated_at is recent.\n- Backup _detach_device no-reraise: if detach
          fails during shutdown\n  (e.g. RPC timeout), log the error but do not reraise.
          Data integrity\n  is preserved; dangling export is cleaned on next startup.\n-
          reject_if_draining decorator (volume/manager.py): unconditionally\n  rejects
          new RPC calls on a draining service.\n- CreateVolumeOnFinishTask unconditional
          write: ensures the final\n  status='available' write overwrites any transient
          'error' that the\n  new pod's cleanup may have set during the overlap window.\n\nKey
          design decisions:\n- Heartbeat is NOT suppressed during drain. This keeps
          the service\n  marked \"up\" in the DB, preventing the scheduler from prematurely\n
          \ routing work away and preventing init_host cleanup on the new pod\n  from
          firing too early. The service only goes \"down\" after the\n  process exits
          and misses service_down_time heartbeat cycles.\n- rpcserver.stop() is NOT
          called. Calling it triggers\n  AMQPListener.stop() -> conn.stop_consuming()
          which causes the\n  eventlet socket race. Instead, we let the process exit
          naturally\n  and rely on the OS closing the AMQP socket.\n- The oslo.messaging
          companion patch (review.opendev.org 986243) that\n  adds basic.cancel to
          Connection.stop_consuming() is NOT required.\n  Connection.stop_consuming()
          is never called in cinder's shutdown\n  path because we skip rpcserver.stop().\n\nRequires
          (separate changes):\n- dumb-init --single-child on container commands (ensures\n
          \ ProcessLauncher parent waits for all children before exit)\n- terminationGracePeriodSeconds
          >= graceful_shutdown_timeout on pod spec\n\nChange-Id: Icdd28affc73fd34491b656a68410dce8e46264d4\nSigned-off-by:
          Walter Boring <waboring@hemna.com>\n"
        change_url: https://review.opendev.org/c/openstack/cinder/+/989836
        commit_id: 922f57140ddfc6a2f2373ce32bad7df032606843
        patchset: '7'
        project:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/cinder
          name: openstack/cinder
          short_name: cinder
          src_dir: src/opendev.org/openstack/cinder
        topic: null
      job: cinder-storpool-tempest
      jobtags: []
      max_attempts: 1
      message: SW1wbGVtZW50IGdyYWNlZnVsIHNodXRkb3duIGZvciBDaW5kZXIgc2VydmljZXMKClRocmVlLXBoYXNlIGdyYWNlZnVsIHNodXRkb3duIHRoYXQgYWxsb3dzIGluLWZsaWdodCB2b2x1bWUgYW5kIGJhY2t1cApvcGVyYXRpb25zIHRvIGNvbXBsZXRlIGJlZm9yZSB0aGUgcG9kIGV4aXRzIGR1cmluZyBLdWJlcm5ldGVzIHJvbGxpbmcKdXBkYXRlcy4gQ292ZXJzIGJvdGggY2luZGVyLXZvbHVtZSBhbmQgY2luZGVyLWJhY2t1cCBzZXJ2aWNlcy4KClRoZSBmaXg6IGluc3RhbGwgU0lHX0lHTiBmb3IgU0lHVEVSTS9TSUdJTlQvU0lHSFVQIGF0IHRoZSBzdGFydCBvZgpTZXJ2aWNlLnN0b3AoKS4gY2luZGVyLXZvbHVtZSBydW5zIGFzIE4gZm9ya2VkIGNoaWxkIHByb2Nlc3NlcyAob25lIHBlcgpiYWNrZW5kKSB1bmRlciBvc2xvX3NlcnZpY2UuUHJvY2Vzc0xhdW5jaGVyLiBPbiBTSUdURVJNLCBvc2xvX3NlcnZpY2UncwpjaGlsZCBoYW5kbGVyIGNhbGxzIFNpZ25hbEhhbmRsZXIuY2xlYXIoKSB3aGljaCByZXNldHMgYWxsIGhhbmRsZXJzIHRvClNJR19ERkwuIFRoZSBwYXJlbnQgdGhlbiBzZW5kcyBhIHNlY29uZCBTSUdURVJNIHZpYSBvcy5raWxsKGNoaWxkX3BpZCwKU0lHVEVSTSkuIFdpdGhvdXQgU0lHX0lHTiwgdGhlIGNoaWxkIHRlcm1pbmF0ZXMgaW1tZWRpYXRlbHkg4oCUIGV2ZW4KdGhvdWdoIGl0J3Mgc3RpbGwgaW5zaWRlIHBvb2wud2FpdGFsbCgpIHdhaXRpbmcgZm9yIGluLWZsaWdodCBSUEMKaGFuZGxlcnMgdG8gZmluaXNoLgoKSG93IGl0IHdvcmtzOgoKUGhhc2UgMTogU2tpcCBycGNzZXJ2ZXIuc3RvcCgpLiBXZSBkbyBOT1QgY2FsbCBycGNzZXJ2ZXIuc3RvcCgpIGJlY2F1c2UKICBpdCB0cmlnZ2VycyBhbiBldmVudGxldCBzb2NrZXQgcmFjZSAoInNpbXVsdGFuZW91cyByZWFkIG9uIGZpbGVubyIpCiAgdGhhdCBkaXNydXB0cyBvdXRib3VuZCBIVFRQL1JQQyBjb25uZWN0aW9ucyB1c2VkIGJ5IGluLWZsaWdodCBvcHMuCiAgQnJva2VyLXNpZGUgY29uc3VtZXIgZGVyZWdpc3RyYXRpb24gaGFwcGVucyBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlCiAgQU1RUCBjaGFubmVsIGNsb3NlcyBhdCBwcm9jZXNzIGV4aXQuIER1cmluZyB0aGUgZ2FwIGJldHdlZW4gU0lHVEVSTQogIGFuZCBleGl0LCB0d28gdGhpbmdzIHByb3RlY3QgYWdhaW5zdCBtZXNzYWdlIGxvc3M6CiAgLSBIZWFydGJlYXQgY29udGludWVzIGR1cmluZyBkcmFpbiwga2VlcGluZyB0aGUgc2VydmljZSAidXAiIGluIHRoZQogICAgREIuIFRoZSBzY2hlZHVsZXIgb25seSBzdG9wcyByb3V0aW5nIG5ldyB3b3JrIG9uY2Ugc2VydmljZV9kb3duX3RpbWUKICAgIGV4cGlyZXMgQUZURVIgdGhlIHByb2Nlc3MgYWN0dWFsbHkgZXhpdHMuCiAgLSBAcmVqZWN0X2lmX2RyYWluaW5nIHVuY29uZGl0aW9uYWxseSByZWplY3RzIGFueSBsYXRlIFJQQyB0aGF0IGRvZXMKICAgIGFycml2ZSwgcmFpc2luZyBTZXJ2aWNlVW5hdmFpbGFibGUgc28gdGhlIGNhbGxlciByZXRyaWVzIG9uIGEKICAgIGhlYWx0aHkgaW5zdGFuY2UuCgpQaGFzZSAyOiBCbG9jayBpbiBwb29sLndhaXRhbGwoKSB1bnRpbCBhbGwgaW4tZmxpZ2h0IFJQQyBoYW5kbGVyCiAgZ3JlZW50aHJlYWRzIGNvbXBsZXRlIHRoZWlyIG9wZXJhdGlvbnMuIFRoZSBwb29sIGlzIHRoZSBycGNzZXJ2ZXIncwogIF93b3JrX2V4ZWN1dG9yLl9wb29sIEdyZWVuUG9vbCDigJQgd2UgYWNjZXNzIGl0IGRpcmVjdGx5IHNpbmNlIHdlCiAgc2tpcHBlZCBycGNzZXJ2ZXIuc3RvcCgpLgoKUGhhc2UgMzogU3RvcCBjb29yZGluYXRpb24sIGNhbGwgc3VwZXIoKS5zdG9wKCksIGNsZWFudXAgdGhyZWFkcG9vbAogIGV4ZWN1dG9yLiBQcm9jZXNzIGV4aXRzIGNsZWFubHkuCgpTdXBwb3J0aW5nIG1lY2hhbmlzbXM6Ci0gV29ya2VyIGVudHJ5IGhlYXJ0YmVhdCAoc2V0X3dvcmtlcnMgZGVjb3JhdG9yIGluIGNsZWFuYWJsZS5weSk6CiAgdG91Y2hlcyB3b3JrZXIgREIgZW50cmllcyBldmVyeSAxMHMgZHVyaW5nIG9wZXJhdGlvbnMsIHByZXZlbnRpbmcKICBuZXcgcG9kIGluaXRfaG9zdCBkb19jbGVhbnVwIGZyb20gcmVzZXR0aW5nIGluLWZsaWdodCB2b2x1bWVzIHRvCiAgZXJyb3IuCi0gZG9fY2xlYW51cCBmcmVzaG5lc3MgY2hlY2sgKG1hbmFnZXIucHkpOiBza2lwcyB3b3JrZXIgZW50cmllcyB1cGRhdGVkCiAgd2l0aGluIHNlcnZpY2VfZG93bl90aW1lIOKAlCBvbmx5IGNsZWFucyB1cCB0cnVseSBzdGFsZSBlbnRyaWVzIGZyb20KICBjcmFzaGVkIHByb2Nlc3Nlcywgbm90IGVudHJpZXMgYmVpbmcgYWN0aXZlbHkgaGVhcnRiZWF0ZWQgYnkgYQogIGRyYWluaW5nIHBvZC4KLSBCYWNrdXAgcmVzdG9yZSBoZWFydGJlYXQgKGJhY2t1cC9tYW5hZ2VyLnB5KTogdG91Y2hlcwogIGJhY2t1cC51cGRhdGVkX2F0IGV2ZXJ5IDEwcyBkdXJpbmcgcmVzdG9yZSwgcHJldmVudGluZyBuZXcgYmFja3VwCiAgcG9kIGluaXRfaG9zdCBmcm9tIHRyaWdnZXJpbmcgQmFja3VwUmVzdG9yZUNhbmNlbC4KLSBCYWNrdXAgX2NsZWFudXBfb25lX2JhY2t1cCBmcmVzaG5lc3MgY2hlY2s6IHNraXBzIGJhY2t1cHMgaW4KICBjcmVhdGluZy9yZXN0b3Jpbmcgc3RhdGUgaWYgdXBkYXRlZF9hdCBpcyByZWNlbnQuCi0gQmFja3VwIF9kZXRhY2hfZGV2aWNlIG5vLXJlcmFpc2U6IGlmIGRldGFjaCBmYWlscyBkdXJpbmcgc2h1dGRvd24KICAoZS5nLiBSUEMgdGltZW91dCksIGxvZyB0aGUgZXJyb3IgYnV0IGRvIG5vdCByZXJhaXNlLiBEYXRhIGludGVncml0eQogIGlzIHByZXNlcnZlZDsgZGFuZ2xpbmcgZXhwb3J0IGlzIGNsZWFuZWQgb24gbmV4dCBzdGFydHVwLgotIHJlamVjdF9pZl9kcmFpbmluZyBkZWNvcmF0b3IgKHZvbHVtZS9tYW5hZ2VyLnB5KTogdW5jb25kaXRpb25hbGx5CiAgcmVqZWN0cyBuZXcgUlBDIGNhbGxzIG9uIGEgZHJhaW5pbmcgc2VydmljZS4KLSBDcmVhdGVWb2x1bWVPbkZpbmlzaFRhc2sgdW5jb25kaXRpb25hbCB3cml0ZTogZW5zdXJlcyB0aGUgZmluYWwKICBzdGF0dXM9J2F2YWlsYWJsZScgd3JpdGUgb3ZlcndyaXRlcyBhbnkgdHJhbnNpZW50ICdlcnJvcicgdGhhdCB0aGUKICBuZXcgcG9kJ3MgY2xlYW51cCBtYXkgaGF2ZSBzZXQgZHVyaW5nIHRoZSBvdmVybGFwIHdpbmRvdy4KCktleSBkZXNpZ24gZGVjaXNpb25zOgotIEhlYXJ0YmVhdCBpcyBOT1Qgc3VwcHJlc3NlZCBkdXJpbmcgZHJhaW4uIFRoaXMga2VlcHMgdGhlIHNlcnZpY2UKICBtYXJrZWQgInVwIiBpbiB0aGUgREIsIHByZXZlbnRpbmcgdGhlIHNjaGVkdWxlciBmcm9tIHByZW1hdHVyZWx5CiAgcm91dGluZyB3b3JrIGF3YXkgYW5kIHByZXZlbnRpbmcgaW5pdF9ob3N0IGNsZWFudXAgb24gdGhlIG5ldyBwb2QKICBmcm9tIGZpcmluZyB0b28gZWFybHkuIFRoZSBzZXJ2aWNlIG9ubHkgZ29lcyAiZG93biIgYWZ0ZXIgdGhlCiAgcHJvY2VzcyBleGl0cyBhbmQgbWlzc2VzIHNlcnZpY2VfZG93bl90aW1lIGhlYXJ0YmVhdCBjeWNsZXMuCi0gcnBjc2VydmVyLnN0b3AoKSBpcyBOT1QgY2FsbGVkLiBDYWxsaW5nIGl0IHRyaWdnZXJzCiAgQU1RUExpc3RlbmVyLnN0b3AoKSAtPiBjb25uLnN0b3BfY29uc3VtaW5nKCkgd2hpY2ggY2F1c2VzIHRoZQogIGV2ZW50bGV0IHNvY2tldCByYWNlLiBJbnN0ZWFkLCB3ZSBsZXQgdGhlIHByb2Nlc3MgZXhpdCBuYXR1cmFsbHkKICBhbmQgcmVseSBvbiB0aGUgT1MgY2xvc2luZyB0aGUgQU1RUCBzb2NrZXQuCi0gVGhlIG9zbG8ubWVzc2FnaW5nIGNvbXBhbmlvbiBwYXRjaCAocmV2aWV3Lm9wZW5kZXYub3JnIDk4NjI0MykgdGhhdAogIGFkZHMgYmFzaWMuY2FuY2VsIHRvIENvbm5lY3Rpb24uc3RvcF9jb25zdW1pbmcoKSBpcyBOT1QgcmVxdWlyZWQuCiAgQ29ubmVjdGlvbi5zdG9wX2NvbnN1bWluZygpIGlzIG5ldmVyIGNhbGxlZCBpbiBjaW5kZXIncyBzaHV0ZG93bgogIHBhdGggYmVjYXVzZSB3ZSBza2lwIHJwY3NlcnZlci5zdG9wKCkuCgpSZXF1aXJlcyAoc2VwYXJhdGUgY2hhbmdlcyk6Ci0gZHVtYi1pbml0IC0tc2luZ2xlLWNoaWxkIG9uIGNvbnRhaW5lciBjb21tYW5kcyAoZW5zdXJlcwogIFByb2Nlc3NMYXVuY2hlciBwYXJlbnQgd2FpdHMgZm9yIGFsbCBjaGlsZHJlbiBiZWZvcmUgZXhpdCkKLSB0ZXJtaW5hdGlvbkdyYWNlUGVyaW9kU2Vjb25kcyA+PSBncmFjZWZ1bF9zaHV0ZG93bl90aW1lb3V0IG9uIHBvZCBzcGVjCgpDaGFuZ2UtSWQ6IEljZGQyOGFmZmM3M2ZkMzQ0OTFiNjU2YTY4NDEwZGNlOGU0NjI2NGQ0ClNpZ25lZC1vZmYtYnk6IFdhbHRlciBCb3JpbmcgPHdhYm9yaW5nQGhlbW5hLmNvbT4K
      patchset: '7'
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config:
            canonical_name: gerrit-openstack-ci.sof-k8s.storpool.net/config
            checkout: master
            commit: 72a5bf987308652ef0fc2668dcf1b5f90038cb67
          trusted/project_1/gerrit-openstack-ci.sof-k8s.storpool.net/zuul-jobs:
            canonical_name: gerrit-openstack-ci.sof-k8s.storpool.net/zuul-jobs
            checkout: master
            commit: 9f5c1d680d573485f0ccdb18d2184d4f1d446419
          trusted/project_2/opendev.org/openstack/tempest:
            canonical_name: opendev.org/openstack/tempest
            checkout: master
            commit: 4207546c15b3215e75b9cf8b502c68e2ea772a35
          trusted/project_3/opendev.org/openstack/devstack:
            canonical_name: opendev.org/openstack/devstack
            checkout: master
            commit: 472b1693fd3dc8e3cf98bdefd3a55503750b48aa
          trusted/project_4/opendev.org/openstack/openstack-zuul-jobs:
            canonical_name: opendev.org/openstack/openstack-zuul-jobs
            checkout: master
            commit: aebda82f8822e38db5bbd25ab31ea110792e8c2b
          untrusted/project_0/opendev.org/openstack/devstack:
            canonical_name: opendev.org/openstack/devstack
            checkout: master
            commit: 472b1693fd3dc8e3cf98bdefd3a55503750b48aa
          untrusted/project_1/opendev.org/openstack/openstack-zuul-jobs:
            canonical_name: opendev.org/openstack/openstack-zuul-jobs
            checkout: master
            commit: aebda82f8822e38db5bbd25ab31ea110792e8c2b
          untrusted/project_2/gerrit-openstack-ci.sof-k8s.storpool.net/config:
            canonical_name: gerrit-openstack-ci.sof-k8s.storpool.net/config
            checkout: master
            commit: 72a5bf987308652ef0fc2668dcf1b5f90038cb67
          untrusted/project_3/gerrit-openstack-ci.sof-k8s.storpool.net/zuul-jobs:
            canonical_name: gerrit-openstack-ci.sof-k8s.storpool.net/zuul-jobs
            checkout: master
            commit: 9f5c1d680d573485f0ccdb18d2184d4f1d446419
          untrusted/project_4/opendev.org/openstack/tempest:
            canonical_name: opendev.org/openstack/tempest
            checkout: master
            commit: 4207546c15b3215e75b9cf8b502c68e2ea772a35
        playbooks:
        - path: trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config/playbooks/tempest-and-cinderlib-run.yaml
          roles:
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_0/tempest
            link_target: trusted/project_2/opendev.org/openstack/tempest
            role_path: ansible/playbook_0/role_0/tempest/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_1/devstack
            link_target: trusted/project_3/opendev.org/openstack/devstack
            role_path: ansible/playbook_0/role_1/devstack/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_2/openstack-zuul-jobs
            link_target: trusted/project_4/opendev.org/openstack/openstack-zuul-jobs
            role_path: ansible/playbook_0/role_2/openstack-zuul-jobs/roles
          - checkout: master
            checkout_description: playbook branch
            link_name: ansible/playbook_0/role_3/config
            link_target: trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config
            role_path: ansible/playbook_0/role_3/config/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_4/zuul-jobs
            link_target: trusted/project_1/gerrit-openstack-ci.sof-k8s.storpool.net/zuul-jobs
            role_path: ansible/playbook_0/role_4/zuul-jobs/roles
        post_playbooks:
        - path: trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config/playbooks/setup-openstack-storpool/post.yaml
          roles:
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/post_playbook_0/role_0/tempest
            link_target: trusted/project_2/opendev.org/openstack/tempest
            role_path: ansible/post_playbook_0/role_0/tempest/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/post_playbook_0/role_1/devstack
            link_target: trusted/project_3/opendev.org/openstack/devstack
            role_path: ansible/post_playbook_0/role_1/devstack/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/post_playbook_0/role_2/openstack-zuul-jobs
            link_target: trusted/project_4/opendev.org/openstack/openstack-zuul-jobs
            role_path: ansible/post_playbook_0/role_2/openstack-zuul-jobs/roles
          - checkout: master
            checkout_description: playbook branch
            link_name: ansible/post_playbook_0/role_3/config
            link_target: trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config
            role_path: ansible/post_playbook_0/role_3/config/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/post_playbook_0/role_4/zuul-jobs
            link_target: trusted/project_1/gerrit-openstack-ci.sof-k8s.storpool.net/zuul-jobs
            role_path: ansible/post_playbook_0/role_4/zuul-jobs/roles
        - path: trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config/playbooks/setup-openstack-client/post.yaml
          roles:
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/post_playbook_1/role_0/tempest
            link_target: trusted/project_2/opendev.org/openstack/tempest
            role_path: ansible/post_playbook_1/role_0/tempest/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/post_playbook_1/role_1/devstack
            link_target: trusted/project_3/opendev.org/openstack/devstack
            role_path: ansible/post_playbook_1/role_1/devstack/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/post_playbook_1/role_2/openstack-zuul-jobs
            link_target: trusted/project_4/opendev.org/openstack/openstack-zuul-jobs
            role_path: ansible/post_playbook_1/role_2/openstack-zuul-jobs/roles
          - checkout: master
            checkout_description: playbook branch
            link_name: ansible/post_playbook_1/role_3/config
            link_target: trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config
            role_path: ansible/post_playbook_1/role_3/config/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/post_playbook_1/role_4/zuul-jobs
            link_target: trusted/project_1/gerrit-openstack-ci.sof-k8s.storpool.net/zuul-jobs
            role_path: ansible/post_playbook_1/role_4/zuul-jobs/roles
        - path: untrusted/project_4/opendev.org/openstack/tempest/playbooks/post-tempest.yaml
          roles:
          - checkout: master
            checkout_description: playbook branch
            link_name: ansible/post_playbook_2/role_0/tempest
            link_target: untrusted/project_4/opendev.org/openstack/tempest
            role_path: ansible/post_playbook_2/role_0/tempest/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/post_playbook_2/role_1/devstack
            link_target: untrusted/project_0/opendev.org/openstack/devstack
            role_path: ansible/post_playbook_2/role_1/devstack/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/post_playbook_2/role_2/openstack-zuul-jobs
            link_target: untrusted/project_1/opendev.org/openstack/openstack-zuul-jobs
            role_path: ansible/post_playbook_2/role_2/openstack-zuul-jobs/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/post_playbook_2/role_3/config
            link_target: untrusted/project_2/gerrit-openstack-ci.sof-k8s.storpool.net/config
            role_path: ansible/post_playbook_2/role_3/config/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/post_playbook_2/role_4/zuul-jobs
            link_target: untrusted/project_3/gerrit-openstack-ci.sof-k8s.storpool.net/zuul-jobs
            role_path: ansible/post_playbook_2/role_4/zuul-jobs/roles
        - path: untrusted/project_0/opendev.org/openstack/devstack/playbooks/post.yaml
          roles:
          - checkout: master
            checkout_description: playbook branch
            link_name: ansible/post_playbook_3/role_0/devstack
            link_target: untrusted/project_0/opendev.org/openstack/devstack
            role_path: ansible/post_playbook_3/role_0/devstack/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/post_playbook_3/role_1/openstack-zuul-jobs
            link_target: untrusted/project_1/opendev.org/openstack/openstack-zuul-jobs
            role_path: ansible/post_playbook_3/role_1/openstack-zuul-jobs/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/post_playbook_3/role_2/config
            link_target: untrusted/project_2/gerrit-openstack-ci.sof-k8s.storpool.net/config
            role_path: ansible/post_playbook_3/role_2/config/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/post_playbook_3/role_3/zuul-jobs
            link_target: untrusted/project_3/gerrit-openstack-ci.sof-k8s.storpool.net/zuul-jobs
            role_path: ansible/post_playbook_3/role_3/zuul-jobs/roles
        - path: trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config/playbooks/base/post.yaml
          roles:
          - checkout: master
            checkout_description: playbook branch
            link_name: ansible/post_playbook_4/role_0/config
            link_target: trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config
            role_path: ansible/post_playbook_4/role_0/config/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/post_playbook_4/role_1/zuul-jobs
            link_target: trusted/project_1/gerrit-openstack-ci.sof-k8s.storpool.net/zuul-jobs
            role_path: ansible/post_playbook_4/role_1/zuul-jobs/roles
        pre_playbooks:
        - path: trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config/playbooks/base/pre.yaml
          roles:
          - checkout: master
            checkout_description: playbook branch
            link_name: ansible/pre_playbook_0/role_0/config
            link_target: trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config
            role_path: ansible/pre_playbook_0/role_0/config/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_0/role_1/zuul-jobs
            link_target: trusted/project_1/gerrit-openstack-ci.sof-k8s.storpool.net/zuul-jobs
            role_path: ansible/pre_playbook_0/role_1/zuul-jobs/roles
        - path: untrusted/project_0/opendev.org/openstack/devstack/playbooks/pre.yaml
          roles:
          - checkout: master
            checkout_description: playbook branch
            link_name: ansible/pre_playbook_1/role_0/devstack
            link_target: untrusted/project_0/opendev.org/openstack/devstack
            role_path: ansible/pre_playbook_1/role_0/devstack/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_1/role_1/openstack-zuul-jobs
            link_target: untrusted/project_1/opendev.org/openstack/openstack-zuul-jobs
            role_path: ansible/pre_playbook_1/role_1/openstack-zuul-jobs/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_1/role_2/config
            link_target: untrusted/project_2/gerrit-openstack-ci.sof-k8s.storpool.net/config
            role_path: ansible/pre_playbook_1/role_2/config/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_1/role_3/zuul-jobs
            link_target: untrusted/project_3/gerrit-openstack-ci.sof-k8s.storpool.net/zuul-jobs
            role_path: ansible/pre_playbook_1/role_3/zuul-jobs/roles
        - path: trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config/playbooks/workarounds/01-disable-unattended-upgrades.yaml
          roles:
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_2/role_0/tempest
            link_target: trusted/project_2/opendev.org/openstack/tempest
            role_path: ansible/pre_playbook_2/role_0/tempest/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_2/role_1/devstack
            link_target: trusted/project_3/opendev.org/openstack/devstack
            role_path: ansible/pre_playbook_2/role_1/devstack/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_2/role_2/openstack-zuul-jobs
            link_target: trusted/project_4/opendev.org/openstack/openstack-zuul-jobs
            role_path: ansible/pre_playbook_2/role_2/openstack-zuul-jobs/roles
          - checkout: master
            checkout_description: playbook branch
            link_name: ansible/pre_playbook_2/role_3/config
            link_target: trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config
            role_path: ansible/pre_playbook_2/role_3/config/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_2/role_4/zuul-jobs
            link_target: trusted/project_1/gerrit-openstack-ci.sof-k8s.storpool.net/zuul-jobs
            role_path: ansible/pre_playbook_2/role_4/zuul-jobs/roles
        - path: trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config/playbooks/workarounds/02-install-linux-modules-extra-for-z3fold.yaml
          roles:
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_3/role_0/tempest
            link_target: trusted/project_2/opendev.org/openstack/tempest
            role_path: ansible/pre_playbook_3/role_0/tempest/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_3/role_1/devstack
            link_target: trusted/project_3/opendev.org/openstack/devstack
            role_path: ansible/pre_playbook_3/role_1/devstack/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_3/role_2/openstack-zuul-jobs
            link_target: trusted/project_4/opendev.org/openstack/openstack-zuul-jobs
            role_path: ansible/pre_playbook_3/role_2/openstack-zuul-jobs/roles
          - checkout: master
            checkout_description: playbook branch
            link_name: ansible/pre_playbook_3/role_3/config
            link_target: trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config
            role_path: ansible/pre_playbook_3/role_3/config/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_3/role_4/zuul-jobs
            link_target: trusted/project_1/gerrit-openstack-ci.sof-k8s.storpool.net/zuul-jobs
            role_path: ansible/pre_playbook_3/role_4/zuul-jobs/roles
        - path: trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config/playbooks/workarounds/03-provide-unobtainable-novnc.yaml
          roles:
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_4/role_0/tempest
            link_target: trusted/project_2/opendev.org/openstack/tempest
            role_path: ansible/pre_playbook_4/role_0/tempest/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_4/role_1/devstack
            link_target: trusted/project_3/opendev.org/openstack/devstack
            role_path: ansible/pre_playbook_4/role_1/devstack/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_4/role_2/openstack-zuul-jobs
            link_target: trusted/project_4/opendev.org/openstack/openstack-zuul-jobs
            role_path: ansible/pre_playbook_4/role_2/openstack-zuul-jobs/roles
          - checkout: master
            checkout_description: playbook branch
            link_name: ansible/pre_playbook_4/role_3/config
            link_target: trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config
            role_path: ansible/pre_playbook_4/role_3/config/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_4/role_4/zuul-jobs
            link_target: trusted/project_1/gerrit-openstack-ci.sof-k8s.storpool.net/zuul-jobs
            role_path: ansible/pre_playbook_4/role_4/zuul-jobs/roles
        - path: trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config/playbooks/sp-init.yaml
          roles:
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_5/role_0/tempest
            link_target: trusted/project_2/opendev.org/openstack/tempest
            role_path: ansible/pre_playbook_5/role_0/tempest/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_5/role_1/devstack
            link_target: trusted/project_3/opendev.org/openstack/devstack
            role_path: ansible/pre_playbook_5/role_1/devstack/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_5/role_2/openstack-zuul-jobs
            link_target: trusted/project_4/opendev.org/openstack/openstack-zuul-jobs
            role_path: ansible/pre_playbook_5/role_2/openstack-zuul-jobs/roles
          - checkout: master
            checkout_description: playbook branch
            link_name: ansible/pre_playbook_5/role_3/config
            link_target: trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config
            role_path: ansible/pre_playbook_5/role_3/config/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_5/role_4/zuul-jobs
            link_target: trusted/project_1/gerrit-openstack-ci.sof-k8s.storpool.net/zuul-jobs
            role_path: ansible/pre_playbook_5/role_4/zuul-jobs/roles
        - path: trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config/playbooks/setup-openstack-client/pre.yaml
          roles:
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_6/role_0/tempest
            link_target: trusted/project_2/opendev.org/openstack/tempest
            role_path: ansible/pre_playbook_6/role_0/tempest/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_6/role_1/devstack
            link_target: trusted/project_3/opendev.org/openstack/devstack
            role_path: ansible/pre_playbook_6/role_1/devstack/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_6/role_2/openstack-zuul-jobs
            link_target: trusted/project_4/opendev.org/openstack/openstack-zuul-jobs
            role_path: ansible/pre_playbook_6/role_2/openstack-zuul-jobs/roles
          - checkout: master
            checkout_description: playbook branch
            link_name: ansible/pre_playbook_6/role_3/config
            link_target: trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config
            role_path: ansible/pre_playbook_6/role_3/config/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_6/role_4/zuul-jobs
            link_target: trusted/project_1/gerrit-openstack-ci.sof-k8s.storpool.net/zuul-jobs
            role_path: ansible/pre_playbook_6/role_4/zuul-jobs/roles
        - path: trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config/playbooks/setup-openstack-storpool/pre.yaml
          roles:
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_7/role_0/tempest
            link_target: trusted/project_2/opendev.org/openstack/tempest
            role_path: ansible/pre_playbook_7/role_0/tempest/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_7/role_1/devstack
            link_target: trusted/project_3/opendev.org/openstack/devstack
            role_path: ansible/pre_playbook_7/role_1/devstack/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_7/role_2/openstack-zuul-jobs
            link_target: trusted/project_4/opendev.org/openstack/openstack-zuul-jobs
            role_path: ansible/pre_playbook_7/role_2/openstack-zuul-jobs/roles
          - checkout: master
            checkout_description: playbook branch
            link_name: ansible/pre_playbook_7/role_3/config
            link_target: trusted/project_0/gerrit-openstack-ci.sof-k8s.storpool.net/config
            role_path: ansible/pre_playbook_7/role_3/config/roles
          - checkout: master
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_7/role_4/zuul-jobs
            link_target: trusted/project_1/gerrit-openstack-ci.sof-k8s.storpool.net/zuul-jobs
            role_path: ansible/pre_playbook_7/role_4/zuul-jobs/roles
      post_review: false
      post_timeout: null
      pre_timeout: null
      project:
        canonical_hostname: opendev.org
        canonical_name: opendev.org/openstack/cinder
        name: openstack/cinder
        short_name: cinder
        src_dir: src/opendev.org/openstack/cinder
      projects:
        gerrit-openstack-ci.sof-k8s.storpool.net/novnc/novnc:
          canonical_hostname: gerrit-openstack-ci.sof-k8s.storpool.net
          canonical_name: gerrit-openstack-ci.sof-k8s.storpool.net/novnc/novnc
          checkout: master
          checkout_description: zuul branch
          commit: 8e1ebdffba02e651c399dacef841f8941f6ad6e4
          name: novnc/novnc
          required: true
          short_name: novnc
          src_dir: src/gerrit-openstack-ci.sof-k8s.storpool.net/novnc/novnc
        gerrit-openstack-ci.sof-k8s.storpool.net/sp-osci:
          canonical_hostname: gerrit-openstack-ci.sof-k8s.storpool.net
          canonical_name: gerrit-openstack-ci.sof-k8s.storpool.net/sp-osci
          checkout: master
          checkout_description: zuul branch
          commit: cb3912611f16a86a65198d5c742863bb7491e0e1
          name: sp-osci
          required: true
          short_name: sp-osci
          src_dir: src/gerrit-openstack-ci.sof-k8s.storpool.net/sp-osci
        opendev.org/openstack/cinder:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/cinder
          checkout: master
          checkout_description: zuul branch
          commit: b402d26cb13e98add1b09189a0d802346d59b239
          name: openstack/cinder
          required: true
          short_name: cinder
          src_dir: src/opendev.org/openstack/cinder
        opendev.org/openstack/devstack:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/devstack
          checkout: master
          checkout_description: zuul branch
          commit: 472b1693fd3dc8e3cf98bdefd3a55503750b48aa
          name: openstack/devstack
          required: true
          short_name: devstack
          src_dir: src/opendev.org/openstack/devstack
        opendev.org/openstack/glance:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/glance
          checkout: master
          checkout_description: zuul branch
          commit: eac2fa47f26da3515c7a1e8c91226750517c52d4
          name: openstack/glance
          required: true
          short_name: glance
          src_dir: src/opendev.org/openstack/glance
        opendev.org/openstack/keystone:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/keystone
          checkout: master
          checkout_description: zuul branch
          commit: 2230026f77a8ed50493d2d58be9120910ceb2089
          name: openstack/keystone
          required: true
          short_name: keystone
          src_dir: src/opendev.org/openstack/keystone
        opendev.org/openstack/neutron:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/neutron
          checkout: master
          checkout_description: zuul branch
          commit: b1a6575e5bc27d44ec5e28f796fa86e37f94538c
          name: openstack/neutron
          required: true
          short_name: neutron
          src_dir: src/opendev.org/openstack/neutron
        opendev.org/openstack/nova:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/nova
          checkout: master
          checkout_description: zuul branch
          commit: 67dd46dc49c828c84d7687f17885b1dbab4743b5
          name: openstack/nova
          required: true
          short_name: nova
          src_dir: src/opendev.org/openstack/nova
        opendev.org/openstack/os-test-images:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/os-test-images
          checkout: master
          checkout_description: zuul branch
          commit: 5d0367e03788764f41da8effffa14e3eac513201
          name: openstack/os-test-images
          required: true
          short_name: os-test-images
          src_dir: src/opendev.org/openstack/os-test-images
        opendev.org/openstack/placement:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/placement
          checkout: master
          checkout_description: zuul branch
          commit: d2727844011a8f144c818556ed7e8d43f756576f
          name: openstack/placement
          required: true
          short_name: placement
          src_dir: src/opendev.org/openstack/placement
        opendev.org/openstack/requirements:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/requirements
          checkout: master
          checkout_description: zuul branch
          commit: c4d398d8a67a19709effa318a9127b049671f01c
          name: openstack/requirements
          required: true
          short_name: requirements
          src_dir: src/opendev.org/openstack/requirements
        opendev.org/openstack/swift:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/swift
          checkout: master
          checkout_description: zuul branch
          commit: ca8749f344168ad1c4e07fdfd24e68ca04c57eae
          name: openstack/swift
          required: true
          short_name: swift
          src_dir: src/opendev.org/openstack/swift
        opendev.org/openstack/tempest:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/tempest
          checkout: master
          checkout_description: zuul branch
          commit: 4207546c15b3215e75b9cf8b502c68e2ea772a35
          name: openstack/tempest
          required: true
          short_name: tempest
          src_dir: src/opendev.org/openstack/tempest
      ref: refs/changes/36/989836/7
      resources: {}
      tenant: OpenStack
      timeout: 10800
      topic: null
      voting: true
    zuul_copy_output:
      /etc/ceph: logs
      /etc/glusterfs/glusterd.vol: logs
      /etc/libvirt: logs
      /etc/lvm: logs
      /etc/resolv.conf: logs
      /etc/sudoers: logs
      /etc/sudoers.d: logs
      /var/log/ceph: logs
      /var/log/glusterfs: logs
      /var/log/libvirt: logs
      /var/log/mysql: logs
      /var/log/openvswitch: logs
      /var/log/ovn: logs
      /var/log/postgresql: logs
      /var/log/rabbitmq: logs
      /var/log/unbound.log: logs
      '{{ devstack_base_dir }}/tempest/etc/accounts.yaml': logs
      '{{ devstack_base_dir }}/tempest/etc/tempest.conf': logs
      '{{ devstack_base_dir }}/tempest/tempest.log': logs
      '{{ devstack_conf_dir }}/.localrc.auto': logs
      '{{ devstack_conf_dir }}/.stackenv': logs
      '{{ devstack_conf_dir }}/local.conf': logs
      '{{ devstack_conf_dir }}/localrc': logs
      '{{ devstack_full_log}}': logs
      '{{ devstack_log_dir }}/atop': logs
      '{{ devstack_log_dir }}/devstacklog.txt': logs
      '{{ devstack_log_dir }}/devstacklog.txt.summary': logs
      '{{ devstack_log_dir }}/dstat-csv.log': logs
      '{{ devstack_log_dir }}/qemu.coredump': logs
      '{{ devstack_log_dir }}/tcpdump.pcap': logs
      '{{ devstack_log_dir }}/worlddump-latest.txt': logs
      '{{ stage_dir }}/apache': logs
      '{{ stage_dir }}/apache_config': logs
      '{{ stage_dir }}/audit.log': logs
      '{{ stage_dir }}/core': logs
      '{{ stage_dir }}/deprecations.log': logs
      '{{ stage_dir }}/df.txt': logs
      '{{ stage_dir }}/dpkg-l.txt': logs
      '{{ stage_dir }}/etc': logs
      '{{ stage_dir }}/iptables.txt': logs
      '{{ stage_dir }}/listen53.txt': logs
      '{{ stage_dir }}/mount.txt': logs
      '{{ stage_dir }}/performance.json': logs
      '{{ stage_dir }}/pip2-freeze.txt': logs
      '{{ stage_dir }}/pip3-freeze.txt': logs
      '{{ stage_dir }}/rpm-qa.txt': logs
      '{{ stage_dir }}/services.txt': logs
      '{{ stage_dir }}/stackviz': logs
      '{{ stage_dir }}/verify_tempest_conf.log': logs
      '{{ stage_dir }}/{{ test_results_stage_name }}.html': logs
      '{{ stage_dir }}/{{ test_results_stage_name }}.subunit': logs
    zuul_use_fetch_output: true
