all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fec1:f64
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 6cb90099-fba1-4579-9185-eabc6c817519
        host_id: 55633341e2323245483187cac115f046b03a9f9bdd80b43c7e9345ac
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fec1:f64
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.7.78
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.143
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fec1:f64
        region: null
        slot: null
  vars:
    zuul:
      _inheritance_path:
      - '<Job base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-config/zuul.d/jobs.yaml@main#2>'
      - '<Job openstack-simple-stress-test explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/openstack-simple-stress/.zuul.yaml@main#2>'
      - '<Job openstack-simple-stress-test explicit: None implied: None source: osism/openstack-simple-stress/.zuul.yaml@main#11>'
      ansible_version: '9'
      attempts: 3
      branch: main
      build: e015b91588794e53af9b5c1aa2564fee
      build_refs:
      - branch: main
        change: '296'
        change_message: "chore(deps): update dependency urllib3 to v2.7.0 [security]\n\nThis
          PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/)
          | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n|
          [urllib3](https://redirect.github.com/urllib3/urllib3) ([changelog](https://redirect.github.com/urllib3/urllib3/blob/main/CHANGES.rst))
          | `==2.6.3` \u2192 `==2.7.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/urllib3/2.7.0?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/urllib3/2.6.3/2.7.0?slim=true)
          |\n\n---\n\n### urllib3: Decompression-bomb safeguards bypassed in parts
          of the streaming API\n[CVE-2026-44432](https://nvd.nist.gov/vuln/detail/CVE-2026-44432)
          / [GHSA-mf9v-mfxr-j63j](https://redirect.github.com/advisories/GHSA-mf9v-mfxr-j63j)\n\n<details>\n<summary>More
          information</summary>\n\n#### Details\n##### Impact\n\nurllib3's [streaming
          API](https://urllib3.readthedocs.io/en/2.7.0/advanced-usage.html#streaming-and-i-o)
          is designed for the efficient handling of large HTTP responses by reading
          the content in chunks, rather than loading the entire response body into
          memory at once.\n\nurllib3 can perform decompression based on the HTTP `Content-Encoding`
          header (e.g., `gzip`, `deflate`, `br`, or `zstd`). When using the streaming
          API since version 2.6.0, the library decompresses only the necessary bytes,
          enabling partial content consumption.\n\nHowever, urllib3 before version
          2.7.0 could still decompress the whole response instead of the requested
          portion in two cases:\n1. During the second `HTTPResponse.read(amt=N)` call
          when the response was decompressed using the official [Brotli](https://pypi.org/project/brotli/)
          library.\n2. When `HTTPResponse.drain_conn()` was called after the response
          had been read and decompressed partially (compression algorithm did not
          matter here).\n\nThese issues could cause urllib3 to fully decode a small
          amount of highly compressed data in a single operation. This could result
          in excessive resource consumption (high CPU usage and massive memory allocation
          for the decompressed data; CWE-409) on the client side.\n\n##### Affected
          usages\n\nApplications and libraries using urllib3 versions earlier than
          2.7.0 may be affected when streaming compressed responses from untrusted
          sources in either of these cases, unless decompression is explicitly disabled:\n\n1.
          A response encoded with `br` is read incrementally with at least two `HTTPResponse.read(amt=N)`
          or `HTTPResponse.stream(amt=N)` calls while using the official [Brotli](https://pypi.org/project/brotli/)
          library.\n2. `HTTPResponse.drain_conn()` is called after response decompression
          has already started.\n\n##### Remediation\n\nUpgrade to at least urllib3
          version 2.7.0 in which the library:\n1. Is more efficient for reads with
          Brotli.\n2. Always skips decompression for `HTTPResponse.drain_conn()`.\n\nIf
          upgrading is not immediately possible, the following workarounds may reduce
          exposure in specific cases:\n1. For the Brotli-specific issue only, switch
          from [brotli](https://pypi.org/project/brotli/) to [brotlicffi](https://pypi.org/project/brotlicffi/)
          until you can upgrade urllib3; the official Brotli package is affected because
          of [https://github.com/google/brotli/issues/1396](https://redirect.github.com/google/brotli/issues/1396).\n2.
          If your code explicitly calls `HTTPResponse.drain_conn()`, call `HTTPResponse.close()`
          instead when connection reuse is not important.\n\n##### Credits\n\nThe
          Brotli-specific issue was reported by @&#8203;kimkou2024.\n`HTTPResponse.drain_conn()`
          inefficiency was reported by @&#8203;Cycloctane.\n\n#### Severity\n- CVSS
          Score: 8.9 / 10 (High)\n- Vector String: `CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H`\n\n####
          References\n- [https://github.com/urllib3/urllib3/security/advisories/GHSA-mf9v-mfxr-j63j](https://redirect.github.com/urllib3/urllib3/security/advisories/GHSA-mf9v-mfxr-j63j)\n-
          [https://github.com/advisories/GHSA-mf9v-mfxr-j63j](https://redirect.github.com/advisories/GHSA-mf9v-mfxr-j63j)\n\nThis
          data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-mf9v-mfxr-j63j)
          ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).\n</details>\n\n---\n\n###
          Release Notes\n\n<details>\n<summary>urllib3/urllib3 (urllib3)</summary>\n\n###
          [`v2.7.0`](https://redirect.github.com/urllib3/urllib3/blob/HEAD/CHANGES.rst#270-2026-05-07)\n\n[Compare
          Source](https://redirect.github.com/urllib3/urllib3/compare/2.6.3...2.7.0)\n\n\\=======================\n\n##
          Security\n\nAddressed high-severity security issues.\nImpact was limited
          to specific use cases detailed in the accompanying\nadvisories; overall
          user exposure was estimated to be marginal.\n\n- Decompression-bomb safeguards
          of the streaming API were bypassed:\n\n  1. When `HTTPResponse.drain_conn()`
          was called after the response had been\n     read and decompressed partially.\n
          \ 2. During the second `HTTPResponse.read(amt=N)` or\n     `HTTPResponse.stream(amt=N)`
          call when the response was decompressed\n     using the official `Brotli
          <https://pypi.org/project/brotli/>`\\_\\_ library.\n\n  See `GHSA-mf9v-mfxr-j63j
          <https://github.com/urllib3/urllib3/security/advisories/GHSA-mf9v-mfxr-j63j>`\\_\\_\n
          \ for details.\n\n- HTTP pools created using `ProxyManager.connection_from_url`
          did not strip\n  sensitive headers specified in `Retry.remove_headers_on_redirect`
          when\n  redirecting to a different host.\n  (`GHSA-qccp-gfcp-xxvc <https://github.com/urllib3/urllib3/security/advisories/GHSA-qccp-gfcp-xxvc>`\\_\\_)\n\n##
          Deprecations and Removals\n\n- Used `FutureWarning` instead of `DeprecationWarning`
          for better\n  visibility of existing deprecation notices. Rescheduled the
          removal of\n  deprecated features to version 3.0.\n  (`#&#8203;3763 <https://github.com/urllib3/urllib3/issues/3763>`\\_\\_)\n-
          Removed support for end-of-life Python 3.9.\n  (`#&#8203;3720 <https://github.com/urllib3/urllib3/issues/3720>`\\_\\_)\n-
          Removed support for end-of-life PyPy3.10.\n  (`#&#8203;4979 <https://github.com/urllib3/urllib3/issues/4979>`\\_\\_)\n-
          Bumped the minimum supported pyOpenSSL version to 19.0.0.\n  (`#&#8203;3777
          <https://github.com/urllib3/urllib3/issues/3777>`\\_\\_)\n\n## Bugfixes\n\n-
          Fixed a bug where `HTTPResponse.read(amt=None)` was ignoring decompressed\n
          \ data buffered from previous partial reads.\n  (`#&#8203;3636 <https://github.com/urllib3/urllib3/issues/3636>`\\_\\_)\n-
          Fixed a bug where `HTTPResponse.read()` could cache only part of the\n  response
          after a partial read when `cache_content=True`.\n  (`#&#8203;4967 <https://github.com/urllib3/urllib3/issues/4967>`\\_\\_)\n-
          Fixed `HTTPResponse.stream()` and `HTTPResponse.read_chunked()` to handle\n
          \ `amt=0`.\n  (`#&#8203;3793 <https://github.com/urllib3/urllib3/issues/3793>`\\_\\_)\n-
          Updated `_TYPE_BODY` type alias to include missing `Iterable[str]`,\n  matching
          the documented and runtime behavior of chunked request bodies.\n  (`#&#8203;3798
          <https://github.com/urllib3/urllib3/issues/3798>`\\_\\_)\n- Fixed `LocationParseError`
          when paths resembling schemeless URIs were\n  passed to `HTTPConnectionPool.urlopen()`.\n
          \ (`#&#8203;3352 <https://github.com/urllib3/urllib3/issues/3352>`\\_\\_)\n-
          Fixed `BaseHTTPResponse.readinto()` type annotation to accept\n  `memoryview`
          in addition to `bytearray`, matching the\n  `io.RawIOBase.readinto` contract
          and enabling use with\n  `io.BufferedReader` without type errors.\n  (`#&#8203;3764
          <https://github.com/urllib3/urllib3/issues/3764>`\\_\\_)\n\n</details>\n\n---\n\n###
          Configuration\n\n\U0001F4C5 **Schedule**: (UTC)\n\n- Branch creation\n  -
          \"\"\n- Automerge\n  - At any time (no schedule defined)\n\n\U0001F6A6 **Automerge**:
          Disabled by config. Please merge this manually once you are satisfied.\n\n\u267B
          **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry
          checkbox.\n\n\U0001F515 **Ignore**: Close this PR and you won't be reminded
          about this update again.\n\n---\n\n - [ ] <!-- rebase-check -->If you want
          to rebase/retry this PR, check this box\n\n---\n\nThis PR was generated
          by [Mend Renovate](https://mend.io/renovate/). View the [repository job
          log](https://developer.mend.io/github/osism/openstack-simple-stress).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjE1OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZSJdfQ==-->\n"
        change_url: https://github.com/osism/openstack-simple-stress/pull/296
        commit_id: 1288e6093d73110ac4ce6d2e4e0d3b78c829b5bf
        patchset: 1288e6093d73110ac4ce6d2e4e0d3b78c829b5bf
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/openstack-simple-stress
          name: osism/openstack-simple-stress
          short_name: openstack-simple-stress
        src_dir: src/github.com/osism/openstack-simple-stress
        topic: null
      buildset: a06aeae57a384987b926d51d7354d87b
      buildset_refs:
      - branch: main
        change: '296'
        change_message: "chore(deps): update dependency urllib3 to v2.7.0 [security]\n\nThis
          PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/)
          | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n|
          [urllib3](https://redirect.github.com/urllib3/urllib3) ([changelog](https://redirect.github.com/urllib3/urllib3/blob/main/CHANGES.rst))
          | `==2.6.3` \u2192 `==2.7.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/urllib3/2.7.0?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/urllib3/2.6.3/2.7.0?slim=true)
          |\n\n---\n\n### urllib3: Decompression-bomb safeguards bypassed in parts
          of the streaming API\n[CVE-2026-44432](https://nvd.nist.gov/vuln/detail/CVE-2026-44432)
          / [GHSA-mf9v-mfxr-j63j](https://redirect.github.com/advisories/GHSA-mf9v-mfxr-j63j)\n\n<details>\n<summary>More
          information</summary>\n\n#### Details\n##### Impact\n\nurllib3's [streaming
          API](https://urllib3.readthedocs.io/en/2.7.0/advanced-usage.html#streaming-and-i-o)
          is designed for the efficient handling of large HTTP responses by reading
          the content in chunks, rather than loading the entire response body into
          memory at once.\n\nurllib3 can perform decompression based on the HTTP `Content-Encoding`
          header (e.g., `gzip`, `deflate`, `br`, or `zstd`). When using the streaming
          API since version 2.6.0, the library decompresses only the necessary bytes,
          enabling partial content consumption.\n\nHowever, urllib3 before version
          2.7.0 could still decompress the whole response instead of the requested
          portion in two cases:\n1. During the second `HTTPResponse.read(amt=N)` call
          when the response was decompressed using the official [Brotli](https://pypi.org/project/brotli/)
          library.\n2. When `HTTPResponse.drain_conn()` was called after the response
          had been read and decompressed partially (compression algorithm did not
          matter here).\n\nThese issues could cause urllib3 to fully decode a small
          amount of highly compressed data in a single operation. This could result
          in excessive resource consumption (high CPU usage and massive memory allocation
          for the decompressed data; CWE-409) on the client side.\n\n##### Affected
          usages\n\nApplications and libraries using urllib3 versions earlier than
          2.7.0 may be affected when streaming compressed responses from untrusted
          sources in either of these cases, unless decompression is explicitly disabled:\n\n1.
          A response encoded with `br` is read incrementally with at least two `HTTPResponse.read(amt=N)`
          or `HTTPResponse.stream(amt=N)` calls while using the official [Brotli](https://pypi.org/project/brotli/)
          library.\n2. `HTTPResponse.drain_conn()` is called after response decompression
          has already started.\n\n##### Remediation\n\nUpgrade to at least urllib3
          version 2.7.0 in which the library:\n1. Is more efficient for reads with
          Brotli.\n2. Always skips decompression for `HTTPResponse.drain_conn()`.\n\nIf
          upgrading is not immediately possible, the following workarounds may reduce
          exposure in specific cases:\n1. For the Brotli-specific issue only, switch
          from [brotli](https://pypi.org/project/brotli/) to [brotlicffi](https://pypi.org/project/brotlicffi/)
          until you can upgrade urllib3; the official Brotli package is affected because
          of [https://github.com/google/brotli/issues/1396](https://redirect.github.com/google/brotli/issues/1396).\n2.
          If your code explicitly calls `HTTPResponse.drain_conn()`, call `HTTPResponse.close()`
          instead when connection reuse is not important.\n\n##### Credits\n\nThe
          Brotli-specific issue was reported by @&#8203;kimkou2024.\n`HTTPResponse.drain_conn()`
          inefficiency was reported by @&#8203;Cycloctane.\n\n#### Severity\n- CVSS
          Score: 8.9 / 10 (High)\n- Vector String: `CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H`\n\n####
          References\n- [https://github.com/urllib3/urllib3/security/advisories/GHSA-mf9v-mfxr-j63j](https://redirect.github.com/urllib3/urllib3/security/advisories/GHSA-mf9v-mfxr-j63j)\n-
          [https://github.com/advisories/GHSA-mf9v-mfxr-j63j](https://redirect.github.com/advisories/GHSA-mf9v-mfxr-j63j)\n\nThis
          data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-mf9v-mfxr-j63j)
          ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).\n</details>\n\n---\n\n###
          Release Notes\n\n<details>\n<summary>urllib3/urllib3 (urllib3)</summary>\n\n###
          [`v2.7.0`](https://redirect.github.com/urllib3/urllib3/blob/HEAD/CHANGES.rst#270-2026-05-07)\n\n[Compare
          Source](https://redirect.github.com/urllib3/urllib3/compare/2.6.3...2.7.0)\n\n\\=======================\n\n##
          Security\n\nAddressed high-severity security issues.\nImpact was limited
          to specific use cases detailed in the accompanying\nadvisories; overall
          user exposure was estimated to be marginal.\n\n- Decompression-bomb safeguards
          of the streaming API were bypassed:\n\n  1. When `HTTPResponse.drain_conn()`
          was called after the response had been\n     read and decompressed partially.\n
          \ 2. During the second `HTTPResponse.read(amt=N)` or\n     `HTTPResponse.stream(amt=N)`
          call when the response was decompressed\n     using the official `Brotli
          <https://pypi.org/project/brotli/>`\\_\\_ library.\n\n  See `GHSA-mf9v-mfxr-j63j
          <https://github.com/urllib3/urllib3/security/advisories/GHSA-mf9v-mfxr-j63j>`\\_\\_\n
          \ for details.\n\n- HTTP pools created using `ProxyManager.connection_from_url`
          did not strip\n  sensitive headers specified in `Retry.remove_headers_on_redirect`
          when\n  redirecting to a different host.\n  (`GHSA-qccp-gfcp-xxvc <https://github.com/urllib3/urllib3/security/advisories/GHSA-qccp-gfcp-xxvc>`\\_\\_)\n\n##
          Deprecations and Removals\n\n- Used `FutureWarning` instead of `DeprecationWarning`
          for better\n  visibility of existing deprecation notices. Rescheduled the
          removal of\n  deprecated features to version 3.0.\n  (`#&#8203;3763 <https://github.com/urllib3/urllib3/issues/3763>`\\_\\_)\n-
          Removed support for end-of-life Python 3.9.\n  (`#&#8203;3720 <https://github.com/urllib3/urllib3/issues/3720>`\\_\\_)\n-
          Removed support for end-of-life PyPy3.10.\n  (`#&#8203;4979 <https://github.com/urllib3/urllib3/issues/4979>`\\_\\_)\n-
          Bumped the minimum supported pyOpenSSL version to 19.0.0.\n  (`#&#8203;3777
          <https://github.com/urllib3/urllib3/issues/3777>`\\_\\_)\n\n## Bugfixes\n\n-
          Fixed a bug where `HTTPResponse.read(amt=None)` was ignoring decompressed\n
          \ data buffered from previous partial reads.\n  (`#&#8203;3636 <https://github.com/urllib3/urllib3/issues/3636>`\\_\\_)\n-
          Fixed a bug where `HTTPResponse.read()` could cache only part of the\n  response
          after a partial read when `cache_content=True`.\n  (`#&#8203;4967 <https://github.com/urllib3/urllib3/issues/4967>`\\_\\_)\n-
          Fixed `HTTPResponse.stream()` and `HTTPResponse.read_chunked()` to handle\n
          \ `amt=0`.\n  (`#&#8203;3793 <https://github.com/urllib3/urllib3/issues/3793>`\\_\\_)\n-
          Updated `_TYPE_BODY` type alias to include missing `Iterable[str]`,\n  matching
          the documented and runtime behavior of chunked request bodies.\n  (`#&#8203;3798
          <https://github.com/urllib3/urllib3/issues/3798>`\\_\\_)\n- Fixed `LocationParseError`
          when paths resembling schemeless URIs were\n  passed to `HTTPConnectionPool.urlopen()`.\n
          \ (`#&#8203;3352 <https://github.com/urllib3/urllib3/issues/3352>`\\_\\_)\n-
          Fixed `BaseHTTPResponse.readinto()` type annotation to accept\n  `memoryview`
          in addition to `bytearray`, matching the\n  `io.RawIOBase.readinto` contract
          and enabling use with\n  `io.BufferedReader` without type errors.\n  (`#&#8203;3764
          <https://github.com/urllib3/urllib3/issues/3764>`\\_\\_)\n\n</details>\n\n---\n\n###
          Configuration\n\n\U0001F4C5 **Schedule**: (UTC)\n\n- Branch creation\n  -
          \"\"\n- Automerge\n  - At any time (no schedule defined)\n\n\U0001F6A6 **Automerge**:
          Disabled by config. Please merge this manually once you are satisfied.\n\n\u267B
          **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry
          checkbox.\n\n\U0001F515 **Ignore**: Close this PR and you won't be reminded
          about this update again.\n\n---\n\n - [ ] <!-- rebase-check -->If you want
          to rebase/retry this PR, check this box\n\n---\n\nThis PR was generated
          by [Mend Renovate](https://mend.io/renovate/). View the [repository job
          log](https://developer.mend.io/github/osism/openstack-simple-stress).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjE1OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZSJdfQ==-->\n"
        change_url: https://github.com/osism/openstack-simple-stress/pull/296
        commit_id: 1288e6093d73110ac4ce6d2e4e0d3b78c829b5bf
        patchset: 1288e6093d73110ac4ce6d2e4e0d3b78c829b5bf
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/openstack-simple-stress
          name: osism/openstack-simple-stress
          short_name: openstack-simple-stress
        src_dir: src/github.com/osism/openstack-simple-stress
        topic: null
      change: '296'
      change_message: "chore(deps): update dependency urllib3 to v2.7.0 [security]\n\nThis
        PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/)
        | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n|
        [urllib3](https://redirect.github.com/urllib3/urllib3) ([changelog](https://redirect.github.com/urllib3/urllib3/blob/main/CHANGES.rst))
        | `==2.6.3` \u2192 `==2.7.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/urllib3/2.7.0?slim=true)
        | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/urllib3/2.6.3/2.7.0?slim=true)
        |\n\n---\n\n### urllib3: Decompression-bomb safeguards bypassed in parts of
        the streaming API\n[CVE-2026-44432](https://nvd.nist.gov/vuln/detail/CVE-2026-44432)
        / [GHSA-mf9v-mfxr-j63j](https://redirect.github.com/advisories/GHSA-mf9v-mfxr-j63j)\n\n<details>\n<summary>More
        information</summary>\n\n#### Details\n##### Impact\n\nurllib3's [streaming
        API](https://urllib3.readthedocs.io/en/2.7.0/advanced-usage.html#streaming-and-i-o)
        is designed for the efficient handling of large HTTP responses by reading
        the content in chunks, rather than loading the entire response body into memory
        at once.\n\nurllib3 can perform decompression based on the HTTP `Content-Encoding`
        header (e.g., `gzip`, `deflate`, `br`, or `zstd`). When using the streaming
        API since version 2.6.0, the library decompresses only the necessary bytes,
        enabling partial content consumption.\n\nHowever, urllib3 before version 2.7.0
        could still decompress the whole response instead of the requested portion
        in two cases:\n1. During the second `HTTPResponse.read(amt=N)` call when the
        response was decompressed using the official [Brotli](https://pypi.org/project/brotli/)
        library.\n2. When `HTTPResponse.drain_conn()` was called after the response
        had been read and decompressed partially (compression algorithm did not matter
        here).\n\nThese issues could cause urllib3 to fully decode a small amount
        of highly compressed data in a single operation. This could result in excessive
        resource consumption (high CPU usage and massive memory allocation for the
        decompressed data; CWE-409) on the client side.\n\n##### Affected usages\n\nApplications
        and libraries using urllib3 versions earlier than 2.7.0 may be affected when
        streaming compressed responses from untrusted sources in either of these cases,
        unless decompression is explicitly disabled:\n\n1. A response encoded with
        `br` is read incrementally with at least two `HTTPResponse.read(amt=N)` or
        `HTTPResponse.stream(amt=N)` calls while using the official [Brotli](https://pypi.org/project/brotli/)
        library.\n2. `HTTPResponse.drain_conn()` is called after response decompression
        has already started.\n\n##### Remediation\n\nUpgrade to at least urllib3 version
        2.7.0 in which the library:\n1. Is more efficient for reads with Brotli.\n2.
        Always skips decompression for `HTTPResponse.drain_conn()`.\n\nIf upgrading
        is not immediately possible, the following workarounds may reduce exposure
        in specific cases:\n1. For the Brotli-specific issue only, switch from [brotli](https://pypi.org/project/brotli/)
        to [brotlicffi](https://pypi.org/project/brotlicffi/) until you can upgrade
        urllib3; the official Brotli package is affected because of [https://github.com/google/brotli/issues/1396](https://redirect.github.com/google/brotli/issues/1396).\n2.
        If your code explicitly calls `HTTPResponse.drain_conn()`, call `HTTPResponse.close()`
        instead when connection reuse is not important.\n\n##### Credits\n\nThe Brotli-specific
        issue was reported by @&#8203;kimkou2024.\n`HTTPResponse.drain_conn()` inefficiency
        was reported by @&#8203;Cycloctane.\n\n#### Severity\n- CVSS Score: 8.9 /
        10 (High)\n- Vector String: `CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H`\n\n####
        References\n- [https://github.com/urllib3/urllib3/security/advisories/GHSA-mf9v-mfxr-j63j](https://redirect.github.com/urllib3/urllib3/security/advisories/GHSA-mf9v-mfxr-j63j)\n-
        [https://github.com/advisories/GHSA-mf9v-mfxr-j63j](https://redirect.github.com/advisories/GHSA-mf9v-mfxr-j63j)\n\nThis
        data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-mf9v-mfxr-j63j)
        ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).\n</details>\n\n---\n\n###
        Release Notes\n\n<details>\n<summary>urllib3/urllib3 (urllib3)</summary>\n\n###
        [`v2.7.0`](https://redirect.github.com/urllib3/urllib3/blob/HEAD/CHANGES.rst#270-2026-05-07)\n\n[Compare
        Source](https://redirect.github.com/urllib3/urllib3/compare/2.6.3...2.7.0)\n\n\\=======================\n\n##
        Security\n\nAddressed high-severity security issues.\nImpact was limited to
        specific use cases detailed in the accompanying\nadvisories; overall user
        exposure was estimated to be marginal.\n\n- Decompression-bomb safeguards
        of the streaming API were bypassed:\n\n  1. When `HTTPResponse.drain_conn()`
        was called after the response had been\n     read and decompressed partially.\n
        \ 2. During the second `HTTPResponse.read(amt=N)` or\n     `HTTPResponse.stream(amt=N)`
        call when the response was decompressed\n     using the official `Brotli <https://pypi.org/project/brotli/>`\\_\\_
        library.\n\n  See `GHSA-mf9v-mfxr-j63j <https://github.com/urllib3/urllib3/security/advisories/GHSA-mf9v-mfxr-j63j>`\\_\\_\n
        \ for details.\n\n- HTTP pools created using `ProxyManager.connection_from_url`
        did not strip\n  sensitive headers specified in `Retry.remove_headers_on_redirect`
        when\n  redirecting to a different host.\n  (`GHSA-qccp-gfcp-xxvc <https://github.com/urllib3/urllib3/security/advisories/GHSA-qccp-gfcp-xxvc>`\\_\\_)\n\n##
        Deprecations and Removals\n\n- Used `FutureWarning` instead of `DeprecationWarning`
        for better\n  visibility of existing deprecation notices. Rescheduled the
        removal of\n  deprecated features to version 3.0.\n  (`#&#8203;3763 <https://github.com/urllib3/urllib3/issues/3763>`\\_\\_)\n-
        Removed support for end-of-life Python 3.9.\n  (`#&#8203;3720 <https://github.com/urllib3/urllib3/issues/3720>`\\_\\_)\n-
        Removed support for end-of-life PyPy3.10.\n  (`#&#8203;4979 <https://github.com/urllib3/urllib3/issues/4979>`\\_\\_)\n-
        Bumped the minimum supported pyOpenSSL version to 19.0.0.\n  (`#&#8203;3777
        <https://github.com/urllib3/urllib3/issues/3777>`\\_\\_)\n\n## Bugfixes\n\n-
        Fixed a bug where `HTTPResponse.read(amt=None)` was ignoring decompressed\n
        \ data buffered from previous partial reads.\n  (`#&#8203;3636 <https://github.com/urllib3/urllib3/issues/3636>`\\_\\_)\n-
        Fixed a bug where `HTTPResponse.read()` could cache only part of the\n  response
        after a partial read when `cache_content=True`.\n  (`#&#8203;4967 <https://github.com/urllib3/urllib3/issues/4967>`\\_\\_)\n-
        Fixed `HTTPResponse.stream()` and `HTTPResponse.read_chunked()` to handle\n
        \ `amt=0`.\n  (`#&#8203;3793 <https://github.com/urllib3/urllib3/issues/3793>`\\_\\_)\n-
        Updated `_TYPE_BODY` type alias to include missing `Iterable[str]`,\n  matching
        the documented and runtime behavior of chunked request bodies.\n  (`#&#8203;3798
        <https://github.com/urllib3/urllib3/issues/3798>`\\_\\_)\n- Fixed `LocationParseError`
        when paths resembling schemeless URIs were\n  passed to `HTTPConnectionPool.urlopen()`.\n
        \ (`#&#8203;3352 <https://github.com/urllib3/urllib3/issues/3352>`\\_\\_)\n-
        Fixed `BaseHTTPResponse.readinto()` type annotation to accept\n  `memoryview`
        in addition to `bytearray`, matching the\n  `io.RawIOBase.readinto` contract
        and enabling use with\n  `io.BufferedReader` without type errors.\n  (`#&#8203;3764
        <https://github.com/urllib3/urllib3/issues/3764>`\\_\\_)\n\n</details>\n\n---\n\n###
        Configuration\n\n\U0001F4C5 **Schedule**: (UTC)\n\n- Branch creation\n  -
        \"\"\n- Automerge\n  - At any time (no schedule defined)\n\n\U0001F6A6 **Automerge**:
        Disabled by config. Please merge this manually once you are satisfied.\n\n\u267B
        **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry
        checkbox.\n\n\U0001F515 **Ignore**: Close this PR and you won't be reminded
        about this update again.\n\n---\n\n - [ ] <!-- rebase-check -->If you want
        to rebase/retry this PR, check this box\n\n---\n\nThis PR was generated by
        [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/osism/openstack-simple-stress).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjE1OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZSJdfQ==-->\n"
      change_url: https://github.com/osism/openstack-simple-stress/pull/296
      child_jobs: []
      commit_id: 1288e6093d73110ac4ce6d2e4e0d3b78c829b5bf
      event_id: 27783880-4d62-11f1-988d-984cba97804b
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/e015b91588794e53af9b5c1aa2564fee/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/e015b91588794e53af9b5c1aa2564fee/work/logs
        result_data_file: /var/lib/zuul/builds/e015b91588794e53af9b5c1aa2564fee/work/results.json
        src_root: /var/lib/zuul/builds/e015b91588794e53af9b5c1aa2564fee/work/src
        work_root: /var/lib/zuul/builds/e015b91588794e53af9b5c1aa2564fee/work
      include_vars: []
      items:
      - branch: main
        change: '296'
        change_message: "chore(deps): update dependency urllib3 to v2.7.0 [security]\n\nThis
          PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/)
          | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n|
          [urllib3](https://redirect.github.com/urllib3/urllib3) ([changelog](https://redirect.github.com/urllib3/urllib3/blob/main/CHANGES.rst))
          | `==2.6.3` \u2192 `==2.7.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/urllib3/2.7.0?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/urllib3/2.6.3/2.7.0?slim=true)
          |\n\n---\n\n### urllib3: Decompression-bomb safeguards bypassed in parts
          of the streaming API\n[CVE-2026-44432](https://nvd.nist.gov/vuln/detail/CVE-2026-44432)
          / [GHSA-mf9v-mfxr-j63j](https://redirect.github.com/advisories/GHSA-mf9v-mfxr-j63j)\n\n<details>\n<summary>More
          information</summary>\n\n#### Details\n##### Impact\n\nurllib3's [streaming
          API](https://urllib3.readthedocs.io/en/2.7.0/advanced-usage.html#streaming-and-i-o)
          is designed for the efficient handling of large HTTP responses by reading
          the content in chunks, rather than loading the entire response body into
          memory at once.\n\nurllib3 can perform decompression based on the HTTP `Content-Encoding`
          header (e.g., `gzip`, `deflate`, `br`, or `zstd`). When using the streaming
          API since version 2.6.0, the library decompresses only the necessary bytes,
          enabling partial content consumption.\n\nHowever, urllib3 before version
          2.7.0 could still decompress the whole response instead of the requested
          portion in two cases:\n1. During the second `HTTPResponse.read(amt=N)` call
          when the response was decompressed using the official [Brotli](https://pypi.org/project/brotli/)
          library.\n2. When `HTTPResponse.drain_conn()` was called after the response
          had been read and decompressed partially (compression algorithm did not
          matter here).\n\nThese issues could cause urllib3 to fully decode a small
          amount of highly compressed data in a single operation. This could result
          in excessive resource consumption (high CPU usage and massive memory allocation
          for the decompressed data; CWE-409) on the client side.\n\n##### Affected
          usages\n\nApplications and libraries using urllib3 versions earlier than
          2.7.0 may be affected when streaming compressed responses from untrusted
          sources in either of these cases, unless decompression is explicitly disabled:\n\n1.
          A response encoded with `br` is read incrementally with at least two `HTTPResponse.read(amt=N)`
          or `HTTPResponse.stream(amt=N)` calls while using the official [Brotli](https://pypi.org/project/brotli/)
          library.\n2. `HTTPResponse.drain_conn()` is called after response decompression
          has already started.\n\n##### Remediation\n\nUpgrade to at least urllib3
          version 2.7.0 in which the library:\n1. Is more efficient for reads with
          Brotli.\n2. Always skips decompression for `HTTPResponse.drain_conn()`.\n\nIf
          upgrading is not immediately possible, the following workarounds may reduce
          exposure in specific cases:\n1. For the Brotli-specific issue only, switch
          from [brotli](https://pypi.org/project/brotli/) to [brotlicffi](https://pypi.org/project/brotlicffi/)
          until you can upgrade urllib3; the official Brotli package is affected because
          of [https://github.com/google/brotli/issues/1396](https://redirect.github.com/google/brotli/issues/1396).\n2.
          If your code explicitly calls `HTTPResponse.drain_conn()`, call `HTTPResponse.close()`
          instead when connection reuse is not important.\n\n##### Credits\n\nThe
          Brotli-specific issue was reported by @&#8203;kimkou2024.\n`HTTPResponse.drain_conn()`
          inefficiency was reported by @&#8203;Cycloctane.\n\n#### Severity\n- CVSS
          Score: 8.9 / 10 (High)\n- Vector String: `CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H`\n\n####
          References\n- [https://github.com/urllib3/urllib3/security/advisories/GHSA-mf9v-mfxr-j63j](https://redirect.github.com/urllib3/urllib3/security/advisories/GHSA-mf9v-mfxr-j63j)\n-
          [https://github.com/advisories/GHSA-mf9v-mfxr-j63j](https://redirect.github.com/advisories/GHSA-mf9v-mfxr-j63j)\n\nThis
          data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-mf9v-mfxr-j63j)
          ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).\n</details>\n\n---\n\n###
          Release Notes\n\n<details>\n<summary>urllib3/urllib3 (urllib3)</summary>\n\n###
          [`v2.7.0`](https://redirect.github.com/urllib3/urllib3/blob/HEAD/CHANGES.rst#270-2026-05-07)\n\n[Compare
          Source](https://redirect.github.com/urllib3/urllib3/compare/2.6.3...2.7.0)\n\n\\=======================\n\n##
          Security\n\nAddressed high-severity security issues.\nImpact was limited
          to specific use cases detailed in the accompanying\nadvisories; overall
          user exposure was estimated to be marginal.\n\n- Decompression-bomb safeguards
          of the streaming API were bypassed:\n\n  1. When `HTTPResponse.drain_conn()`
          was called after the response had been\n     read and decompressed partially.\n
          \ 2. During the second `HTTPResponse.read(amt=N)` or\n     `HTTPResponse.stream(amt=N)`
          call when the response was decompressed\n     using the official `Brotli
          <https://pypi.org/project/brotli/>`\\_\\_ library.\n\n  See `GHSA-mf9v-mfxr-j63j
          <https://github.com/urllib3/urllib3/security/advisories/GHSA-mf9v-mfxr-j63j>`\\_\\_\n
          \ for details.\n\n- HTTP pools created using `ProxyManager.connection_from_url`
          did not strip\n  sensitive headers specified in `Retry.remove_headers_on_redirect`
          when\n  redirecting to a different host.\n  (`GHSA-qccp-gfcp-xxvc <https://github.com/urllib3/urllib3/security/advisories/GHSA-qccp-gfcp-xxvc>`\\_\\_)\n\n##
          Deprecations and Removals\n\n- Used `FutureWarning` instead of `DeprecationWarning`
          for better\n  visibility of existing deprecation notices. Rescheduled the
          removal of\n  deprecated features to version 3.0.\n  (`#&#8203;3763 <https://github.com/urllib3/urllib3/issues/3763>`\\_\\_)\n-
          Removed support for end-of-life Python 3.9.\n  (`#&#8203;3720 <https://github.com/urllib3/urllib3/issues/3720>`\\_\\_)\n-
          Removed support for end-of-life PyPy3.10.\n  (`#&#8203;4979 <https://github.com/urllib3/urllib3/issues/4979>`\\_\\_)\n-
          Bumped the minimum supported pyOpenSSL version to 19.0.0.\n  (`#&#8203;3777
          <https://github.com/urllib3/urllib3/issues/3777>`\\_\\_)\n\n## Bugfixes\n\n-
          Fixed a bug where `HTTPResponse.read(amt=None)` was ignoring decompressed\n
          \ data buffered from previous partial reads.\n  (`#&#8203;3636 <https://github.com/urllib3/urllib3/issues/3636>`\\_\\_)\n-
          Fixed a bug where `HTTPResponse.read()` could cache only part of the\n  response
          after a partial read when `cache_content=True`.\n  (`#&#8203;4967 <https://github.com/urllib3/urllib3/issues/4967>`\\_\\_)\n-
          Fixed `HTTPResponse.stream()` and `HTTPResponse.read_chunked()` to handle\n
          \ `amt=0`.\n  (`#&#8203;3793 <https://github.com/urllib3/urllib3/issues/3793>`\\_\\_)\n-
          Updated `_TYPE_BODY` type alias to include missing `Iterable[str]`,\n  matching
          the documented and runtime behavior of chunked request bodies.\n  (`#&#8203;3798
          <https://github.com/urllib3/urllib3/issues/3798>`\\_\\_)\n- Fixed `LocationParseError`
          when paths resembling schemeless URIs were\n  passed to `HTTPConnectionPool.urlopen()`.\n
          \ (`#&#8203;3352 <https://github.com/urllib3/urllib3/issues/3352>`\\_\\_)\n-
          Fixed `BaseHTTPResponse.readinto()` type annotation to accept\n  `memoryview`
          in addition to `bytearray`, matching the\n  `io.RawIOBase.readinto` contract
          and enabling use with\n  `io.BufferedReader` without type errors.\n  (`#&#8203;3764
          <https://github.com/urllib3/urllib3/issues/3764>`\\_\\_)\n\n</details>\n\n---\n\n###
          Configuration\n\n\U0001F4C5 **Schedule**: (UTC)\n\n- Branch creation\n  -
          \"\"\n- Automerge\n  - At any time (no schedule defined)\n\n\U0001F6A6 **Automerge**:
          Disabled by config. Please merge this manually once you are satisfied.\n\n\u267B
          **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry
          checkbox.\n\n\U0001F515 **Ignore**: Close this PR and you won't be reminded
          about this update again.\n\n---\n\n - [ ] <!-- rebase-check -->If you want
          to rebase/retry this PR, check this box\n\n---\n\nThis PR was generated
          by [Mend Renovate](https://mend.io/renovate/). View the [repository job
          log](https://developer.mend.io/github/osism/openstack-simple-stress).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjE1OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZSJdfQ==-->\n"
        change_url: https://github.com/osism/openstack-simple-stress/pull/296
        commit_id: 1288e6093d73110ac4ce6d2e4e0d3b78c829b5bf
        patchset: 1288e6093d73110ac4ce6d2e4e0d3b78c829b5bf
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/openstack-simple-stress
          name: osism/openstack-simple-stress
          short_name: openstack-simple-stress
          src_dir: src/github.com/osism/openstack-simple-stress
        topic: null
      job: openstack-simple-stress-test
      jobtags: []
      max_attempts: 3
      message: Y2hvcmUoZGVwcyk6IHVwZGF0ZSBkZXBlbmRlbmN5IHVybGxpYjMgdG8gdjIuNy4wIFtzZWN1cml0eV0KClRoaXMgUFIgY29udGFpbnMgdGhlIGZvbGxvd2luZyB1cGRhdGVzOgoKfCBQYWNrYWdlIHwgQ2hhbmdlIHwgW0FnZV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfCBbQ29uZmlkZW5jZV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfAp8LS0tfC0tLXwtLS18LS0tfAp8IFt1cmxsaWIzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vdXJsbGliMy91cmxsaWIzKSAoW2NoYW5nZWxvZ10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3VybGxpYjMvdXJsbGliMy9ibG9iL21haW4vQ0hBTkdFUy5yc3QpKSB8IGA9PTIuNi4zYCDihpIgYD09Mi43LjBgIHwgIVthZ2VdKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9hZ2UvcHlwaS91cmxsaWIzLzIuNy4wP3NsaW09dHJ1ZSkgfCAhW2NvbmZpZGVuY2VdKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9jb25maWRlbmNlL3B5cGkvdXJsbGliMy8yLjYuMy8yLjcuMD9zbGltPXRydWUpIHwKCi0tLQoKIyMjIHVybGxpYjM6IERlY29tcHJlc3Npb24tYm9tYiBzYWZlZ3VhcmRzIGJ5cGFzc2VkIGluIHBhcnRzIG9mIHRoZSBzdHJlYW1pbmcgQVBJCltDVkUtMjAyNi00NDQzMl0oaHR0cHM6Ly9udmQubmlzdC5nb3YvdnVsbi9kZXRhaWwvQ1ZFLTIwMjYtNDQ0MzIpIC8gW0dIU0EtbWY5di1tZnhyLWo2M2pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hZHZpc29yaWVzL0dIU0EtbWY5di1tZnhyLWo2M2opCgo8ZGV0YWlscz4KPHN1bW1hcnk+TW9yZSBpbmZvcm1hdGlvbjwvc3VtbWFyeT4KCiMjIyMgRGV0YWlscwojIyMjIyBJbXBhY3QKCnVybGxpYjMncyBbc3RyZWFtaW5nIEFQSV0oaHR0cHM6Ly91cmxsaWIzLnJlYWR0aGVkb2NzLmlvL2VuLzIuNy4wL2FkdmFuY2VkLXVzYWdlLmh0bWwjc3RyZWFtaW5nLWFuZC1pLW8pIGlzIGRlc2lnbmVkIGZvciB0aGUgZWZmaWNpZW50IGhhbmRsaW5nIG9mIGxhcmdlIEhUVFAgcmVzcG9uc2VzIGJ5IHJlYWRpbmcgdGhlIGNvbnRlbnQgaW4gY2h1bmtzLCByYXRoZXIgdGhhbiBsb2FkaW5nIHRoZSBlbnRpcmUgcmVzcG9uc2UgYm9keSBpbnRvIG1lbW9yeSBhdCBvbmNlLgoKdXJsbGliMyBjYW4gcGVyZm9ybSBkZWNvbXByZXNzaW9uIGJhc2VkIG9uIHRoZSBIVFRQIGBDb250ZW50LUVuY29kaW5nYCBoZWFkZXIgKGUuZy4sIGBnemlwYCwgYGRlZmxhdGVgLCBgYnJgLCBvciBgenN0ZGApLiBXaGVuIHVzaW5nIHRoZSBzdHJlYW1pbmcgQVBJIHNpbmNlIHZlcnNpb24gMi42LjAsIHRoZSBsaWJyYXJ5IGRlY29tcHJlc3NlcyBvbmx5IHRoZSBuZWNlc3NhcnkgYnl0ZXMsIGVuYWJsaW5nIHBhcnRpYWwgY29udGVudCBjb25zdW1wdGlvbi4KCkhvd2V2ZXIsIHVybGxpYjMgYmVmb3JlIHZlcnNpb24gMi43LjAgY291bGQgc3RpbGwgZGVjb21wcmVzcyB0aGUgd2hvbGUgcmVzcG9uc2UgaW5zdGVhZCBvZiB0aGUgcmVxdWVzdGVkIHBvcnRpb24gaW4gdHdvIGNhc2VzOgoxLiBEdXJpbmcgdGhlIHNlY29uZCBgSFRUUFJlc3BvbnNlLnJlYWQoYW10PU4pYCBjYWxsIHdoZW4gdGhlIHJlc3BvbnNlIHdhcyBkZWNvbXByZXNzZWQgdXNpbmcgdGhlIG9mZmljaWFsIFtCcm90bGldKGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9icm90bGkvKSBsaWJyYXJ5LgoyLiBXaGVuIGBIVFRQUmVzcG9uc2UuZHJhaW5fY29ubigpYCB3YXMgY2FsbGVkIGFmdGVyIHRoZSByZXNwb25zZSBoYWQgYmVlbiByZWFkIGFuZCBkZWNvbXByZXNzZWQgcGFydGlhbGx5IChjb21wcmVzc2lvbiBhbGdvcml0aG0gZGlkIG5vdCBtYXR0ZXIgaGVyZSkuCgpUaGVzZSBpc3N1ZXMgY291bGQgY2F1c2UgdXJsbGliMyB0byBmdWxseSBkZWNvZGUgYSBzbWFsbCBhbW91bnQgb2YgaGlnaGx5IGNvbXByZXNzZWQgZGF0YSBpbiBhIHNpbmdsZSBvcGVyYXRpb24uIFRoaXMgY291bGQgcmVzdWx0IGluIGV4Y2Vzc2l2ZSByZXNvdXJjZSBjb25zdW1wdGlvbiAoaGlnaCBDUFUgdXNhZ2UgYW5kIG1hc3NpdmUgbWVtb3J5IGFsbG9jYXRpb24gZm9yIHRoZSBkZWNvbXByZXNzZWQgZGF0YTsgQ1dFLTQwOSkgb24gdGhlIGNsaWVudCBzaWRlLgoKIyMjIyMgQWZmZWN0ZWQgdXNhZ2VzCgpBcHBsaWNhdGlvbnMgYW5kIGxpYnJhcmllcyB1c2luZyB1cmxsaWIzIHZlcnNpb25zIGVhcmxpZXIgdGhhbiAyLjcuMCBtYXkgYmUgYWZmZWN0ZWQgd2hlbiBzdHJlYW1pbmcgY29tcHJlc3NlZCByZXNwb25zZXMgZnJvbSB1bnRydXN0ZWQgc291cmNlcyBpbiBlaXRoZXIgb2YgdGhlc2UgY2FzZXMsIHVubGVzcyBkZWNvbXByZXNzaW9uIGlzIGV4cGxpY2l0bHkgZGlzYWJsZWQ6CgoxLiBBIHJlc3BvbnNlIGVuY29kZWQgd2l0aCBgYnJgIGlzIHJlYWQgaW5jcmVtZW50YWxseSB3aXRoIGF0IGxlYXN0IHR3byBgSFRUUFJlc3BvbnNlLnJlYWQoYW10PU4pYCBvciBgSFRUUFJlc3BvbnNlLnN0cmVhbShhbXQ9TilgIGNhbGxzIHdoaWxlIHVzaW5nIHRoZSBvZmZpY2lhbCBbQnJvdGxpXShodHRwczovL3B5cGkub3JnL3Byb2plY3QvYnJvdGxpLykgbGlicmFyeS4KMi4gYEhUVFBSZXNwb25zZS5kcmFpbl9jb25uKClgIGlzIGNhbGxlZCBhZnRlciByZXNwb25zZSBkZWNvbXByZXNzaW9uIGhhcyBhbHJlYWR5IHN0YXJ0ZWQuCgojIyMjIyBSZW1lZGlhdGlvbgoKVXBncmFkZSB0byBhdCBsZWFzdCB1cmxsaWIzIHZlcnNpb24gMi43LjAgaW4gd2hpY2ggdGhlIGxpYnJhcnk6CjEuIElzIG1vcmUgZWZmaWNpZW50IGZvciByZWFkcyB3aXRoIEJyb3RsaS4KMi4gQWx3YXlzIHNraXBzIGRlY29tcHJlc3Npb24gZm9yIGBIVFRQUmVzcG9uc2UuZHJhaW5fY29ubigpYC4KCklmIHVwZ3JhZGluZyBpcyBub3QgaW1tZWRpYXRlbHkgcG9zc2libGUsIHRoZSBmb2xsb3dpbmcgd29ya2Fyb3VuZHMgbWF5IHJlZHVjZSBleHBvc3VyZSBpbiBzcGVjaWZpYyBjYXNlczoKMS4gRm9yIHRoZSBCcm90bGktc3BlY2lmaWMgaXNzdWUgb25seSwgc3dpdGNoIGZyb20gW2Jyb3RsaV0oaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L2Jyb3RsaS8pIHRvIFticm90bGljZmZpXShodHRwczovL3B5cGkub3JnL3Byb2plY3QvYnJvdGxpY2ZmaS8pIHVudGlsIHlvdSBjYW4gdXBncmFkZSB1cmxsaWIzOyB0aGUgb2ZmaWNpYWwgQnJvdGxpIHBhY2thZ2UgaXMgYWZmZWN0ZWQgYmVjYXVzZSBvZiBbaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9icm90bGkvaXNzdWVzLzEzOTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9nb29nbGUvYnJvdGxpL2lzc3Vlcy8xMzk2KS4KMi4gSWYgeW91ciBjb2RlIGV4cGxpY2l0bHkgY2FsbHMgYEhUVFBSZXNwb25zZS5kcmFpbl9jb25uKClgLCBjYWxsIGBIVFRQUmVzcG9uc2UuY2xvc2UoKWAgaW5zdGVhZCB3aGVuIGNvbm5lY3Rpb24gcmV1c2UgaXMgbm90IGltcG9ydGFudC4KCiMjIyMjIENyZWRpdHMKClRoZSBCcm90bGktc3BlY2lmaWMgaXNzdWUgd2FzIHJlcG9ydGVkIGJ5IEAmIzgyMDM7a2lta291MjAyNC4KYEhUVFBSZXNwb25zZS5kcmFpbl9jb25uKClgIGluZWZmaWNpZW5jeSB3YXMgcmVwb3J0ZWQgYnkgQCYjODIwMztDeWNsb2N0YW5lLgoKIyMjIyBTZXZlcml0eQotIENWU1MgU2NvcmU6IDguOSAvIDEwIChIaWdoKQotIFZlY3RvciBTdHJpbmc6IGBDVlNTOjQuMC9BVjpOL0FDOkwvQVQ6UC9QUjpOL1VJOk4vVkM6Ti9WSTpOL1ZBOkgvU0M6Ti9TSTpOL1NBOkhgCgojIyMjIFJlZmVyZW5jZXMKLSBbaHR0cHM6Ly9naXRodWIuY29tL3VybGxpYjMvdXJsbGliMy9zZWN1cml0eS9hZHZpc29yaWVzL0dIU0EtbWY5di1tZnhyLWo2M2pdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS91cmxsaWIzL3VybGxpYjMvc2VjdXJpdHkvYWR2aXNvcmllcy9HSFNBLW1mOXYtbWZ4ci1qNjNqKQotIFtodHRwczovL2dpdGh1Yi5jb20vYWR2aXNvcmllcy9HSFNBLW1mOXYtbWZ4ci1qNjNqXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYWR2aXNvcmllcy9HSFNBLW1mOXYtbWZ4ci1qNjNqKQoKVGhpcyBkYXRhIGlzIHByb3ZpZGVkIGJ5IHRoZSBbR2l0SHViIEFkdmlzb3J5IERhdGFiYXNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYWR2aXNvcmllcy9HSFNBLW1mOXYtbWZ4ci1qNjNqKSAoW0NDLUJZIDQuMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dpdGh1Yi9hZHZpc29yeS1kYXRhYmFzZS9ibG9iL21haW4vTElDRU5TRS5tZCkpLgo8L2RldGFpbHM+CgotLS0KCiMjIyBSZWxlYXNlIE5vdGVzCgo8ZGV0YWlscz4KPHN1bW1hcnk+dXJsbGliMy91cmxsaWIzICh1cmxsaWIzKTwvc3VtbWFyeT4KCiMjIyBbYHYyLjcuMGBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS91cmxsaWIzL3VybGxpYjMvYmxvYi9IRUFEL0NIQU5HRVMucnN0IzI3MC0yMDI2LTA1LTA3KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vdXJsbGliMy91cmxsaWIzL2NvbXBhcmUvMi42LjMuLi4yLjcuMCkKClw9PT09PT09PT09PT09PT09PT09PT09PQoKIyMgU2VjdXJpdHkKCkFkZHJlc3NlZCBoaWdoLXNldmVyaXR5IHNlY3VyaXR5IGlzc3Vlcy4KSW1wYWN0IHdhcyBsaW1pdGVkIHRvIHNwZWNpZmljIHVzZSBjYXNlcyBkZXRhaWxlZCBpbiB0aGUgYWNjb21wYW55aW5nCmFkdmlzb3JpZXM7IG92ZXJhbGwgdXNlciBleHBvc3VyZSB3YXMgZXN0aW1hdGVkIHRvIGJlIG1hcmdpbmFsLgoKLSBEZWNvbXByZXNzaW9uLWJvbWIgc2FmZWd1YXJkcyBvZiB0aGUgc3RyZWFtaW5nIEFQSSB3ZXJlIGJ5cGFzc2VkOgoKICAxLiBXaGVuIGBIVFRQUmVzcG9uc2UuZHJhaW5fY29ubigpYCB3YXMgY2FsbGVkIGFmdGVyIHRoZSByZXNwb25zZSBoYWQgYmVlbgogICAgIHJlYWQgYW5kIGRlY29tcHJlc3NlZCBwYXJ0aWFsbHkuCiAgMi4gRHVyaW5nIHRoZSBzZWNvbmQgYEhUVFBSZXNwb25zZS5yZWFkKGFtdD1OKWAgb3IKICAgICBgSFRUUFJlc3BvbnNlLnN0cmVhbShhbXQ9TilgIGNhbGwgd2hlbiB0aGUgcmVzcG9uc2Ugd2FzIGRlY29tcHJlc3NlZAogICAgIHVzaW5nIHRoZSBvZmZpY2lhbCBgQnJvdGxpIDxodHRwczovL3B5cGkub3JnL3Byb2plY3QvYnJvdGxpLz5gXF9cXyBsaWJyYXJ5LgoKICBTZWUgYEdIU0EtbWY5di1tZnhyLWo2M2ogPGh0dHBzOi8vZ2l0aHViLmNvbS91cmxsaWIzL3VybGxpYjMvc2VjdXJpdHkvYWR2aXNvcmllcy9HSFNBLW1mOXYtbWZ4ci1qNjNqPmBcX1xfCiAgZm9yIGRldGFpbHMuCgotIEhUVFAgcG9vbHMgY3JlYXRlZCB1c2luZyBgUHJveHlNYW5hZ2VyLmNvbm5lY3Rpb25fZnJvbV91cmxgIGRpZCBub3Qgc3RyaXAKICBzZW5zaXRpdmUgaGVhZGVycyBzcGVjaWZpZWQgaW4gYFJldHJ5LnJlbW92ZV9oZWFkZXJzX29uX3JlZGlyZWN0YCB3aGVuCiAgcmVkaXJlY3RpbmcgdG8gYSBkaWZmZXJlbnQgaG9zdC4KICAoYEdIU0EtcWNjcC1nZmNwLXh4dmMgPGh0dHBzOi8vZ2l0aHViLmNvbS91cmxsaWIzL3VybGxpYjMvc2VjdXJpdHkvYWR2aXNvcmllcy9HSFNBLXFjY3AtZ2ZjcC14eHZjPmBcX1xfKQoKIyMgRGVwcmVjYXRpb25zIGFuZCBSZW1vdmFscwoKLSBVc2VkIGBGdXR1cmVXYXJuaW5nYCBpbnN0ZWFkIG9mIGBEZXByZWNhdGlvbldhcm5pbmdgIGZvciBiZXR0ZXIKICB2aXNpYmlsaXR5IG9mIGV4aXN0aW5nIGRlcHJlY2F0aW9uIG5vdGljZXMuIFJlc2NoZWR1bGVkIHRoZSByZW1vdmFsIG9mCiAgZGVwcmVjYXRlZCBmZWF0dXJlcyB0byB2ZXJzaW9uIDMuMC4KICAoYCMmIzgyMDM7Mzc2MyA8aHR0cHM6Ly9naXRodWIuY29tL3VybGxpYjMvdXJsbGliMy9pc3N1ZXMvMzc2Mz5gXF9cXykKLSBSZW1vdmVkIHN1cHBvcnQgZm9yIGVuZC1vZi1saWZlIFB5dGhvbiAzLjkuCiAgKGAjJiM4MjAzOzM3MjAgPGh0dHBzOi8vZ2l0aHViLmNvbS91cmxsaWIzL3VybGxpYjMvaXNzdWVzLzM3MjA+YFxfXF8pCi0gUmVtb3ZlZCBzdXBwb3J0IGZvciBlbmQtb2YtbGlmZSBQeVB5My4xMC4KICAoYCMmIzgyMDM7NDk3OSA8aHR0cHM6Ly9naXRodWIuY29tL3VybGxpYjMvdXJsbGliMy9pc3N1ZXMvNDk3OT5gXF9cXykKLSBCdW1wZWQgdGhlIG1pbmltdW0gc3VwcG9ydGVkIHB5T3BlblNTTCB2ZXJzaW9uIHRvIDE5LjAuMC4KICAoYCMmIzgyMDM7Mzc3NyA8aHR0cHM6Ly9naXRodWIuY29tL3VybGxpYjMvdXJsbGliMy9pc3N1ZXMvMzc3Nz5gXF9cXykKCiMjIEJ1Z2ZpeGVzCgotIEZpeGVkIGEgYnVnIHdoZXJlIGBIVFRQUmVzcG9uc2UucmVhZChhbXQ9Tm9uZSlgIHdhcyBpZ25vcmluZyBkZWNvbXByZXNzZWQKICBkYXRhIGJ1ZmZlcmVkIGZyb20gcHJldmlvdXMgcGFydGlhbCByZWFkcy4KICAoYCMmIzgyMDM7MzYzNiA8aHR0cHM6Ly9naXRodWIuY29tL3VybGxpYjMvdXJsbGliMy9pc3N1ZXMvMzYzNj5gXF9cXykKLSBGaXhlZCBhIGJ1ZyB3aGVyZSBgSFRUUFJlc3BvbnNlLnJlYWQoKWAgY291bGQgY2FjaGUgb25seSBwYXJ0IG9mIHRoZQogIHJlc3BvbnNlIGFmdGVyIGEgcGFydGlhbCByZWFkIHdoZW4gYGNhY2hlX2NvbnRlbnQ9VHJ1ZWAuCiAgKGAjJiM4MjAzOzQ5NjcgPGh0dHBzOi8vZ2l0aHViLmNvbS91cmxsaWIzL3VybGxpYjMvaXNzdWVzLzQ5Njc+YFxfXF8pCi0gRml4ZWQgYEhUVFBSZXNwb25zZS5zdHJlYW0oKWAgYW5kIGBIVFRQUmVzcG9uc2UucmVhZF9jaHVua2VkKClgIHRvIGhhbmRsZQogIGBhbXQ9MGAuCiAgKGAjJiM4MjAzOzM3OTMgPGh0dHBzOi8vZ2l0aHViLmNvbS91cmxsaWIzL3VybGxpYjMvaXNzdWVzLzM3OTM+YFxfXF8pCi0gVXBkYXRlZCBgX1RZUEVfQk9EWWAgdHlwZSBhbGlhcyB0byBpbmNsdWRlIG1pc3NpbmcgYEl0ZXJhYmxlW3N0cl1gLAogIG1hdGNoaW5nIHRoZSBkb2N1bWVudGVkIGFuZCBydW50aW1lIGJlaGF2aW9yIG9mIGNodW5rZWQgcmVxdWVzdCBib2RpZXMuCiAgKGAjJiM4MjAzOzM3OTggPGh0dHBzOi8vZ2l0aHViLmNvbS91cmxsaWIzL3VybGxpYjMvaXNzdWVzLzM3OTg+YFxfXF8pCi0gRml4ZWQgYExvY2F0aW9uUGFyc2VFcnJvcmAgd2hlbiBwYXRocyByZXNlbWJsaW5nIHNjaGVtZWxlc3MgVVJJcyB3ZXJlCiAgcGFzc2VkIHRvIGBIVFRQQ29ubmVjdGlvblBvb2wudXJsb3BlbigpYC4KICAoYCMmIzgyMDM7MzM1MiA8aHR0cHM6Ly9naXRodWIuY29tL3VybGxpYjMvdXJsbGliMy9pc3N1ZXMvMzM1Mj5gXF9cXykKLSBGaXhlZCBgQmFzZUhUVFBSZXNwb25zZS5yZWFkaW50bygpYCB0eXBlIGFubm90YXRpb24gdG8gYWNjZXB0CiAgYG1lbW9yeXZpZXdgIGluIGFkZGl0aW9uIHRvIGBieXRlYXJyYXlgLCBtYXRjaGluZyB0aGUKICBgaW8uUmF3SU9CYXNlLnJlYWRpbnRvYCBjb250cmFjdCBhbmQgZW5hYmxpbmcgdXNlIHdpdGgKICBgaW8uQnVmZmVyZWRSZWFkZXJgIHdpdGhvdXQgdHlwZSBlcnJvcnMuCiAgKGAjJiM4MjAzOzM3NjQgPGh0dHBzOi8vZ2l0aHViLmNvbS91cmxsaWIzL3VybGxpYjMvaXNzdWVzLzM3NjQ+YFxfXF8pCgo8L2RldGFpbHM+CgotLS0KCiMjIyBDb25maWd1cmF0aW9uCgrwn5OFICoqU2NoZWR1bGUqKjogKFVUQykKCi0gQnJhbmNoIGNyZWF0aW9uCiAgLSAiIgotIEF1dG9tZXJnZQogIC0gQXQgYW55IHRpbWUgKG5vIHNjaGVkdWxlIGRlZmluZWQpCgrwn5qmICoqQXV0b21lcmdlKio6IERpc2FibGVkIGJ5IGNvbmZpZy4gUGxlYXNlIG1lcmdlIHRoaXMgbWFudWFsbHkgb25jZSB5b3UgYXJlIHNhdGlzZmllZC4KCuKZuyAqKlJlYmFzaW5nKio6IFdoZW5ldmVyIFBSIGJlY29tZXMgY29uZmxpY3RlZCwgb3IgeW91IHRpY2sgdGhlIHJlYmFzZS9yZXRyeSBjaGVja2JveC4KCvCflJUgKipJZ25vcmUqKjogQ2xvc2UgdGhpcyBQUiBhbmQgeW91IHdvbid0IGJlIHJlbWluZGVkIGFib3V0IHRoaXMgdXBkYXRlIGFnYWluLgoKLS0tCgogLSBbIF0gPCEtLSByZWJhc2UtY2hlY2sgLS0+SWYgeW91IHdhbnQgdG8gcmViYXNlL3JldHJ5IHRoaXMgUFIsIGNoZWNrIHRoaXMgYm94CgotLS0KClRoaXMgUFIgd2FzIGdlbmVyYXRlZCBieSBbTWVuZCBSZW5vdmF0ZV0oaHR0cHM6Ly9tZW5kLmlvL3Jlbm92YXRlLykuIFZpZXcgdGhlIFtyZXBvc2l0b3J5IGpvYiBsb2ddKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vZ2l0aHViL29zaXNtL29wZW5zdGFjay1zaW1wbGUtc3RyZXNzKS4KPCEtLXJlbm92YXRlLWRlYnVnOmV5SmpjbVZoZEdWa1NXNVdaWElpT2lJME15NHhOVGt1TWlJc0luVndaR0YwWldSSmJsWmxjaUk2SWpRekxqRTFPUzR5SWl3aWRHRnlaMlYwUW5KaGJtTm9Jam9pYldGcGJpSXNJbXhoWW1Wc2N5STZXeUp5Wlc1dmRtRjBaU0pkZlE9PS0tPgo=
      patchset: 1288e6093d73110ac4ce6d2e4e0d3b78c829b5bf
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 58f24f5b479e15eb2d520850d27e3b1b6fc66aa6
          trusted/project_1/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 038dd8b856c62af4433c8477c5cb3d0480847059
          trusted/project_2/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 9f81d10d2ad8048ca14142fe6063afb5d3bd998b
          untrusted/project_0/github.com/osism/openstack-simple-stress:
            canonical_name: github.com/osism/openstack-simple-stress
            checkout: main
            commit: edcb9fefc8adbd955e0079cf8b386d0e20e84725
          untrusted/project_1/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 9f81d10d2ad8048ca14142fe6063afb5d3bd998b
          untrusted/project_2/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 58f24f5b479e15eb2d520850d27e3b1b6fc66aa6
          untrusted/project_3/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 038dd8b856c62af4433c8477c5cb3d0480847059
        playbooks:
        - path: untrusted/project_0/github.com/osism/openstack-simple-stress/playbooks/test.yml
          roles:
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_1/devstack
            link_target: untrusted/project_1/github.com/osism/zuul-jobs
            role_path: ansible/playbook_0/role_1/devstack/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_2/zuul-config
            link_target: untrusted/project_2/github.com/osism/zuul-config
            role_path: ansible/playbook_0/role_2/zuul-config/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/playbook_0/role_3/openinfra-zuul-jobs
            link_target: untrusted/project_3/github.com/osism/openinfra-zuul-jobs
            role_path: ansible/playbook_0/role_3/openinfra-zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_4/zuul-jobs
            link_target: untrusted/project_1/github.com/osism/zuul-jobs
            role_path: ansible/playbook_0/role_4/zuul-jobs/roles
      post_review: false
      post_timeout: null
      pre_timeout: null
      project:
        canonical_hostname: github.com
        canonical_name: github.com/osism/openstack-simple-stress
        name: osism/openstack-simple-stress
        short_name: openstack-simple-stress
        src_dir: src/github.com/osism/openstack-simple-stress
      projects:
        github.com/osism/openstack-simple-stress:
          canonical_hostname: github.com
          canonical_name: github.com/osism/openstack-simple-stress
          checkout: main
          checkout_description: zuul branch
          commit: edcb9fefc8adbd955e0079cf8b386d0e20e84725
          name: osism/openstack-simple-stress
          required: false
          short_name: openstack-simple-stress
          src_dir: src/github.com/osism/openstack-simple-stress
      ref: refs/pull/296/head
      resources: {}
      tenant: osism
      timeout: 14400
      topic: null
      voting: true
