all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fe3b:c8c2
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 7f14890e-cba2-4dbc-a3ad-2ae40d100492
        host_id: 5afd8fc909abddfe2ce3a956a91bbe56629648b7209fd0acfa541862
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fe3b:c8c2
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.0.102
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.169
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fe3b:c8c2
        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 flake8 explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-jobs/.zuul.yaml@main#32>'
      - '<Job flake8 explicit: None implied: None source: osism/netbox-manager/.zuul.yaml@main#39>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: 0356d92fc4734e1d96cbcccb6b86302f
      build_refs:
      - branch: main
        change: '266'
        change_message: "Unit tests: Tier 4 \u2014 handle_file orchestration\n\nCloses
          #252\n\nTier 4 of the #232 unit-test rollout: branch-test `handle_file`
          in `netbox_manager/main.py`, the orchestration glue that loads a YAML resource
          file, validates its structure, dispatches each task to the right builder,
          applies the task/device filters, renders a playbook, and \u2014 unless dry-run
          or show-playbooks \u2014 invokes `ansible_runner.run`.\n\nThis is a **test-only**
          change. No production code is touched.\n\n## Change set (in commit order)\n\n###
          `99cee8c` Add loguru caplog bridge and ansible_runner recorder fixtures\nAdds
          two shared fixtures to `tests/conftest.py` for the #232 tiers, starting
          with Tier 4:\n\n- **`caplog` override** \u2014 registers pytest's capture
          handler as a loguru sink for the duration of each test, so tests can assert
          on the loguru output `netbox_manager.main` emits (pytest's stock `caplog`
          does not see loguru messages, since loguru does not propagate through the
          standard `logging` root). This is the recipe from the loguru docs.\n- **`mock_ansible_runner`
          recorder** \u2014 swaps `main.ansible_runner` for a fake exposing `.calls`
          (the kwargs of each `run` call) and a mutable `.status`, so tests can assert
          *whether* \u2014 and *with which kwargs* \u2014 playbook execution was reached,
          without running Ansible.\n\nBoth fixtures carry docstrings noting their
          reuse by the later tiers (#256, #258, #259), and the stale \"belongs to
          later tiers\" conftest comment is updated now that the ansible_runner mock
          exists.\n\n### `ca99794` Add unit tests for handle_file orchestration\nAdds
          `tests/unit/netbox_manager/test_handle_file.py` \u2014 33 tests covering
          all four branch families of `handle_file`:\n\n- **File load / IO errors:**
          missing file, malformed YAML (with line/column enrichment), generic read
          error, empty file, non-list root \u2014 pinning both the `fail_fast` exit
          and the silent-return paths.\n- **Per-task validation:** non-dict task (continue,
          rest still processed), empty task dict, register-only task, and register-popped-before-first-key
          ordering.\n- **Per-key dispatch:** `vars` deep-merge (later wins), `debug`,
          `uri`, the default NetBox path through both filter gates, filter skips,
          and `ignore_errors` propagation across task types.\n- **Post-loop / execution:**
          task-processing failure, no-tasks-after-filter, show_playbooks, dry-run,
          the `ansible_runner.run` kwargs (verbosity/envvars/inventory/playbook),
          and the failed-status gate.\n\nThe tests drive the **real** Tier 2 builders
          (`create_netbox_task` / `create_uri_task` / `create_ansible_playbook`) and
          the **real** `load_global_vars`, mocking only `ansible_runner` (shared `mock_ansible_runner`)
          and the filesystem (`tmp_path`), so they exercise `handle_file`'s own logic
          rather than re-testing its callees.\n\n## Notes for the reviewer\n\n- No
          divergence from the issue: the branch delivers the Tier 4 `handle_file`
          coverage requested in #252, and its scope stays within tests + shared fixtures.\n-
          Where PyYAML error messages are asserted, only stable substrings are pinned
          \u2014 the exact `problem`/`context` wording varies across PyYAML versions.\n-
          An autouse `_no_global_vars` fixture forces `settings.VARS` to `None` so
          `load_global_vars` stays hermetic if a dev environment exports `NETBOX_MANAGER_VARS`.\n\n---\n\n_Implemented
          by [planwerk-agent](https://github.com/planwerk/planwerk-agent) c425ac6
          with Claude:claude-opus-4-8_\n"
        change_url: https://github.com/osism/netbox-manager/pull/266
        commit_id: ca99794cbc8b5a7f1a4b075a84b367c0f6185428
        patchset: ca99794cbc8b5a7f1a4b075a84b367c0f6185428
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/netbox-manager
          name: osism/netbox-manager
          short_name: netbox-manager
        src_dir: src/github.com/osism/netbox-manager
        topic: null
      buildset: f68b21422e6743038b8bae04716bd023
      buildset_refs:
      - branch: main
        change: '266'
        change_message: "Unit tests: Tier 4 \u2014 handle_file orchestration\n\nCloses
          #252\n\nTier 4 of the #232 unit-test rollout: branch-test `handle_file`
          in `netbox_manager/main.py`, the orchestration glue that loads a YAML resource
          file, validates its structure, dispatches each task to the right builder,
          applies the task/device filters, renders a playbook, and \u2014 unless dry-run
          or show-playbooks \u2014 invokes `ansible_runner.run`.\n\nThis is a **test-only**
          change. No production code is touched.\n\n## Change set (in commit order)\n\n###
          `99cee8c` Add loguru caplog bridge and ansible_runner recorder fixtures\nAdds
          two shared fixtures to `tests/conftest.py` for the #232 tiers, starting
          with Tier 4:\n\n- **`caplog` override** \u2014 registers pytest's capture
          handler as a loguru sink for the duration of each test, so tests can assert
          on the loguru output `netbox_manager.main` emits (pytest's stock `caplog`
          does not see loguru messages, since loguru does not propagate through the
          standard `logging` root). This is the recipe from the loguru docs.\n- **`mock_ansible_runner`
          recorder** \u2014 swaps `main.ansible_runner` for a fake exposing `.calls`
          (the kwargs of each `run` call) and a mutable `.status`, so tests can assert
          *whether* \u2014 and *with which kwargs* \u2014 playbook execution was reached,
          without running Ansible.\n\nBoth fixtures carry docstrings noting their
          reuse by the later tiers (#256, #258, #259), and the stale \"belongs to
          later tiers\" conftest comment is updated now that the ansible_runner mock
          exists.\n\n### `ca99794` Add unit tests for handle_file orchestration\nAdds
          `tests/unit/netbox_manager/test_handle_file.py` \u2014 33 tests covering
          all four branch families of `handle_file`:\n\n- **File load / IO errors:**
          missing file, malformed YAML (with line/column enrichment), generic read
          error, empty file, non-list root \u2014 pinning both the `fail_fast` exit
          and the silent-return paths.\n- **Per-task validation:** non-dict task (continue,
          rest still processed), empty task dict, register-only task, and register-popped-before-first-key
          ordering.\n- **Per-key dispatch:** `vars` deep-merge (later wins), `debug`,
          `uri`, the default NetBox path through both filter gates, filter skips,
          and `ignore_errors` propagation across task types.\n- **Post-loop / execution:**
          task-processing failure, no-tasks-after-filter, show_playbooks, dry-run,
          the `ansible_runner.run` kwargs (verbosity/envvars/inventory/playbook),
          and the failed-status gate.\n\nThe tests drive the **real** Tier 2 builders
          (`create_netbox_task` / `create_uri_task` / `create_ansible_playbook`) and
          the **real** `load_global_vars`, mocking only `ansible_runner` (shared `mock_ansible_runner`)
          and the filesystem (`tmp_path`), so they exercise `handle_file`'s own logic
          rather than re-testing its callees.\n\n## Notes for the reviewer\n\n- No
          divergence from the issue: the branch delivers the Tier 4 `handle_file`
          coverage requested in #252, and its scope stays within tests + shared fixtures.\n-
          Where PyYAML error messages are asserted, only stable substrings are pinned
          \u2014 the exact `problem`/`context` wording varies across PyYAML versions.\n-
          An autouse `_no_global_vars` fixture forces `settings.VARS` to `None` so
          `load_global_vars` stays hermetic if a dev environment exports `NETBOX_MANAGER_VARS`.\n\n---\n\n_Implemented
          by [planwerk-agent](https://github.com/planwerk/planwerk-agent) c425ac6
          with Claude:claude-opus-4-8_\n"
        change_url: https://github.com/osism/netbox-manager/pull/266
        commit_id: ca99794cbc8b5a7f1a4b075a84b367c0f6185428
        patchset: ca99794cbc8b5a7f1a4b075a84b367c0f6185428
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/netbox-manager
          name: osism/netbox-manager
          short_name: netbox-manager
        src_dir: src/github.com/osism/netbox-manager
        topic: null
      change: '266'
      change_message: "Unit tests: Tier 4 \u2014 handle_file orchestration\n\nCloses
        #252\n\nTier 4 of the #232 unit-test rollout: branch-test `handle_file` in
        `netbox_manager/main.py`, the orchestration glue that loads a YAML resource
        file, validates its structure, dispatches each task to the right builder,
        applies the task/device filters, renders a playbook, and \u2014 unless dry-run
        or show-playbooks \u2014 invokes `ansible_runner.run`.\n\nThis is a **test-only**
        change. No production code is touched.\n\n## Change set (in commit order)\n\n###
        `99cee8c` Add loguru caplog bridge and ansible_runner recorder fixtures\nAdds
        two shared fixtures to `tests/conftest.py` for the #232 tiers, starting with
        Tier 4:\n\n- **`caplog` override** \u2014 registers pytest's capture handler
        as a loguru sink for the duration of each test, so tests can assert on the
        loguru output `netbox_manager.main` emits (pytest's stock `caplog` does not
        see loguru messages, since loguru does not propagate through the standard
        `logging` root). This is the recipe from the loguru docs.\n- **`mock_ansible_runner`
        recorder** \u2014 swaps `main.ansible_runner` for a fake exposing `.calls`
        (the kwargs of each `run` call) and a mutable `.status`, so tests can assert
        *whether* \u2014 and *with which kwargs* \u2014 playbook execution was reached,
        without running Ansible.\n\nBoth fixtures carry docstrings noting their reuse
        by the later tiers (#256, #258, #259), and the stale \"belongs to later tiers\"
        conftest comment is updated now that the ansible_runner mock exists.\n\n###
        `ca99794` Add unit tests for handle_file orchestration\nAdds `tests/unit/netbox_manager/test_handle_file.py`
        \u2014 33 tests covering all four branch families of `handle_file`:\n\n- **File
        load / IO errors:** missing file, malformed YAML (with line/column enrichment),
        generic read error, empty file, non-list root \u2014 pinning both the `fail_fast`
        exit and the silent-return paths.\n- **Per-task validation:** non-dict task
        (continue, rest still processed), empty task dict, register-only task, and
        register-popped-before-first-key ordering.\n- **Per-key dispatch:** `vars`
        deep-merge (later wins), `debug`, `uri`, the default NetBox path through both
        filter gates, filter skips, and `ignore_errors` propagation across task types.\n-
        **Post-loop / execution:** task-processing failure, no-tasks-after-filter,
        show_playbooks, dry-run, the `ansible_runner.run` kwargs (verbosity/envvars/inventory/playbook),
        and the failed-status gate.\n\nThe tests drive the **real** Tier 2 builders
        (`create_netbox_task` / `create_uri_task` / `create_ansible_playbook`) and
        the **real** `load_global_vars`, mocking only `ansible_runner` (shared `mock_ansible_runner`)
        and the filesystem (`tmp_path`), so they exercise `handle_file`'s own logic
        rather than re-testing its callees.\n\n## Notes for the reviewer\n\n- No divergence
        from the issue: the branch delivers the Tier 4 `handle_file` coverage requested
        in #252, and its scope stays within tests + shared fixtures.\n- Where PyYAML
        error messages are asserted, only stable substrings are pinned \u2014 the
        exact `problem`/`context` wording varies across PyYAML versions.\n- An autouse
        `_no_global_vars` fixture forces `settings.VARS` to `None` so `load_global_vars`
        stays hermetic if a dev environment exports `NETBOX_MANAGER_VARS`.\n\n---\n\n_Implemented
        by [planwerk-agent](https://github.com/planwerk/planwerk-agent) c425ac6 with
        Claude:claude-opus-4-8_\n"
      change_url: https://github.com/osism/netbox-manager/pull/266
      child_jobs: []
      commit_id: ca99794cbc8b5a7f1a4b075a84b367c0f6185428
      event_id: a056def0-75ee-11f1-898c-434e08adf496
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/0356d92fc4734e1d96cbcccb6b86302f/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/0356d92fc4734e1d96cbcccb6b86302f/work/logs
        result_data_file: /var/lib/zuul/builds/0356d92fc4734e1d96cbcccb6b86302f/work/results.json
        src_root: /var/lib/zuul/builds/0356d92fc4734e1d96cbcccb6b86302f/work/src
        work_root: /var/lib/zuul/builds/0356d92fc4734e1d96cbcccb6b86302f/work
      include_vars: []
      items:
      - branch: main
        change: '266'
        change_message: "Unit tests: Tier 4 \u2014 handle_file orchestration\n\nCloses
          #252\n\nTier 4 of the #232 unit-test rollout: branch-test `handle_file`
          in `netbox_manager/main.py`, the orchestration glue that loads a YAML resource
          file, validates its structure, dispatches each task to the right builder,
          applies the task/device filters, renders a playbook, and \u2014 unless dry-run
          or show-playbooks \u2014 invokes `ansible_runner.run`.\n\nThis is a **test-only**
          change. No production code is touched.\n\n## Change set (in commit order)\n\n###
          `99cee8c` Add loguru caplog bridge and ansible_runner recorder fixtures\nAdds
          two shared fixtures to `tests/conftest.py` for the #232 tiers, starting
          with Tier 4:\n\n- **`caplog` override** \u2014 registers pytest's capture
          handler as a loguru sink for the duration of each test, so tests can assert
          on the loguru output `netbox_manager.main` emits (pytest's stock `caplog`
          does not see loguru messages, since loguru does not propagate through the
          standard `logging` root). This is the recipe from the loguru docs.\n- **`mock_ansible_runner`
          recorder** \u2014 swaps `main.ansible_runner` for a fake exposing `.calls`
          (the kwargs of each `run` call) and a mutable `.status`, so tests can assert
          *whether* \u2014 and *with which kwargs* \u2014 playbook execution was reached,
          without running Ansible.\n\nBoth fixtures carry docstrings noting their
          reuse by the later tiers (#256, #258, #259), and the stale \"belongs to
          later tiers\" conftest comment is updated now that the ansible_runner mock
          exists.\n\n### `ca99794` Add unit tests for handle_file orchestration\nAdds
          `tests/unit/netbox_manager/test_handle_file.py` \u2014 33 tests covering
          all four branch families of `handle_file`:\n\n- **File load / IO errors:**
          missing file, malformed YAML (with line/column enrichment), generic read
          error, empty file, non-list root \u2014 pinning both the `fail_fast` exit
          and the silent-return paths.\n- **Per-task validation:** non-dict task (continue,
          rest still processed), empty task dict, register-only task, and register-popped-before-first-key
          ordering.\n- **Per-key dispatch:** `vars` deep-merge (later wins), `debug`,
          `uri`, the default NetBox path through both filter gates, filter skips,
          and `ignore_errors` propagation across task types.\n- **Post-loop / execution:**
          task-processing failure, no-tasks-after-filter, show_playbooks, dry-run,
          the `ansible_runner.run` kwargs (verbosity/envvars/inventory/playbook),
          and the failed-status gate.\n\nThe tests drive the **real** Tier 2 builders
          (`create_netbox_task` / `create_uri_task` / `create_ansible_playbook`) and
          the **real** `load_global_vars`, mocking only `ansible_runner` (shared `mock_ansible_runner`)
          and the filesystem (`tmp_path`), so they exercise `handle_file`'s own logic
          rather than re-testing its callees.\n\n## Notes for the reviewer\n\n- No
          divergence from the issue: the branch delivers the Tier 4 `handle_file`
          coverage requested in #252, and its scope stays within tests + shared fixtures.\n-
          Where PyYAML error messages are asserted, only stable substrings are pinned
          \u2014 the exact `problem`/`context` wording varies across PyYAML versions.\n-
          An autouse `_no_global_vars` fixture forces `settings.VARS` to `None` so
          `load_global_vars` stays hermetic if a dev environment exports `NETBOX_MANAGER_VARS`.\n\n---\n\n_Implemented
          by [planwerk-agent](https://github.com/planwerk/planwerk-agent) c425ac6
          with Claude:claude-opus-4-8_\n"
        change_url: https://github.com/osism/netbox-manager/pull/266
        commit_id: ca99794cbc8b5a7f1a4b075a84b367c0f6185428
        patchset: ca99794cbc8b5a7f1a4b075a84b367c0f6185428
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/netbox-manager
          name: osism/netbox-manager
          short_name: netbox-manager
          src_dir: src/github.com/osism/netbox-manager
        topic: null
      job: flake8
      jobtags: []
      max_attempts: 3
      message: VW5pdCB0ZXN0czogVGllciA0IOKAlCBoYW5kbGVfZmlsZSBvcmNoZXN0cmF0aW9uCgpDbG9zZXMgIzI1MgoKVGllciA0IG9mIHRoZSAjMjMyIHVuaXQtdGVzdCByb2xsb3V0OiBicmFuY2gtdGVzdCBgaGFuZGxlX2ZpbGVgIGluIGBuZXRib3hfbWFuYWdlci9tYWluLnB5YCwgdGhlIG9yY2hlc3RyYXRpb24gZ2x1ZSB0aGF0IGxvYWRzIGEgWUFNTCByZXNvdXJjZSBmaWxlLCB2YWxpZGF0ZXMgaXRzIHN0cnVjdHVyZSwgZGlzcGF0Y2hlcyBlYWNoIHRhc2sgdG8gdGhlIHJpZ2h0IGJ1aWxkZXIsIGFwcGxpZXMgdGhlIHRhc2svZGV2aWNlIGZpbHRlcnMsIHJlbmRlcnMgYSBwbGF5Ym9vaywgYW5kIOKAlCB1bmxlc3MgZHJ5LXJ1biBvciBzaG93LXBsYXlib29rcyDigJQgaW52b2tlcyBgYW5zaWJsZV9ydW5uZXIucnVuYC4KClRoaXMgaXMgYSAqKnRlc3Qtb25seSoqIGNoYW5nZS4gTm8gcHJvZHVjdGlvbiBjb2RlIGlzIHRvdWNoZWQuCgojIyBDaGFuZ2Ugc2V0IChpbiBjb21taXQgb3JkZXIpCgojIyMgYDk5Y2VlOGNgIEFkZCBsb2d1cnUgY2FwbG9nIGJyaWRnZSBhbmQgYW5zaWJsZV9ydW5uZXIgcmVjb3JkZXIgZml4dHVyZXMKQWRkcyB0d28gc2hhcmVkIGZpeHR1cmVzIHRvIGB0ZXN0cy9jb25mdGVzdC5weWAgZm9yIHRoZSAjMjMyIHRpZXJzLCBzdGFydGluZyB3aXRoIFRpZXIgNDoKCi0gKipgY2FwbG9nYCBvdmVycmlkZSoqIOKAlCByZWdpc3RlcnMgcHl0ZXN0J3MgY2FwdHVyZSBoYW5kbGVyIGFzIGEgbG9ndXJ1IHNpbmsgZm9yIHRoZSBkdXJhdGlvbiBvZiBlYWNoIHRlc3QsIHNvIHRlc3RzIGNhbiBhc3NlcnQgb24gdGhlIGxvZ3VydSBvdXRwdXQgYG5ldGJveF9tYW5hZ2VyLm1haW5gIGVtaXRzIChweXRlc3QncyBzdG9jayBgY2FwbG9nYCBkb2VzIG5vdCBzZWUgbG9ndXJ1IG1lc3NhZ2VzLCBzaW5jZSBsb2d1cnUgZG9lcyBub3QgcHJvcGFnYXRlIHRocm91Z2ggdGhlIHN0YW5kYXJkIGBsb2dnaW5nYCByb290KS4gVGhpcyBpcyB0aGUgcmVjaXBlIGZyb20gdGhlIGxvZ3VydSBkb2NzLgotICoqYG1vY2tfYW5zaWJsZV9ydW5uZXJgIHJlY29yZGVyKiog4oCUIHN3YXBzIGBtYWluLmFuc2libGVfcnVubmVyYCBmb3IgYSBmYWtlIGV4cG9zaW5nIGAuY2FsbHNgICh0aGUga3dhcmdzIG9mIGVhY2ggYHJ1bmAgY2FsbCkgYW5kIGEgbXV0YWJsZSBgLnN0YXR1c2AsIHNvIHRlc3RzIGNhbiBhc3NlcnQgKndoZXRoZXIqIOKAlCBhbmQgKndpdGggd2hpY2gga3dhcmdzKiDigJQgcGxheWJvb2sgZXhlY3V0aW9uIHdhcyByZWFjaGVkLCB3aXRob3V0IHJ1bm5pbmcgQW5zaWJsZS4KCkJvdGggZml4dHVyZXMgY2FycnkgZG9jc3RyaW5ncyBub3RpbmcgdGhlaXIgcmV1c2UgYnkgdGhlIGxhdGVyIHRpZXJzICgjMjU2LCAjMjU4LCAjMjU5KSwgYW5kIHRoZSBzdGFsZSAiYmVsb25ncyB0byBsYXRlciB0aWVycyIgY29uZnRlc3QgY29tbWVudCBpcyB1cGRhdGVkIG5vdyB0aGF0IHRoZSBhbnNpYmxlX3J1bm5lciBtb2NrIGV4aXN0cy4KCiMjIyBgY2E5OTc5NGAgQWRkIHVuaXQgdGVzdHMgZm9yIGhhbmRsZV9maWxlIG9yY2hlc3RyYXRpb24KQWRkcyBgdGVzdHMvdW5pdC9uZXRib3hfbWFuYWdlci90ZXN0X2hhbmRsZV9maWxlLnB5YCDigJQgMzMgdGVzdHMgY292ZXJpbmcgYWxsIGZvdXIgYnJhbmNoIGZhbWlsaWVzIG9mIGBoYW5kbGVfZmlsZWA6CgotICoqRmlsZSBsb2FkIC8gSU8gZXJyb3JzOioqIG1pc3NpbmcgZmlsZSwgbWFsZm9ybWVkIFlBTUwgKHdpdGggbGluZS9jb2x1bW4gZW5yaWNobWVudCksIGdlbmVyaWMgcmVhZCBlcnJvciwgZW1wdHkgZmlsZSwgbm9uLWxpc3Qgcm9vdCDigJQgcGlubmluZyBib3RoIHRoZSBgZmFpbF9mYXN0YCBleGl0IGFuZCB0aGUgc2lsZW50LXJldHVybiBwYXRocy4KLSAqKlBlci10YXNrIHZhbGlkYXRpb246Kiogbm9uLWRpY3QgdGFzayAoY29udGludWUsIHJlc3Qgc3RpbGwgcHJvY2Vzc2VkKSwgZW1wdHkgdGFzayBkaWN0LCByZWdpc3Rlci1vbmx5IHRhc2ssIGFuZCByZWdpc3Rlci1wb3BwZWQtYmVmb3JlLWZpcnN0LWtleSBvcmRlcmluZy4KLSAqKlBlci1rZXkgZGlzcGF0Y2g6KiogYHZhcnNgIGRlZXAtbWVyZ2UgKGxhdGVyIHdpbnMpLCBgZGVidWdgLCBgdXJpYCwgdGhlIGRlZmF1bHQgTmV0Qm94IHBhdGggdGhyb3VnaCBib3RoIGZpbHRlciBnYXRlcywgZmlsdGVyIHNraXBzLCBhbmQgYGlnbm9yZV9lcnJvcnNgIHByb3BhZ2F0aW9uIGFjcm9zcyB0YXNrIHR5cGVzLgotICoqUG9zdC1sb29wIC8gZXhlY3V0aW9uOioqIHRhc2stcHJvY2Vzc2luZyBmYWlsdXJlLCBuby10YXNrcy1hZnRlci1maWx0ZXIsIHNob3dfcGxheWJvb2tzLCBkcnktcnVuLCB0aGUgYGFuc2libGVfcnVubmVyLnJ1bmAga3dhcmdzICh2ZXJib3NpdHkvZW52dmFycy9pbnZlbnRvcnkvcGxheWJvb2spLCBhbmQgdGhlIGZhaWxlZC1zdGF0dXMgZ2F0ZS4KClRoZSB0ZXN0cyBkcml2ZSB0aGUgKipyZWFsKiogVGllciAyIGJ1aWxkZXJzIChgY3JlYXRlX25ldGJveF90YXNrYCAvIGBjcmVhdGVfdXJpX3Rhc2tgIC8gYGNyZWF0ZV9hbnNpYmxlX3BsYXlib29rYCkgYW5kIHRoZSAqKnJlYWwqKiBgbG9hZF9nbG9iYWxfdmFyc2AsIG1vY2tpbmcgb25seSBgYW5zaWJsZV9ydW5uZXJgIChzaGFyZWQgYG1vY2tfYW5zaWJsZV9ydW5uZXJgKSBhbmQgdGhlIGZpbGVzeXN0ZW0gKGB0bXBfcGF0aGApLCBzbyB0aGV5IGV4ZXJjaXNlIGBoYW5kbGVfZmlsZWAncyBvd24gbG9naWMgcmF0aGVyIHRoYW4gcmUtdGVzdGluZyBpdHMgY2FsbGVlcy4KCiMjIE5vdGVzIGZvciB0aGUgcmV2aWV3ZXIKCi0gTm8gZGl2ZXJnZW5jZSBmcm9tIHRoZSBpc3N1ZTogdGhlIGJyYW5jaCBkZWxpdmVycyB0aGUgVGllciA0IGBoYW5kbGVfZmlsZWAgY292ZXJhZ2UgcmVxdWVzdGVkIGluICMyNTIsIGFuZCBpdHMgc2NvcGUgc3RheXMgd2l0aGluIHRlc3RzICsgc2hhcmVkIGZpeHR1cmVzLgotIFdoZXJlIFB5WUFNTCBlcnJvciBtZXNzYWdlcyBhcmUgYXNzZXJ0ZWQsIG9ubHkgc3RhYmxlIHN1YnN0cmluZ3MgYXJlIHBpbm5lZCDigJQgdGhlIGV4YWN0IGBwcm9ibGVtYC9gY29udGV4dGAgd29yZGluZyB2YXJpZXMgYWNyb3NzIFB5WUFNTCB2ZXJzaW9ucy4KLSBBbiBhdXRvdXNlIGBfbm9fZ2xvYmFsX3ZhcnNgIGZpeHR1cmUgZm9yY2VzIGBzZXR0aW5ncy5WQVJTYCB0byBgTm9uZWAgc28gYGxvYWRfZ2xvYmFsX3ZhcnNgIHN0YXlzIGhlcm1ldGljIGlmIGEgZGV2IGVudmlyb25tZW50IGV4cG9ydHMgYE5FVEJPWF9NQU5BR0VSX1ZBUlNgLgoKLS0tCgpfSW1wbGVtZW50ZWQgYnkgW3BsYW53ZXJrLWFnZW50XShodHRwczovL2dpdGh1Yi5jb20vcGxhbndlcmsvcGxhbndlcmstYWdlbnQpIGM0MjVhYzYgd2l0aCBDbGF1ZGU6Y2xhdWRlLW9wdXMtNC04Xwo=
      patchset: ca99794cbc8b5a7f1a4b075a84b367c0f6185428
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 71b711c422c10c242a8f785dc6d41ed9d12e9cd3
          trusted/project_1/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 242732586e2cba04d04867d3e302888c766bc231
          trusted/project_2/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 1d71e58c93442038e695a5d883d57a603182c7ae
          untrusted/project_0/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 1d71e58c93442038e695a5d883d57a603182c7ae
          untrusted/project_1/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 71b711c422c10c242a8f785dc6d41ed9d12e9cd3
          untrusted/project_2/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 242732586e2cba04d04867d3e302888c766bc231
        playbooks:
        - path: untrusted/project_0/github.com/osism/zuul-jobs/playbooks/flake8/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/netbox-manager
        name: osism/netbox-manager
        short_name: netbox-manager
        src_dir: src/github.com/osism/netbox-manager
      projects:
        github.com/osism/netbox-manager:
          canonical_hostname: github.com
          canonical_name: github.com/osism/netbox-manager
          checkout: main
          checkout_description: zuul branch
          commit: cd10a82899fc163aceb01648ac576d24a8ba6d2f
          name: osism/netbox-manager
          required: false
          short_name: netbox-manager
          src_dir: src/github.com/osism/netbox-manager
      ref: refs/pull/266/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
