all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fedc:90fc
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: aa30a105-48b7-4b0e-a811-dedff12c9dea
        host_id: 82101243836454d7401d5893feae9e2c5df7cc291646d8a99b33b53b
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fedc:90fc
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.0.108
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.192.129
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fedc:90fc
        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 yamllint explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-jobs/.zuul.yaml@main#59>'
      - '<Job yamllint explicit: None implied: None source: osism/ansible-collection-services/.zuul.yaml@main#498>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: 935dad50b3474f2da8093d04c0032bd8
      build_refs:
      - branch: main
        change: '2092'
        change_message: "molecule: assert traefik API, not UI HTML string\n\n## What\n\nThe
          molecule traefik verify test (`molecule/delegated/tests/traefik.py`,\n`test_function`)
          checked the dashboard with:\n\n```python\nresult = host.run(f\"curl {url}
          | grep -i 'Traefik UI'\")\nassert result.rc == 0\n```\n\n`grep` exits 1
          (no match) when the dashboard HTML lacks the literal string\n`Traefik UI`.
          Traefik rebuilt the dashboard in **React in v3.5.0** (upstream\ncommit `f16fff577`);
          the served page `<title>` is now `Traefik Proxy`, so the\nstring is gone
          and this assertion fails on any traefik **\u2265 v3.5.0** \u2014 while the\ndashboard
          itself is healthy (the preceding HTTP `200` check passes).\n\nThis replaces
          the brittle HTML-text grep with a check that the traefik **API**\nanswers
          on the same entrypoint (`api.insecure` is enabled and mapped to\n`traefik_port`),
          a stable version-independent contract:\n\n```python\napi_url = f\"{service_host}:{service_port}/api/version\"\nresult
          = host.run(f\"curl -o /dev/null -w '%{{http_code}}' {api_url}\")\nassert
          result.rc == 0\nassert result.stdout.strip() == \"200\"\n```\n\nPasses on
          both v3.4.4 (current default) and v3.7.5, and won't break on future\ndashboard
          UI changes.\n\n## Why\n\nThe stale assertion blocks the traefik image bump:\n\n-
          osism/ansible-collection-services#1964 \u2014 *chore(deps): update traefik
          docker tag to v3.7.5*\n\nIts `ansible-collection-services-molecule-traefik`
          check fails only on this\ntest. Example failing build (PR #1964, deploying
          v3.7.5):\n<https://zuul.services.osism.tech/t/osism/build/e61e5b36b88b4e9db31a3b9a0fd99876>\n\u2014
          `tests/traefik.py::test_function` FAILED: `curl \u2026/dashboard/` returns
          `200`,\nthen `curl \u2026/dashboard/ | grep -i 'Traefik UI'` returns rc
          1.\n\nOnce this merges, renovate's #1964 should rebase green.\n\n\U0001F916
          Generated with [Claude Code](https://claude.com/claude-code)"
        change_url: https://github.com/osism/ansible-collection-services/pull/2092
        commit_id: 2783e0cb013b89a9b5c5de65652dec19c0bab3ce
        patchset: 2783e0cb013b89a9b5c5de65652dec19c0bab3ce
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/ansible-collection-services
          name: osism/ansible-collection-services
          short_name: ansible-collection-services
        src_dir: src/github.com/osism/ansible-collection-services
        topic: null
      buildset: 6e47f69840234740a1063e4c48fd9afc
      buildset_refs:
      - branch: main
        change: '2092'
        change_message: "molecule: assert traefik API, not UI HTML string\n\n## What\n\nThe
          molecule traefik verify test (`molecule/delegated/tests/traefik.py`,\n`test_function`)
          checked the dashboard with:\n\n```python\nresult = host.run(f\"curl {url}
          | grep -i 'Traefik UI'\")\nassert result.rc == 0\n```\n\n`grep` exits 1
          (no match) when the dashboard HTML lacks the literal string\n`Traefik UI`.
          Traefik rebuilt the dashboard in **React in v3.5.0** (upstream\ncommit `f16fff577`);
          the served page `<title>` is now `Traefik Proxy`, so the\nstring is gone
          and this assertion fails on any traefik **\u2265 v3.5.0** \u2014 while the\ndashboard
          itself is healthy (the preceding HTTP `200` check passes).\n\nThis replaces
          the brittle HTML-text grep with a check that the traefik **API**\nanswers
          on the same entrypoint (`api.insecure` is enabled and mapped to\n`traefik_port`),
          a stable version-independent contract:\n\n```python\napi_url = f\"{service_host}:{service_port}/api/version\"\nresult
          = host.run(f\"curl -o /dev/null -w '%{{http_code}}' {api_url}\")\nassert
          result.rc == 0\nassert result.stdout.strip() == \"200\"\n```\n\nPasses on
          both v3.4.4 (current default) and v3.7.5, and won't break on future\ndashboard
          UI changes.\n\n## Why\n\nThe stale assertion blocks the traefik image bump:\n\n-
          osism/ansible-collection-services#1964 \u2014 *chore(deps): update traefik
          docker tag to v3.7.5*\n\nIts `ansible-collection-services-molecule-traefik`
          check fails only on this\ntest. Example failing build (PR #1964, deploying
          v3.7.5):\n<https://zuul.services.osism.tech/t/osism/build/e61e5b36b88b4e9db31a3b9a0fd99876>\n\u2014
          `tests/traefik.py::test_function` FAILED: `curl \u2026/dashboard/` returns
          `200`,\nthen `curl \u2026/dashboard/ | grep -i 'Traefik UI'` returns rc
          1.\n\nOnce this merges, renovate's #1964 should rebase green.\n\n\U0001F916
          Generated with [Claude Code](https://claude.com/claude-code)"
        change_url: https://github.com/osism/ansible-collection-services/pull/2092
        commit_id: 2783e0cb013b89a9b5c5de65652dec19c0bab3ce
        patchset: 2783e0cb013b89a9b5c5de65652dec19c0bab3ce
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/ansible-collection-services
          name: osism/ansible-collection-services
          short_name: ansible-collection-services
        src_dir: src/github.com/osism/ansible-collection-services
        topic: null
      change: '2092'
      change_message: "molecule: assert traefik API, not UI HTML string\n\n## What\n\nThe
        molecule traefik verify test (`molecule/delegated/tests/traefik.py`,\n`test_function`)
        checked the dashboard with:\n\n```python\nresult = host.run(f\"curl {url}
        | grep -i 'Traefik UI'\")\nassert result.rc == 0\n```\n\n`grep` exits 1 (no
        match) when the dashboard HTML lacks the literal string\n`Traefik UI`. Traefik
        rebuilt the dashboard in **React in v3.5.0** (upstream\ncommit `f16fff577`);
        the served page `<title>` is now `Traefik Proxy`, so the\nstring is gone and
        this assertion fails on any traefik **\u2265 v3.5.0** \u2014 while the\ndashboard
        itself is healthy (the preceding HTTP `200` check passes).\n\nThis replaces
        the brittle HTML-text grep with a check that the traefik **API**\nanswers
        on the same entrypoint (`api.insecure` is enabled and mapped to\n`traefik_port`),
        a stable version-independent contract:\n\n```python\napi_url = f\"{service_host}:{service_port}/api/version\"\nresult
        = host.run(f\"curl -o /dev/null -w '%{{http_code}}' {api_url}\")\nassert result.rc
        == 0\nassert result.stdout.strip() == \"200\"\n```\n\nPasses on both v3.4.4
        (current default) and v3.7.5, and won't break on future\ndashboard UI changes.\n\n##
        Why\n\nThe stale assertion blocks the traefik image bump:\n\n- osism/ansible-collection-services#1964
        \u2014 *chore(deps): update traefik docker tag to v3.7.5*\n\nIts `ansible-collection-services-molecule-traefik`
        check fails only on this\ntest. Example failing build (PR #1964, deploying
        v3.7.5):\n<https://zuul.services.osism.tech/t/osism/build/e61e5b36b88b4e9db31a3b9a0fd99876>\n\u2014
        `tests/traefik.py::test_function` FAILED: `curl \u2026/dashboard/` returns
        `200`,\nthen `curl \u2026/dashboard/ | grep -i 'Traefik UI'` returns rc 1.\n\nOnce
        this merges, renovate's #1964 should rebase green.\n\n\U0001F916 Generated
        with [Claude Code](https://claude.com/claude-code)"
      change_url: https://github.com/osism/ansible-collection-services/pull/2092
      child_jobs: []
      commit_id: 2783e0cb013b89a9b5c5de65652dec19c0bab3ce
      event_id: 5a8eee70-67ee-11f1-85fc-416720c7c118
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/935dad50b3474f2da8093d04c0032bd8/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/935dad50b3474f2da8093d04c0032bd8/work/logs
        result_data_file: /var/lib/zuul/builds/935dad50b3474f2da8093d04c0032bd8/work/results.json
        src_root: /var/lib/zuul/builds/935dad50b3474f2da8093d04c0032bd8/work/src
        work_root: /var/lib/zuul/builds/935dad50b3474f2da8093d04c0032bd8/work
      include_vars: []
      items:
      - branch: main
        change: '2092'
        change_message: "molecule: assert traefik API, not UI HTML string\n\n## What\n\nThe
          molecule traefik verify test (`molecule/delegated/tests/traefik.py`,\n`test_function`)
          checked the dashboard with:\n\n```python\nresult = host.run(f\"curl {url}
          | grep -i 'Traefik UI'\")\nassert result.rc == 0\n```\n\n`grep` exits 1
          (no match) when the dashboard HTML lacks the literal string\n`Traefik UI`.
          Traefik rebuilt the dashboard in **React in v3.5.0** (upstream\ncommit `f16fff577`);
          the served page `<title>` is now `Traefik Proxy`, so the\nstring is gone
          and this assertion fails on any traefik **\u2265 v3.5.0** \u2014 while the\ndashboard
          itself is healthy (the preceding HTTP `200` check passes).\n\nThis replaces
          the brittle HTML-text grep with a check that the traefik **API**\nanswers
          on the same entrypoint (`api.insecure` is enabled and mapped to\n`traefik_port`),
          a stable version-independent contract:\n\n```python\napi_url = f\"{service_host}:{service_port}/api/version\"\nresult
          = host.run(f\"curl -o /dev/null -w '%{{http_code}}' {api_url}\")\nassert
          result.rc == 0\nassert result.stdout.strip() == \"200\"\n```\n\nPasses on
          both v3.4.4 (current default) and v3.7.5, and won't break on future\ndashboard
          UI changes.\n\n## Why\n\nThe stale assertion blocks the traefik image bump:\n\n-
          osism/ansible-collection-services#1964 \u2014 *chore(deps): update traefik
          docker tag to v3.7.5*\n\nIts `ansible-collection-services-molecule-traefik`
          check fails only on this\ntest. Example failing build (PR #1964, deploying
          v3.7.5):\n<https://zuul.services.osism.tech/t/osism/build/e61e5b36b88b4e9db31a3b9a0fd99876>\n\u2014
          `tests/traefik.py::test_function` FAILED: `curl \u2026/dashboard/` returns
          `200`,\nthen `curl \u2026/dashboard/ | grep -i 'Traefik UI'` returns rc
          1.\n\nOnce this merges, renovate's #1964 should rebase green.\n\n\U0001F916
          Generated with [Claude Code](https://claude.com/claude-code)"
        change_url: https://github.com/osism/ansible-collection-services/pull/2092
        commit_id: 2783e0cb013b89a9b5c5de65652dec19c0bab3ce
        patchset: 2783e0cb013b89a9b5c5de65652dec19c0bab3ce
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/ansible-collection-services
          name: osism/ansible-collection-services
          short_name: ansible-collection-services
          src_dir: src/github.com/osism/ansible-collection-services
        topic: null
      job: yamllint
      jobtags: []
      max_attempts: 3
      message: bW9sZWN1bGU6IGFzc2VydCB0cmFlZmlrIEFQSSwgbm90IFVJIEhUTUwgc3RyaW5nCgojIyBXaGF0CgpUaGUgbW9sZWN1bGUgdHJhZWZpayB2ZXJpZnkgdGVzdCAoYG1vbGVjdWxlL2RlbGVnYXRlZC90ZXN0cy90cmFlZmlrLnB5YCwKYHRlc3RfZnVuY3Rpb25gKSBjaGVja2VkIHRoZSBkYXNoYm9hcmQgd2l0aDoKCmBgYHB5dGhvbgpyZXN1bHQgPSBob3N0LnJ1bihmImN1cmwge3VybH0gfCBncmVwIC1pICdUcmFlZmlrIFVJJyIpCmFzc2VydCByZXN1bHQucmMgPT0gMApgYGAKCmBncmVwYCBleGl0cyAxIChubyBtYXRjaCkgd2hlbiB0aGUgZGFzaGJvYXJkIEhUTUwgbGFja3MgdGhlIGxpdGVyYWwgc3RyaW5nCmBUcmFlZmlrIFVJYC4gVHJhZWZpayByZWJ1aWx0IHRoZSBkYXNoYm9hcmQgaW4gKipSZWFjdCBpbiB2My41LjAqKiAodXBzdHJlYW0KY29tbWl0IGBmMTZmZmY1NzdgKTsgdGhlIHNlcnZlZCBwYWdlIGA8dGl0bGU+YCBpcyBub3cgYFRyYWVmaWsgUHJveHlgLCBzbyB0aGUKc3RyaW5nIGlzIGdvbmUgYW5kIHRoaXMgYXNzZXJ0aW9uIGZhaWxzIG9uIGFueSB0cmFlZmlrICoq4omlIHYzLjUuMCoqIOKAlCB3aGlsZSB0aGUKZGFzaGJvYXJkIGl0c2VsZiBpcyBoZWFsdGh5ICh0aGUgcHJlY2VkaW5nIEhUVFAgYDIwMGAgY2hlY2sgcGFzc2VzKS4KClRoaXMgcmVwbGFjZXMgdGhlIGJyaXR0bGUgSFRNTC10ZXh0IGdyZXAgd2l0aCBhIGNoZWNrIHRoYXQgdGhlIHRyYWVmaWsgKipBUEkqKgphbnN3ZXJzIG9uIHRoZSBzYW1lIGVudHJ5cG9pbnQgKGBhcGkuaW5zZWN1cmVgIGlzIGVuYWJsZWQgYW5kIG1hcHBlZCB0bwpgdHJhZWZpa19wb3J0YCksIGEgc3RhYmxlIHZlcnNpb24taW5kZXBlbmRlbnQgY29udHJhY3Q6CgpgYGBweXRob24KYXBpX3VybCA9IGYie3NlcnZpY2VfaG9zdH06e3NlcnZpY2VfcG9ydH0vYXBpL3ZlcnNpb24iCnJlc3VsdCA9IGhvc3QucnVuKGYiY3VybCAtbyAvZGV2L251bGwgLXcgJyV7e2h0dHBfY29kZX19JyB7YXBpX3VybH0iKQphc3NlcnQgcmVzdWx0LnJjID09IDAKYXNzZXJ0IHJlc3VsdC5zdGRvdXQuc3RyaXAoKSA9PSAiMjAwIgpgYGAKClBhc3NlcyBvbiBib3RoIHYzLjQuNCAoY3VycmVudCBkZWZhdWx0KSBhbmQgdjMuNy41LCBhbmQgd29uJ3QgYnJlYWsgb24gZnV0dXJlCmRhc2hib2FyZCBVSSBjaGFuZ2VzLgoKIyMgV2h5CgpUaGUgc3RhbGUgYXNzZXJ0aW9uIGJsb2NrcyB0aGUgdHJhZWZpayBpbWFnZSBidW1wOgoKLSBvc2lzbS9hbnNpYmxlLWNvbGxlY3Rpb24tc2VydmljZXMjMTk2NCDigJQgKmNob3JlKGRlcHMpOiB1cGRhdGUgdHJhZWZpayBkb2NrZXIgdGFnIHRvIHYzLjcuNSoKCkl0cyBgYW5zaWJsZS1jb2xsZWN0aW9uLXNlcnZpY2VzLW1vbGVjdWxlLXRyYWVmaWtgIGNoZWNrIGZhaWxzIG9ubHkgb24gdGhpcwp0ZXN0LiBFeGFtcGxlIGZhaWxpbmcgYnVpbGQgKFBSICMxOTY0LCBkZXBsb3lpbmcgdjMuNy41KToKPGh0dHBzOi8venV1bC5zZXJ2aWNlcy5vc2lzbS50ZWNoL3Qvb3Npc20vYnVpbGQvZTYxZTViMzZiODhiNGU5ZGIzMWEzYjlhMGZkOTk4NzY+CuKAlCBgdGVzdHMvdHJhZWZpay5weTo6dGVzdF9mdW5jdGlvbmAgRkFJTEVEOiBgY3VybCDigKYvZGFzaGJvYXJkL2AgcmV0dXJucyBgMjAwYCwKdGhlbiBgY3VybCDigKYvZGFzaGJvYXJkLyB8IGdyZXAgLWkgJ1RyYWVmaWsgVUknYCByZXR1cm5zIHJjIDEuCgpPbmNlIHRoaXMgbWVyZ2VzLCByZW5vdmF0ZSdzICMxOTY0IHNob3VsZCByZWJhc2UgZ3JlZW4uCgrwn6SWIEdlbmVyYXRlZCB3aXRoIFtDbGF1ZGUgQ29kZV0oaHR0cHM6Ly9jbGF1ZGUuY29tL2NsYXVkZS1jb2RlKQ==
      patchset: 2783e0cb013b89a9b5c5de65652dec19c0bab3ce
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 688445d15ac2c497396b682f69c57ccd484f5f25
          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: 0c74c57cedff2b36bb37ca68a5338d1c49991496
          untrusted/project_0/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 0c74c57cedff2b36bb37ca68a5338d1c49991496
          untrusted/project_1/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 688445d15ac2c497396b682f69c57ccd484f5f25
          untrusted/project_2/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/zuul-jobs/playbooks/yamllint/run.yaml
          roles:
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_0/zuul-config
            link_target: untrusted/project_1/github.com/osism/zuul-config
            role_path: ansible/playbook_0/role_0/zuul-config/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/playbook_0/role_1/openinfra-zuul-jobs
            link_target: untrusted/project_2/github.com/osism/openinfra-zuul-jobs
            role_path: ansible/playbook_0/role_1/openinfra-zuul-jobs/roles
          - checkout: main
            checkout_description: playbook branch
            link_name: ansible/playbook_0/role_2/zuul-jobs
            link_target: untrusted/project_0/github.com/osism/zuul-jobs
            role_path: ansible/playbook_0/role_2/zuul-jobs/roles
      post_review: false
      post_timeout: null
      pre_timeout: null
      project:
        canonical_hostname: github.com
        canonical_name: github.com/osism/ansible-collection-services
        name: osism/ansible-collection-services
        short_name: ansible-collection-services
        src_dir: src/github.com/osism/ansible-collection-services
      projects:
        github.com/osism/ansible-collection-services:
          canonical_hostname: github.com
          canonical_name: github.com/osism/ansible-collection-services
          checkout: main
          checkout_description: zuul branch
          commit: f6c0963814ade1fe9d19639317a986e09e97fcab
          name: osism/ansible-collection-services
          required: false
          short_name: ansible-collection-services
          src_dir: src/github.com/osism/ansible-collection-services
      ref: refs/pull/2092/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
