all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fe4f:8e41
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: f6bace3a-031f-4fcd-8682-c3ca06204007
        host_id: 5afd8fc909abddfe2ce3a956a91bbe56629648b7209fd0acfa541862
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fe4f:8e41
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.7.104
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.88
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fe4f:8e41
        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/netbox-manager/.zuul.yaml@main#39>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: 48e5365e11ee4c559d9dc6433b24a21f
      build_refs:
      - branch: main
        change: '269'
        change_message: "Unit tests: Tier 3 \u2014 filesystem helpers in netbox_manager/main.py\n\n##
          Summary\n\nTier 3 of the unit-test rollout (#232): unit tests for the **filesystem
          helpers** in `netbox_manager/main.py` \u2014 the functions that read directories
          and YAML files, and (for `_write_autoconf_files`) write them. Every test
          is exercised entirely through pytest's `tmp_path` with a real on-disk directory
          layout \u2014 no live NetBox, no `pynetbox`/`ansible_runner` mocks. A handful
          drive `settings.VARS` / `settings.RESOURCES` via `monkeypatch` against the
          conftest settings stub from #233.\n\nThis is a test-only change: 3 new test
          files, 553 lines added, no production code touched.\n\nCloses #259\n\n##
          Change set (in commit order)\n\n### `bfe3e5e` \u2014 Add unit tests for
          find_yaml_files and load_global_vars\nGroups 1\u20132. `tests/unit/netbox_manager/test_filesystem_helpers.py`
          (180 lines):\n- **`find_yaml_files`** \u2014 the `*.yml`/`*.yaml` glob-and-sort
          contract: both extensions collected, filename-sorted across mixed extensions,
          non-YAML/dot-prefixed files excluded, empty directory \u2192 `[]`.\n- **`load_global_vars`**
          \u2014 all outcome branches: `VARS` unset/falsy \u2192 `{}` with no filesystem
          access; missing dir \u2192 `{}` debug-logged; multi-file `deep_merge` precedence
          in sorted-filename order; empty-file skip; and the malformed-YAML / `FileNotFoundError`
          / generic-`Exception` branches, which are logged-not-raised. Notably the
          error branches are reached with real filesystem shapes \u2014 a dangling
          symlink and a directory named `*.yml` \u2014 rather than by monkeypatching
          `os`/`glob`/`open`.\n\n### `ef628ec` \u2014 Add unit tests for resource
          and site folder discovery\nGroups 3\u20135. `tests/unit/netbox_manager/test_discover_resources.py`
          (221 lines):\n- **`discover_resource_files`** \u2014 top-level file collection
          (both extension passes), descent into numbered `^\\d+-.+` subdirectories
          with per-directory basename sorting, `vars`-directory exclusion, `--limit`
          filtering at both the file and directory level, and missing-dir tolerance
          (swallowed `FileNotFoundError`, returns what it could gather).\n- **`detect_site_folders`**
          \u2014 the name-sorted `full_path -> folder_name` map with file / non-numbered
          / empty-suffix exclusion, and `{}` when `resources_dir` is not a directory.\n-
          **`extract_device_names_from_folder`** \u2014 the device-name set with shape
          filtering (non-list root, non-dict items, non-dict/nameless `device` values),
          dedup, and per-file error tolerance.\n\n### `aa5fb7c` \u2014 Add unit tests
          for _write_autoconf_files\nGroup 6. `tests/unit/netbox_manager/test_write_autoconf_files.py`
          (152 lines):\n- **`_write_autoconf_files`** \u2014 the underscore-to-hyphen
          filename mapping (`device_interface` \u2192 `\u2026-device-interface.yml`),
          empty-bucket skip, the target-directory selection chain (explicit `resources_dir`
          \u2192 `settings.RESOURCES` fallback \u2192 bare filename in cwd), `os.makedirs(...,
          exist_ok=True)` creating a missing target dir, and the files-written return
          count. Content is round-tripped via `yaml.safe_load` only; `ProperIndentDumper`
          formatting stays Tier 2 (#249) per the issue's scope note.\n\n## Divergence
          from the issue\n\nNone. The three commits map one-to-one onto the issue's
          six function groups, and the file names match the \"author's discretion\"
          examples the issue suggests (`test_filesystem_helpers.py`, `test_discover_resources.py`,
          `test_write_autoconf_files.py`). No production code was modified, and everything
          explicitly listed as out of scope (`handle_file`, the autoconf pipeline,
          `ProperIndentDumper` formatting, coverage gates) was left untouched.\n---\n\n_Implemented
          by [planwerk-agent](https://github.com/planwerk/planwerk-agent) 6b3f3ea
          with Claude:claude-opus-4-8_\n"
        change_url: https://github.com/osism/netbox-manager/pull/269
        commit_id: 4fb5b154c6c95be7ae281ec73987ddc74f52f2ac
        patchset: 4fb5b154c6c95be7ae281ec73987ddc74f52f2ac
        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: 4ae654611cc1401b988ff3d826aefc2e
      buildset_refs:
      - branch: main
        change: '269'
        change_message: "Unit tests: Tier 3 \u2014 filesystem helpers in netbox_manager/main.py\n\n##
          Summary\n\nTier 3 of the unit-test rollout (#232): unit tests for the **filesystem
          helpers** in `netbox_manager/main.py` \u2014 the functions that read directories
          and YAML files, and (for `_write_autoconf_files`) write them. Every test
          is exercised entirely through pytest's `tmp_path` with a real on-disk directory
          layout \u2014 no live NetBox, no `pynetbox`/`ansible_runner` mocks. A handful
          drive `settings.VARS` / `settings.RESOURCES` via `monkeypatch` against the
          conftest settings stub from #233.\n\nThis is a test-only change: 3 new test
          files, 553 lines added, no production code touched.\n\nCloses #259\n\n##
          Change set (in commit order)\n\n### `bfe3e5e` \u2014 Add unit tests for
          find_yaml_files and load_global_vars\nGroups 1\u20132. `tests/unit/netbox_manager/test_filesystem_helpers.py`
          (180 lines):\n- **`find_yaml_files`** \u2014 the `*.yml`/`*.yaml` glob-and-sort
          contract: both extensions collected, filename-sorted across mixed extensions,
          non-YAML/dot-prefixed files excluded, empty directory \u2192 `[]`.\n- **`load_global_vars`**
          \u2014 all outcome branches: `VARS` unset/falsy \u2192 `{}` with no filesystem
          access; missing dir \u2192 `{}` debug-logged; multi-file `deep_merge` precedence
          in sorted-filename order; empty-file skip; and the malformed-YAML / `FileNotFoundError`
          / generic-`Exception` branches, which are logged-not-raised. Notably the
          error branches are reached with real filesystem shapes \u2014 a dangling
          symlink and a directory named `*.yml` \u2014 rather than by monkeypatching
          `os`/`glob`/`open`.\n\n### `ef628ec` \u2014 Add unit tests for resource
          and site folder discovery\nGroups 3\u20135. `tests/unit/netbox_manager/test_discover_resources.py`
          (221 lines):\n- **`discover_resource_files`** \u2014 top-level file collection
          (both extension passes), descent into numbered `^\\d+-.+` subdirectories
          with per-directory basename sorting, `vars`-directory exclusion, `--limit`
          filtering at both the file and directory level, and missing-dir tolerance
          (swallowed `FileNotFoundError`, returns what it could gather).\n- **`detect_site_folders`**
          \u2014 the name-sorted `full_path -> folder_name` map with file / non-numbered
          / empty-suffix exclusion, and `{}` when `resources_dir` is not a directory.\n-
          **`extract_device_names_from_folder`** \u2014 the device-name set with shape
          filtering (non-list root, non-dict items, non-dict/nameless `device` values),
          dedup, and per-file error tolerance.\n\n### `aa5fb7c` \u2014 Add unit tests
          for _write_autoconf_files\nGroup 6. `tests/unit/netbox_manager/test_write_autoconf_files.py`
          (152 lines):\n- **`_write_autoconf_files`** \u2014 the underscore-to-hyphen
          filename mapping (`device_interface` \u2192 `\u2026-device-interface.yml`),
          empty-bucket skip, the target-directory selection chain (explicit `resources_dir`
          \u2192 `settings.RESOURCES` fallback \u2192 bare filename in cwd), `os.makedirs(...,
          exist_ok=True)` creating a missing target dir, and the files-written return
          count. Content is round-tripped via `yaml.safe_load` only; `ProperIndentDumper`
          formatting stays Tier 2 (#249) per the issue's scope note.\n\n## Divergence
          from the issue\n\nNone. The three commits map one-to-one onto the issue's
          six function groups, and the file names match the \"author's discretion\"
          examples the issue suggests (`test_filesystem_helpers.py`, `test_discover_resources.py`,
          `test_write_autoconf_files.py`). No production code was modified, and everything
          explicitly listed as out of scope (`handle_file`, the autoconf pipeline,
          `ProperIndentDumper` formatting, coverage gates) was left untouched.\n---\n\n_Implemented
          by [planwerk-agent](https://github.com/planwerk/planwerk-agent) 6b3f3ea
          with Claude:claude-opus-4-8_\n"
        change_url: https://github.com/osism/netbox-manager/pull/269
        commit_id: 4fb5b154c6c95be7ae281ec73987ddc74f52f2ac
        patchset: 4fb5b154c6c95be7ae281ec73987ddc74f52f2ac
        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: '269'
      change_message: "Unit tests: Tier 3 \u2014 filesystem helpers in netbox_manager/main.py\n\n##
        Summary\n\nTier 3 of the unit-test rollout (#232): unit tests for the **filesystem
        helpers** in `netbox_manager/main.py` \u2014 the functions that read directories
        and YAML files, and (for `_write_autoconf_files`) write them. Every test is
        exercised entirely through pytest's `tmp_path` with a real on-disk directory
        layout \u2014 no live NetBox, no `pynetbox`/`ansible_runner` mocks. A handful
        drive `settings.VARS` / `settings.RESOURCES` via `monkeypatch` against the
        conftest settings stub from #233.\n\nThis is a test-only change: 3 new test
        files, 553 lines added, no production code touched.\n\nCloses #259\n\n## Change
        set (in commit order)\n\n### `bfe3e5e` \u2014 Add unit tests for find_yaml_files
        and load_global_vars\nGroups 1\u20132. `tests/unit/netbox_manager/test_filesystem_helpers.py`
        (180 lines):\n- **`find_yaml_files`** \u2014 the `*.yml`/`*.yaml` glob-and-sort
        contract: both extensions collected, filename-sorted across mixed extensions,
        non-YAML/dot-prefixed files excluded, empty directory \u2192 `[]`.\n- **`load_global_vars`**
        \u2014 all outcome branches: `VARS` unset/falsy \u2192 `{}` with no filesystem
        access; missing dir \u2192 `{}` debug-logged; multi-file `deep_merge` precedence
        in sorted-filename order; empty-file skip; and the malformed-YAML / `FileNotFoundError`
        / generic-`Exception` branches, which are logged-not-raised. Notably the error
        branches are reached with real filesystem shapes \u2014 a dangling symlink
        and a directory named `*.yml` \u2014 rather than by monkeypatching `os`/`glob`/`open`.\n\n###
        `ef628ec` \u2014 Add unit tests for resource and site folder discovery\nGroups
        3\u20135. `tests/unit/netbox_manager/test_discover_resources.py` (221 lines):\n-
        **`discover_resource_files`** \u2014 top-level file collection (both extension
        passes), descent into numbered `^\\d+-.+` subdirectories with per-directory
        basename sorting, `vars`-directory exclusion, `--limit` filtering at both
        the file and directory level, and missing-dir tolerance (swallowed `FileNotFoundError`,
        returns what it could gather).\n- **`detect_site_folders`** \u2014 the name-sorted
        `full_path -> folder_name` map with file / non-numbered / empty-suffix exclusion,
        and `{}` when `resources_dir` is not a directory.\n- **`extract_device_names_from_folder`**
        \u2014 the device-name set with shape filtering (non-list root, non-dict items,
        non-dict/nameless `device` values), dedup, and per-file error tolerance.\n\n###
        `aa5fb7c` \u2014 Add unit tests for _write_autoconf_files\nGroup 6. `tests/unit/netbox_manager/test_write_autoconf_files.py`
        (152 lines):\n- **`_write_autoconf_files`** \u2014 the underscore-to-hyphen
        filename mapping (`device_interface` \u2192 `\u2026-device-interface.yml`),
        empty-bucket skip, the target-directory selection chain (explicit `resources_dir`
        \u2192 `settings.RESOURCES` fallback \u2192 bare filename in cwd), `os.makedirs(...,
        exist_ok=True)` creating a missing target dir, and the files-written return
        count. Content is round-tripped via `yaml.safe_load` only; `ProperIndentDumper`
        formatting stays Tier 2 (#249) per the issue's scope note.\n\n## Divergence
        from the issue\n\nNone. The three commits map one-to-one onto the issue's
        six function groups, and the file names match the \"author's discretion\"
        examples the issue suggests (`test_filesystem_helpers.py`, `test_discover_resources.py`,
        `test_write_autoconf_files.py`). No production code was modified, and everything
        explicitly listed as out of scope (`handle_file`, the autoconf pipeline, `ProperIndentDumper`
        formatting, coverage gates) was left untouched.\n---\n\n_Implemented by [planwerk-agent](https://github.com/planwerk/planwerk-agent)
        6b3f3ea with Claude:claude-opus-4-8_\n"
      change_url: https://github.com/osism/netbox-manager/pull/269
      child_jobs: []
      commit_id: 4fb5b154c6c95be7ae281ec73987ddc74f52f2ac
      event_id: 444d5770-76ba-11f1-8d9f-159f664aa8f2
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/48e5365e11ee4c559d9dc6433b24a21f/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/48e5365e11ee4c559d9dc6433b24a21f/work/logs
        result_data_file: /var/lib/zuul/builds/48e5365e11ee4c559d9dc6433b24a21f/work/results.json
        src_root: /var/lib/zuul/builds/48e5365e11ee4c559d9dc6433b24a21f/work/src
        work_root: /var/lib/zuul/builds/48e5365e11ee4c559d9dc6433b24a21f/work
      include_vars: []
      items:
      - branch: main
        change: '269'
        change_message: "Unit tests: Tier 3 \u2014 filesystem helpers in netbox_manager/main.py\n\n##
          Summary\n\nTier 3 of the unit-test rollout (#232): unit tests for the **filesystem
          helpers** in `netbox_manager/main.py` \u2014 the functions that read directories
          and YAML files, and (for `_write_autoconf_files`) write them. Every test
          is exercised entirely through pytest's `tmp_path` with a real on-disk directory
          layout \u2014 no live NetBox, no `pynetbox`/`ansible_runner` mocks. A handful
          drive `settings.VARS` / `settings.RESOURCES` via `monkeypatch` against the
          conftest settings stub from #233.\n\nThis is a test-only change: 3 new test
          files, 553 lines added, no production code touched.\n\nCloses #259\n\n##
          Change set (in commit order)\n\n### `bfe3e5e` \u2014 Add unit tests for
          find_yaml_files and load_global_vars\nGroups 1\u20132. `tests/unit/netbox_manager/test_filesystem_helpers.py`
          (180 lines):\n- **`find_yaml_files`** \u2014 the `*.yml`/`*.yaml` glob-and-sort
          contract: both extensions collected, filename-sorted across mixed extensions,
          non-YAML/dot-prefixed files excluded, empty directory \u2192 `[]`.\n- **`load_global_vars`**
          \u2014 all outcome branches: `VARS` unset/falsy \u2192 `{}` with no filesystem
          access; missing dir \u2192 `{}` debug-logged; multi-file `deep_merge` precedence
          in sorted-filename order; empty-file skip; and the malformed-YAML / `FileNotFoundError`
          / generic-`Exception` branches, which are logged-not-raised. Notably the
          error branches are reached with real filesystem shapes \u2014 a dangling
          symlink and a directory named `*.yml` \u2014 rather than by monkeypatching
          `os`/`glob`/`open`.\n\n### `ef628ec` \u2014 Add unit tests for resource
          and site folder discovery\nGroups 3\u20135. `tests/unit/netbox_manager/test_discover_resources.py`
          (221 lines):\n- **`discover_resource_files`** \u2014 top-level file collection
          (both extension passes), descent into numbered `^\\d+-.+` subdirectories
          with per-directory basename sorting, `vars`-directory exclusion, `--limit`
          filtering at both the file and directory level, and missing-dir tolerance
          (swallowed `FileNotFoundError`, returns what it could gather).\n- **`detect_site_folders`**
          \u2014 the name-sorted `full_path -> folder_name` map with file / non-numbered
          / empty-suffix exclusion, and `{}` when `resources_dir` is not a directory.\n-
          **`extract_device_names_from_folder`** \u2014 the device-name set with shape
          filtering (non-list root, non-dict items, non-dict/nameless `device` values),
          dedup, and per-file error tolerance.\n\n### `aa5fb7c` \u2014 Add unit tests
          for _write_autoconf_files\nGroup 6. `tests/unit/netbox_manager/test_write_autoconf_files.py`
          (152 lines):\n- **`_write_autoconf_files`** \u2014 the underscore-to-hyphen
          filename mapping (`device_interface` \u2192 `\u2026-device-interface.yml`),
          empty-bucket skip, the target-directory selection chain (explicit `resources_dir`
          \u2192 `settings.RESOURCES` fallback \u2192 bare filename in cwd), `os.makedirs(...,
          exist_ok=True)` creating a missing target dir, and the files-written return
          count. Content is round-tripped via `yaml.safe_load` only; `ProperIndentDumper`
          formatting stays Tier 2 (#249) per the issue's scope note.\n\n## Divergence
          from the issue\n\nNone. The three commits map one-to-one onto the issue's
          six function groups, and the file names match the \"author's discretion\"
          examples the issue suggests (`test_filesystem_helpers.py`, `test_discover_resources.py`,
          `test_write_autoconf_files.py`). No production code was modified, and everything
          explicitly listed as out of scope (`handle_file`, the autoconf pipeline,
          `ProperIndentDumper` formatting, coverage gates) was left untouched.\n---\n\n_Implemented
          by [planwerk-agent](https://github.com/planwerk/planwerk-agent) 6b3f3ea
          with Claude:claude-opus-4-8_\n"
        change_url: https://github.com/osism/netbox-manager/pull/269
        commit_id: 4fb5b154c6c95be7ae281ec73987ddc74f52f2ac
        patchset: 4fb5b154c6c95be7ae281ec73987ddc74f52f2ac
        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: yamllint
      jobtags: []
      max_attempts: 3
      message: VW5pdCB0ZXN0czogVGllciAzIOKAlCBmaWxlc3lzdGVtIGhlbHBlcnMgaW4gbmV0Ym94X21hbmFnZXIvbWFpbi5weQoKIyMgU3VtbWFyeQoKVGllciAzIG9mIHRoZSB1bml0LXRlc3Qgcm9sbG91dCAoIzIzMik6IHVuaXQgdGVzdHMgZm9yIHRoZSAqKmZpbGVzeXN0ZW0gaGVscGVycyoqIGluIGBuZXRib3hfbWFuYWdlci9tYWluLnB5YCDigJQgdGhlIGZ1bmN0aW9ucyB0aGF0IHJlYWQgZGlyZWN0b3JpZXMgYW5kIFlBTUwgZmlsZXMsIGFuZCAoZm9yIGBfd3JpdGVfYXV0b2NvbmZfZmlsZXNgKSB3cml0ZSB0aGVtLiBFdmVyeSB0ZXN0IGlzIGV4ZXJjaXNlZCBlbnRpcmVseSB0aHJvdWdoIHB5dGVzdCdzIGB0bXBfcGF0aGAgd2l0aCBhIHJlYWwgb24tZGlzayBkaXJlY3RvcnkgbGF5b3V0IOKAlCBubyBsaXZlIE5ldEJveCwgbm8gYHB5bmV0Ym94YC9gYW5zaWJsZV9ydW5uZXJgIG1vY2tzLiBBIGhhbmRmdWwgZHJpdmUgYHNldHRpbmdzLlZBUlNgIC8gYHNldHRpbmdzLlJFU09VUkNFU2AgdmlhIGBtb25rZXlwYXRjaGAgYWdhaW5zdCB0aGUgY29uZnRlc3Qgc2V0dGluZ3Mgc3R1YiBmcm9tICMyMzMuCgpUaGlzIGlzIGEgdGVzdC1vbmx5IGNoYW5nZTogMyBuZXcgdGVzdCBmaWxlcywgNTUzIGxpbmVzIGFkZGVkLCBubyBwcm9kdWN0aW9uIGNvZGUgdG91Y2hlZC4KCkNsb3NlcyAjMjU5CgojIyBDaGFuZ2Ugc2V0IChpbiBjb21taXQgb3JkZXIpCgojIyMgYGJmZTNlNWVgIOKAlCBBZGQgdW5pdCB0ZXN0cyBmb3IgZmluZF95YW1sX2ZpbGVzIGFuZCBsb2FkX2dsb2JhbF92YXJzCkdyb3VwcyAx4oCTMi4gYHRlc3RzL3VuaXQvbmV0Ym94X21hbmFnZXIvdGVzdF9maWxlc3lzdGVtX2hlbHBlcnMucHlgICgxODAgbGluZXMpOgotICoqYGZpbmRfeWFtbF9maWxlc2AqKiDigJQgdGhlIGAqLnltbGAvYCoueWFtbGAgZ2xvYi1hbmQtc29ydCBjb250cmFjdDogYm90aCBleHRlbnNpb25zIGNvbGxlY3RlZCwgZmlsZW5hbWUtc29ydGVkIGFjcm9zcyBtaXhlZCBleHRlbnNpb25zLCBub24tWUFNTC9kb3QtcHJlZml4ZWQgZmlsZXMgZXhjbHVkZWQsIGVtcHR5IGRpcmVjdG9yeSDihpIgYFtdYC4KLSAqKmBsb2FkX2dsb2JhbF92YXJzYCoqIOKAlCBhbGwgb3V0Y29tZSBicmFuY2hlczogYFZBUlNgIHVuc2V0L2ZhbHN5IOKGkiBge31gIHdpdGggbm8gZmlsZXN5c3RlbSBhY2Nlc3M7IG1pc3NpbmcgZGlyIOKGkiBge31gIGRlYnVnLWxvZ2dlZDsgbXVsdGktZmlsZSBgZGVlcF9tZXJnZWAgcHJlY2VkZW5jZSBpbiBzb3J0ZWQtZmlsZW5hbWUgb3JkZXI7IGVtcHR5LWZpbGUgc2tpcDsgYW5kIHRoZSBtYWxmb3JtZWQtWUFNTCAvIGBGaWxlTm90Rm91bmRFcnJvcmAgLyBnZW5lcmljLWBFeGNlcHRpb25gIGJyYW5jaGVzLCB3aGljaCBhcmUgbG9nZ2VkLW5vdC1yYWlzZWQuIE5vdGFibHkgdGhlIGVycm9yIGJyYW5jaGVzIGFyZSByZWFjaGVkIHdpdGggcmVhbCBmaWxlc3lzdGVtIHNoYXBlcyDigJQgYSBkYW5nbGluZyBzeW1saW5rIGFuZCBhIGRpcmVjdG9yeSBuYW1lZCBgKi55bWxgIOKAlCByYXRoZXIgdGhhbiBieSBtb25rZXlwYXRjaGluZyBgb3NgL2BnbG9iYC9gb3BlbmAuCgojIyMgYGVmNjI4ZWNgIOKAlCBBZGQgdW5pdCB0ZXN0cyBmb3IgcmVzb3VyY2UgYW5kIHNpdGUgZm9sZGVyIGRpc2NvdmVyeQpHcm91cHMgM+KAkzUuIGB0ZXN0cy91bml0L25ldGJveF9tYW5hZ2VyL3Rlc3RfZGlzY292ZXJfcmVzb3VyY2VzLnB5YCAoMjIxIGxpbmVzKToKLSAqKmBkaXNjb3Zlcl9yZXNvdXJjZV9maWxlc2AqKiDigJQgdG9wLWxldmVsIGZpbGUgY29sbGVjdGlvbiAoYm90aCBleHRlbnNpb24gcGFzc2VzKSwgZGVzY2VudCBpbnRvIG51bWJlcmVkIGBeXGQrLS4rYCBzdWJkaXJlY3RvcmllcyB3aXRoIHBlci1kaXJlY3RvcnkgYmFzZW5hbWUgc29ydGluZywgYHZhcnNgLWRpcmVjdG9yeSBleGNsdXNpb24sIGAtLWxpbWl0YCBmaWx0ZXJpbmcgYXQgYm90aCB0aGUgZmlsZSBhbmQgZGlyZWN0b3J5IGxldmVsLCBhbmQgbWlzc2luZy1kaXIgdG9sZXJhbmNlIChzd2FsbG93ZWQgYEZpbGVOb3RGb3VuZEVycm9yYCwgcmV0dXJucyB3aGF0IGl0IGNvdWxkIGdhdGhlcikuCi0gKipgZGV0ZWN0X3NpdGVfZm9sZGVyc2AqKiDigJQgdGhlIG5hbWUtc29ydGVkIGBmdWxsX3BhdGggLT4gZm9sZGVyX25hbWVgIG1hcCB3aXRoIGZpbGUgLyBub24tbnVtYmVyZWQgLyBlbXB0eS1zdWZmaXggZXhjbHVzaW9uLCBhbmQgYHt9YCB3aGVuIGByZXNvdXJjZXNfZGlyYCBpcyBub3QgYSBkaXJlY3RvcnkuCi0gKipgZXh0cmFjdF9kZXZpY2VfbmFtZXNfZnJvbV9mb2xkZXJgKiog4oCUIHRoZSBkZXZpY2UtbmFtZSBzZXQgd2l0aCBzaGFwZSBmaWx0ZXJpbmcgKG5vbi1saXN0IHJvb3QsIG5vbi1kaWN0IGl0ZW1zLCBub24tZGljdC9uYW1lbGVzcyBgZGV2aWNlYCB2YWx1ZXMpLCBkZWR1cCwgYW5kIHBlci1maWxlIGVycm9yIHRvbGVyYW5jZS4KCiMjIyBgYWE1ZmI3Y2Ag4oCUIEFkZCB1bml0IHRlc3RzIGZvciBfd3JpdGVfYXV0b2NvbmZfZmlsZXMKR3JvdXAgNi4gYHRlc3RzL3VuaXQvbmV0Ym94X21hbmFnZXIvdGVzdF93cml0ZV9hdXRvY29uZl9maWxlcy5weWAgKDE1MiBsaW5lcyk6Ci0gKipgX3dyaXRlX2F1dG9jb25mX2ZpbGVzYCoqIOKAlCB0aGUgdW5kZXJzY29yZS10by1oeXBoZW4gZmlsZW5hbWUgbWFwcGluZyAoYGRldmljZV9pbnRlcmZhY2VgIOKGkiBg4oCmLWRldmljZS1pbnRlcmZhY2UueW1sYCksIGVtcHR5LWJ1Y2tldCBza2lwLCB0aGUgdGFyZ2V0LWRpcmVjdG9yeSBzZWxlY3Rpb24gY2hhaW4gKGV4cGxpY2l0IGByZXNvdXJjZXNfZGlyYCDihpIgYHNldHRpbmdzLlJFU09VUkNFU2AgZmFsbGJhY2sg4oaSIGJhcmUgZmlsZW5hbWUgaW4gY3dkKSwgYG9zLm1ha2VkaXJzKC4uLiwgZXhpc3Rfb2s9VHJ1ZSlgIGNyZWF0aW5nIGEgbWlzc2luZyB0YXJnZXQgZGlyLCBhbmQgdGhlIGZpbGVzLXdyaXR0ZW4gcmV0dXJuIGNvdW50LiBDb250ZW50IGlzIHJvdW5kLXRyaXBwZWQgdmlhIGB5YW1sLnNhZmVfbG9hZGAgb25seTsgYFByb3BlckluZGVudER1bXBlcmAgZm9ybWF0dGluZyBzdGF5cyBUaWVyIDIgKCMyNDkpIHBlciB0aGUgaXNzdWUncyBzY29wZSBub3RlLgoKIyMgRGl2ZXJnZW5jZSBmcm9tIHRoZSBpc3N1ZQoKTm9uZS4gVGhlIHRocmVlIGNvbW1pdHMgbWFwIG9uZS10by1vbmUgb250byB0aGUgaXNzdWUncyBzaXggZnVuY3Rpb24gZ3JvdXBzLCBhbmQgdGhlIGZpbGUgbmFtZXMgbWF0Y2ggdGhlICJhdXRob3IncyBkaXNjcmV0aW9uIiBleGFtcGxlcyB0aGUgaXNzdWUgc3VnZ2VzdHMgKGB0ZXN0X2ZpbGVzeXN0ZW1faGVscGVycy5weWAsIGB0ZXN0X2Rpc2NvdmVyX3Jlc291cmNlcy5weWAsIGB0ZXN0X3dyaXRlX2F1dG9jb25mX2ZpbGVzLnB5YCkuIE5vIHByb2R1Y3Rpb24gY29kZSB3YXMgbW9kaWZpZWQsIGFuZCBldmVyeXRoaW5nIGV4cGxpY2l0bHkgbGlzdGVkIGFzIG91dCBvZiBzY29wZSAoYGhhbmRsZV9maWxlYCwgdGhlIGF1dG9jb25mIHBpcGVsaW5lLCBgUHJvcGVySW5kZW50RHVtcGVyYCBmb3JtYXR0aW5nLCBjb3ZlcmFnZSBnYXRlcykgd2FzIGxlZnQgdW50b3VjaGVkLgotLS0KCl9JbXBsZW1lbnRlZCBieSBbcGxhbndlcmstYWdlbnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9wbGFud2Vyay9wbGFud2Vyay1hZ2VudCkgNmIzZjNlYSB3aXRoIENsYXVkZTpjbGF1ZGUtb3B1cy00LThfCg==
      patchset: 4fb5b154c6c95be7ae281ec73987ddc74f52f2ac
      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/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: 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: b5c9a63c5fcad861b21040fbfdf8e6b74832ef01
          name: osism/netbox-manager
          required: false
          short_name: netbox-manager
          src_dir: src/github.com/osism/netbox-manager
      ref: refs/pull/269/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
