all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fe2b:215f
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: f862b46d-38a4-4b5f-a40f-94d2a504f52b
        host_id: d2c528664e1bd332192bb574345deb0c6c7158061222e4a6c036b5ef
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fe2b:215f
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.7.192
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.47
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fe2b:215f
        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 ansible-collection-ensure-readme explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-jobs/.zuul.yaml@main#2>'
      - '<Job ansible-collection-ensure-readme explicit: None implied: None source:
        osism/ansible-collection-services/.zuul.yaml@main#498>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: 7c3aabcf121c41e2bd1cff7e3ffc5646
      build_refs:
      - branch: main
        change: '2119'
        change_message: "netbox: don't restart during initial migration\n\n## Problem\n\nA
          first-time netbox deploy can intermittently leave `netbox-netbox-1`\ncrash-looping,
          with the data load failing (*\"Failed to establish connection\nto netbox\"*).
          The container log shows, on every start:\n\n```\nCommandError: Conflicting
          migrations detected; multiple leaf nodes in the\nmigration graph: (0002_squashed,
          0208_devicerole_uniqueness in dcim).\n```\n\n`django_migrations` for `dcim`
          is stuck partway (observed at `0001\u20260033`),\nand the state is **unrecoverable**
          without wiping the netbox database.\n\n## Root cause\n\nNetBox v4.3.x ships
          **squashed** dcim migrations. The role restarts the\nservice via the `Restart
          netbox service` handler, notified by the\n`Copy docker-compose.yml file`
          task. On a first deploy that copy always\nreports `changed`, so the restart
          fires right after `Manage netbox service`\nstarts the stack \u2014 **while
          netbox is still running its initial migration**.\n\nIf that restart lands
          while the big `0003_squashed_0130` squash is recording\nits ~128 replaced
          rows (dcim rushing `3 \u2192 130`), the squash is left\nhalf-recorded. Django
          can then reconcile neither the squash nor the remaining\nchain \u2192 two
          leaf nodes \u2192 `migrate` aborts on every start \u2192 crash-loop.\n\nIt
          was masked until recently: before the worker-start fix, the netbox phase\n**failed**
          on first run and operators re-ran it; the re-run (compose\nunchanged) issued
          no restart, so the migration completed undisturbed. With\nthe worker fix
          the phase passes first-run \u2014 exactly when the restart fires.\n\n- osism/ansible-collection-services#2091\n\n##
          Fix\n\nGate `restart-service.yml` on a health check: block until no netbox
          container\nis `created`/`exited`/`starting`/`unhealthy` \u2014 i.e. until
          migrations have\ncompleted \u2014 before any stop or restart. A legitimate
          config-update restart on\nan already-healthy service passes the gate immediately.\n\n##
          Validation status (why draft)\n\nThe race is millisecond-scale (the squash
          recording window) and **could not be\nreproduced on demand** \u2014 clean
          deploys succeed ~4/4, and a controlled interrupt\nof the *apply* phase recovers
          cleanly; only an interrupt inside the recording\nwindow corrupts. This change
          is therefore **defensive and unvalidated against\nthe live failure**; it
          should be exercised in CI/molecule (many iterations).\nReviewer input welcome
          on whether to instead suppress the redundant\nfirst-deploy restart outright.\n\nOut
          of scope (separate follow-up): the redundant first-deploy restart itself,\nand
          the always-true quoted-string postgres-version `when:` guard later in this\nfile.\n\n\U0001F916
          Generated with [Claude Code](https://claude.com/claude-code)"
        change_url: https://github.com/osism/ansible-collection-services/pull/2119
        commit_id: ba3adf0236e3081865c0758dffe49eb34c87f0ec
        patchset: ba3adf0236e3081865c0758dffe49eb34c87f0ec
        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: 6e73d6f993e44ef48f359ce80a2ee820
      buildset_refs:
      - branch: main
        change: '2119'
        change_message: "netbox: don't restart during initial migration\n\n## Problem\n\nA
          first-time netbox deploy can intermittently leave `netbox-netbox-1`\ncrash-looping,
          with the data load failing (*\"Failed to establish connection\nto netbox\"*).
          The container log shows, on every start:\n\n```\nCommandError: Conflicting
          migrations detected; multiple leaf nodes in the\nmigration graph: (0002_squashed,
          0208_devicerole_uniqueness in dcim).\n```\n\n`django_migrations` for `dcim`
          is stuck partway (observed at `0001\u20260033`),\nand the state is **unrecoverable**
          without wiping the netbox database.\n\n## Root cause\n\nNetBox v4.3.x ships
          **squashed** dcim migrations. The role restarts the\nservice via the `Restart
          netbox service` handler, notified by the\n`Copy docker-compose.yml file`
          task. On a first deploy that copy always\nreports `changed`, so the restart
          fires right after `Manage netbox service`\nstarts the stack \u2014 **while
          netbox is still running its initial migration**.\n\nIf that restart lands
          while the big `0003_squashed_0130` squash is recording\nits ~128 replaced
          rows (dcim rushing `3 \u2192 130`), the squash is left\nhalf-recorded. Django
          can then reconcile neither the squash nor the remaining\nchain \u2192 two
          leaf nodes \u2192 `migrate` aborts on every start \u2192 crash-loop.\n\nIt
          was masked until recently: before the worker-start fix, the netbox phase\n**failed**
          on first run and operators re-ran it; the re-run (compose\nunchanged) issued
          no restart, so the migration completed undisturbed. With\nthe worker fix
          the phase passes first-run \u2014 exactly when the restart fires.\n\n- osism/ansible-collection-services#2091\n\n##
          Fix\n\nGate `restart-service.yml` on a health check: block until no netbox
          container\nis `created`/`exited`/`starting`/`unhealthy` \u2014 i.e. until
          migrations have\ncompleted \u2014 before any stop or restart. A legitimate
          config-update restart on\nan already-healthy service passes the gate immediately.\n\n##
          Validation status (why draft)\n\nThe race is millisecond-scale (the squash
          recording window) and **could not be\nreproduced on demand** \u2014 clean
          deploys succeed ~4/4, and a controlled interrupt\nof the *apply* phase recovers
          cleanly; only an interrupt inside the recording\nwindow corrupts. This change
          is therefore **defensive and unvalidated against\nthe live failure**; it
          should be exercised in CI/molecule (many iterations).\nReviewer input welcome
          on whether to instead suppress the redundant\nfirst-deploy restart outright.\n\nOut
          of scope (separate follow-up): the redundant first-deploy restart itself,\nand
          the always-true quoted-string postgres-version `when:` guard later in this\nfile.\n\n\U0001F916
          Generated with [Claude Code](https://claude.com/claude-code)"
        change_url: https://github.com/osism/ansible-collection-services/pull/2119
        commit_id: ba3adf0236e3081865c0758dffe49eb34c87f0ec
        patchset: ba3adf0236e3081865c0758dffe49eb34c87f0ec
        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: '2119'
      change_message: "netbox: don't restart during initial migration\n\n## Problem\n\nA
        first-time netbox deploy can intermittently leave `netbox-netbox-1`\ncrash-looping,
        with the data load failing (*\"Failed to establish connection\nto netbox\"*).
        The container log shows, on every start:\n\n```\nCommandError: Conflicting
        migrations detected; multiple leaf nodes in the\nmigration graph: (0002_squashed,
        0208_devicerole_uniqueness in dcim).\n```\n\n`django_migrations` for `dcim`
        is stuck partway (observed at `0001\u20260033`),\nand the state is **unrecoverable**
        without wiping the netbox database.\n\n## Root cause\n\nNetBox v4.3.x ships
        **squashed** dcim migrations. The role restarts the\nservice via the `Restart
        netbox service` handler, notified by the\n`Copy docker-compose.yml file` task.
        On a first deploy that copy always\nreports `changed`, so the restart fires
        right after `Manage netbox service`\nstarts the stack \u2014 **while netbox
        is still running its initial migration**.\n\nIf that restart lands while the
        big `0003_squashed_0130` squash is recording\nits ~128 replaced rows (dcim
        rushing `3 \u2192 130`), the squash is left\nhalf-recorded. Django can then
        reconcile neither the squash nor the remaining\nchain \u2192 two leaf nodes
        \u2192 `migrate` aborts on every start \u2192 crash-loop.\n\nIt was masked
        until recently: before the worker-start fix, the netbox phase\n**failed**
        on first run and operators re-ran it; the re-run (compose\nunchanged) issued
        no restart, so the migration completed undisturbed. With\nthe worker fix the
        phase passes first-run \u2014 exactly when the restart fires.\n\n- osism/ansible-collection-services#2091\n\n##
        Fix\n\nGate `restart-service.yml` on a health check: block until no netbox
        container\nis `created`/`exited`/`starting`/`unhealthy` \u2014 i.e. until
        migrations have\ncompleted \u2014 before any stop or restart. A legitimate
        config-update restart on\nan already-healthy service passes the gate immediately.\n\n##
        Validation status (why draft)\n\nThe race is millisecond-scale (the squash
        recording window) and **could not be\nreproduced on demand** \u2014 clean
        deploys succeed ~4/4, and a controlled interrupt\nof the *apply* phase recovers
        cleanly; only an interrupt inside the recording\nwindow corrupts. This change
        is therefore **defensive and unvalidated against\nthe live failure**; it should
        be exercised in CI/molecule (many iterations).\nReviewer input welcome on
        whether to instead suppress the redundant\nfirst-deploy restart outright.\n\nOut
        of scope (separate follow-up): the redundant first-deploy restart itself,\nand
        the always-true quoted-string postgres-version `when:` guard later in this\nfile.\n\n\U0001F916
        Generated with [Claude Code](https://claude.com/claude-code)"
      change_url: https://github.com/osism/ansible-collection-services/pull/2119
      child_jobs: []
      commit_id: ba3adf0236e3081865c0758dffe49eb34c87f0ec
      event_id: 0c5c6930-6c12-11f1-8287-4260b750880a
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/7c3aabcf121c41e2bd1cff7e3ffc5646/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/7c3aabcf121c41e2bd1cff7e3ffc5646/work/logs
        result_data_file: /var/lib/zuul/builds/7c3aabcf121c41e2bd1cff7e3ffc5646/work/results.json
        src_root: /var/lib/zuul/builds/7c3aabcf121c41e2bd1cff7e3ffc5646/work/src
        work_root: /var/lib/zuul/builds/7c3aabcf121c41e2bd1cff7e3ffc5646/work
      include_vars: []
      items:
      - branch: main
        change: '2119'
        change_message: "netbox: don't restart during initial migration\n\n## Problem\n\nA
          first-time netbox deploy can intermittently leave `netbox-netbox-1`\ncrash-looping,
          with the data load failing (*\"Failed to establish connection\nto netbox\"*).
          The container log shows, on every start:\n\n```\nCommandError: Conflicting
          migrations detected; multiple leaf nodes in the\nmigration graph: (0002_squashed,
          0208_devicerole_uniqueness in dcim).\n```\n\n`django_migrations` for `dcim`
          is stuck partway (observed at `0001\u20260033`),\nand the state is **unrecoverable**
          without wiping the netbox database.\n\n## Root cause\n\nNetBox v4.3.x ships
          **squashed** dcim migrations. The role restarts the\nservice via the `Restart
          netbox service` handler, notified by the\n`Copy docker-compose.yml file`
          task. On a first deploy that copy always\nreports `changed`, so the restart
          fires right after `Manage netbox service`\nstarts the stack \u2014 **while
          netbox is still running its initial migration**.\n\nIf that restart lands
          while the big `0003_squashed_0130` squash is recording\nits ~128 replaced
          rows (dcim rushing `3 \u2192 130`), the squash is left\nhalf-recorded. Django
          can then reconcile neither the squash nor the remaining\nchain \u2192 two
          leaf nodes \u2192 `migrate` aborts on every start \u2192 crash-loop.\n\nIt
          was masked until recently: before the worker-start fix, the netbox phase\n**failed**
          on first run and operators re-ran it; the re-run (compose\nunchanged) issued
          no restart, so the migration completed undisturbed. With\nthe worker fix
          the phase passes first-run \u2014 exactly when the restart fires.\n\n- osism/ansible-collection-services#2091\n\n##
          Fix\n\nGate `restart-service.yml` on a health check: block until no netbox
          container\nis `created`/`exited`/`starting`/`unhealthy` \u2014 i.e. until
          migrations have\ncompleted \u2014 before any stop or restart. A legitimate
          config-update restart on\nan already-healthy service passes the gate immediately.\n\n##
          Validation status (why draft)\n\nThe race is millisecond-scale (the squash
          recording window) and **could not be\nreproduced on demand** \u2014 clean
          deploys succeed ~4/4, and a controlled interrupt\nof the *apply* phase recovers
          cleanly; only an interrupt inside the recording\nwindow corrupts. This change
          is therefore **defensive and unvalidated against\nthe live failure**; it
          should be exercised in CI/molecule (many iterations).\nReviewer input welcome
          on whether to instead suppress the redundant\nfirst-deploy restart outright.\n\nOut
          of scope (separate follow-up): the redundant first-deploy restart itself,\nand
          the always-true quoted-string postgres-version `when:` guard later in this\nfile.\n\n\U0001F916
          Generated with [Claude Code](https://claude.com/claude-code)"
        change_url: https://github.com/osism/ansible-collection-services/pull/2119
        commit_id: ba3adf0236e3081865c0758dffe49eb34c87f0ec
        patchset: ba3adf0236e3081865c0758dffe49eb34c87f0ec
        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: ansible-collection-ensure-readme
      jobtags: []
      max_attempts: 3
      message: bmV0Ym94OiBkb24ndCByZXN0YXJ0IGR1cmluZyBpbml0aWFsIG1pZ3JhdGlvbgoKIyMgUHJvYmxlbQoKQSBmaXJzdC10aW1lIG5ldGJveCBkZXBsb3kgY2FuIGludGVybWl0dGVudGx5IGxlYXZlIGBuZXRib3gtbmV0Ym94LTFgCmNyYXNoLWxvb3BpbmcsIHdpdGggdGhlIGRhdGEgbG9hZCBmYWlsaW5nICgqIkZhaWxlZCB0byBlc3RhYmxpc2ggY29ubmVjdGlvbgp0byBuZXRib3giKikuIFRoZSBjb250YWluZXIgbG9nIHNob3dzLCBvbiBldmVyeSBzdGFydDoKCmBgYApDb21tYW5kRXJyb3I6IENvbmZsaWN0aW5nIG1pZ3JhdGlvbnMgZGV0ZWN0ZWQ7IG11bHRpcGxlIGxlYWYgbm9kZXMgaW4gdGhlCm1pZ3JhdGlvbiBncmFwaDogKDAwMDJfc3F1YXNoZWQsIDAyMDhfZGV2aWNlcm9sZV91bmlxdWVuZXNzIGluIGRjaW0pLgpgYGAKCmBkamFuZ29fbWlncmF0aW9uc2AgZm9yIGBkY2ltYCBpcyBzdHVjayBwYXJ0d2F5IChvYnNlcnZlZCBhdCBgMDAwMeKApjAwMzNgKSwKYW5kIHRoZSBzdGF0ZSBpcyAqKnVucmVjb3ZlcmFibGUqKiB3aXRob3V0IHdpcGluZyB0aGUgbmV0Ym94IGRhdGFiYXNlLgoKIyMgUm9vdCBjYXVzZQoKTmV0Qm94IHY0LjMueCBzaGlwcyAqKnNxdWFzaGVkKiogZGNpbSBtaWdyYXRpb25zLiBUaGUgcm9sZSByZXN0YXJ0cyB0aGUKc2VydmljZSB2aWEgdGhlIGBSZXN0YXJ0IG5ldGJveCBzZXJ2aWNlYCBoYW5kbGVyLCBub3RpZmllZCBieSB0aGUKYENvcHkgZG9ja2VyLWNvbXBvc2UueW1sIGZpbGVgIHRhc2suIE9uIGEgZmlyc3QgZGVwbG95IHRoYXQgY29weSBhbHdheXMKcmVwb3J0cyBgY2hhbmdlZGAsIHNvIHRoZSByZXN0YXJ0IGZpcmVzIHJpZ2h0IGFmdGVyIGBNYW5hZ2UgbmV0Ym94IHNlcnZpY2VgCnN0YXJ0cyB0aGUgc3RhY2sg4oCUICoqd2hpbGUgbmV0Ym94IGlzIHN0aWxsIHJ1bm5pbmcgaXRzIGluaXRpYWwgbWlncmF0aW9uKiouCgpJZiB0aGF0IHJlc3RhcnQgbGFuZHMgd2hpbGUgdGhlIGJpZyBgMDAwM19zcXVhc2hlZF8wMTMwYCBzcXVhc2ggaXMgcmVjb3JkaW5nCml0cyB+MTI4IHJlcGxhY2VkIHJvd3MgKGRjaW0gcnVzaGluZyBgMyDihpIgMTMwYCksIHRoZSBzcXVhc2ggaXMgbGVmdApoYWxmLXJlY29yZGVkLiBEamFuZ28gY2FuIHRoZW4gcmVjb25jaWxlIG5laXRoZXIgdGhlIHNxdWFzaCBub3IgdGhlIHJlbWFpbmluZwpjaGFpbiDihpIgdHdvIGxlYWYgbm9kZXMg4oaSIGBtaWdyYXRlYCBhYm9ydHMgb24gZXZlcnkgc3RhcnQg4oaSIGNyYXNoLWxvb3AuCgpJdCB3YXMgbWFza2VkIHVudGlsIHJlY2VudGx5OiBiZWZvcmUgdGhlIHdvcmtlci1zdGFydCBmaXgsIHRoZSBuZXRib3ggcGhhc2UKKipmYWlsZWQqKiBvbiBmaXJzdCBydW4gYW5kIG9wZXJhdG9ycyByZS1yYW4gaXQ7IHRoZSByZS1ydW4gKGNvbXBvc2UKdW5jaGFuZ2VkKSBpc3N1ZWQgbm8gcmVzdGFydCwgc28gdGhlIG1pZ3JhdGlvbiBjb21wbGV0ZWQgdW5kaXN0dXJiZWQuIFdpdGgKdGhlIHdvcmtlciBmaXggdGhlIHBoYXNlIHBhc3NlcyBmaXJzdC1ydW4g4oCUIGV4YWN0bHkgd2hlbiB0aGUgcmVzdGFydCBmaXJlcy4KCi0gb3Npc20vYW5zaWJsZS1jb2xsZWN0aW9uLXNlcnZpY2VzIzIwOTEKCiMjIEZpeAoKR2F0ZSBgcmVzdGFydC1zZXJ2aWNlLnltbGAgb24gYSBoZWFsdGggY2hlY2s6IGJsb2NrIHVudGlsIG5vIG5ldGJveCBjb250YWluZXIKaXMgYGNyZWF0ZWRgL2BleGl0ZWRgL2BzdGFydGluZ2AvYHVuaGVhbHRoeWAg4oCUIGkuZS4gdW50aWwgbWlncmF0aW9ucyBoYXZlCmNvbXBsZXRlZCDigJQgYmVmb3JlIGFueSBzdG9wIG9yIHJlc3RhcnQuIEEgbGVnaXRpbWF0ZSBjb25maWctdXBkYXRlIHJlc3RhcnQgb24KYW4gYWxyZWFkeS1oZWFsdGh5IHNlcnZpY2UgcGFzc2VzIHRoZSBnYXRlIGltbWVkaWF0ZWx5LgoKIyMgVmFsaWRhdGlvbiBzdGF0dXMgKHdoeSBkcmFmdCkKClRoZSByYWNlIGlzIG1pbGxpc2Vjb25kLXNjYWxlICh0aGUgc3F1YXNoIHJlY29yZGluZyB3aW5kb3cpIGFuZCAqKmNvdWxkIG5vdCBiZQpyZXByb2R1Y2VkIG9uIGRlbWFuZCoqIOKAlCBjbGVhbiBkZXBsb3lzIHN1Y2NlZWQgfjQvNCwgYW5kIGEgY29udHJvbGxlZCBpbnRlcnJ1cHQKb2YgdGhlICphcHBseSogcGhhc2UgcmVjb3ZlcnMgY2xlYW5seTsgb25seSBhbiBpbnRlcnJ1cHQgaW5zaWRlIHRoZSByZWNvcmRpbmcKd2luZG93IGNvcnJ1cHRzLiBUaGlzIGNoYW5nZSBpcyB0aGVyZWZvcmUgKipkZWZlbnNpdmUgYW5kIHVudmFsaWRhdGVkIGFnYWluc3QKdGhlIGxpdmUgZmFpbHVyZSoqOyBpdCBzaG91bGQgYmUgZXhlcmNpc2VkIGluIENJL21vbGVjdWxlIChtYW55IGl0ZXJhdGlvbnMpLgpSZXZpZXdlciBpbnB1dCB3ZWxjb21lIG9uIHdoZXRoZXIgdG8gaW5zdGVhZCBzdXBwcmVzcyB0aGUgcmVkdW5kYW50CmZpcnN0LWRlcGxveSByZXN0YXJ0IG91dHJpZ2h0LgoKT3V0IG9mIHNjb3BlIChzZXBhcmF0ZSBmb2xsb3ctdXApOiB0aGUgcmVkdW5kYW50IGZpcnN0LWRlcGxveSByZXN0YXJ0IGl0c2VsZiwKYW5kIHRoZSBhbHdheXMtdHJ1ZSBxdW90ZWQtc3RyaW5nIHBvc3RncmVzLXZlcnNpb24gYHdoZW46YCBndWFyZCBsYXRlciBpbiB0aGlzCmZpbGUuCgrwn6SWIEdlbmVyYXRlZCB3aXRoIFtDbGF1ZGUgQ29kZV0oaHR0cHM6Ly9jbGF1ZGUuY29tL2NsYXVkZS1jb2RlKQ==
      patchset: ba3adf0236e3081865c0758dffe49eb34c87f0ec
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 3d5c7b5973754999f7005857a00ce9168944f0f1
          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: 3d5c7b5973754999f7005857a00ce9168944f0f1
          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/ansible-collection-ensure-readme/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: 1800
      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: d2410f02e2142d32156f39592b64bdb133ca3dd3
          name: osism/ansible-collection-services
          required: false
          short_name: ansible-collection-services
          src_dir: src/github.com/osism/ansible-collection-services
      ref: refs/pull/2119/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
