all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fec5:679b
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 13137768-5071-40c7-b89b-bea7edd48b78
        host_id: 25afcdcd4b24cc9d1766f11f81549380a3029030a455889bb61ec093
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fec5:679b
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.0.108
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.183
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fec5:679b
        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/container-image-inventory-reconciler/.zuul.yaml@main#108>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: 923163e764e54670b6999cccfeed185f
      build_refs:
      - branch: main
        change: '548'
        change_message: "Add tier 4 unit tests (bulk_loader, interfaces, connection)\n\nImplements
          #546 (tier 4 of the meta test-coverage effort #524).\n\nAdds unit tests
          for the **bulk loader & connection** modules under\n`files/netbox/` \u2014
          `bulk_loader.py`, `interfaces.py` and `connection.py`.\nThis is the first
          tier where the code under test wraps the pynetbox\nsession itself, so the
          tests move from `SimpleNamespace`-only fakes to\n`MagicMock`-backed sessions
          where call counts, call arguments and\nper-call `side_effect` failures matter.
          No live NetBox is required.\n\nAll three modules reach **100% line coverage**
          and the tier-4 suite runs\nin well under a second with no real waiting.\n\n##
          Change set (commit order)\n\n1. **Extend conftest factories for tier 4 modules**
          \u2014 extends the\n   `tests/unit/netbox/conftest.py` factories introduced
          in #543, all\n   backward-compatibly (keyword-only, defaulted), so the tier-3
          tests\n   keep passing unchanged:\n   - `make_interface` gains `name`, `mac_address`,
          `untagged_vlan`,\n     `device` (and `mgmt_only` now defaults to `False`)\n
          \  - `make_ip` gains a keyword-only `assigned_object_id`\n   - new `make_vlan(vid)`
          helper\n\n2. **Add tier 4 unit tests for the bulk loader** \u2014 `test_bulk_loader.py`\n
          \  drives `BulkDataLoader` with a `MagicMock` pynetbox session:\n   constructor
          defaults / `BATCH_SIZE` parity, `_chunk_list` edge cases,\n   `load_device_data`
          (empty short-circuit, single/multi-batch interface\n   loading asserted
          via `call_args_list`, IP batching + grouping, partial\n   per-batch failures
          that `continue`, the no-interfaces skip, the\n   grouping `AttributeError`
          that clears state and re-raises, additive\n   accumulation across calls),
          the cache getters, `clear()` and\n   `get_statistics()`.\n\n3. **Add tier
          4 unit tests for the interface handler** \u2014\n   `test_interfaces.py`
          uses the *real* in-memory `CacheManager` and the\n   `make_fake_api` stub:
          `get_oob_interface` cache hit / ideal IP+MAC\n   match / cached-on-second-call
          / IP-preferred-over-MAC-only /\n   MAC-only fallback / first-fallback-wins
          / skip rules / cached negative\n   result / VLAN extraction / filter-exception-without-caching,
          plus the\n   `_is_managed_oob_interface` truth table (including the no-`hasattr`\n
          \  asymmetry vs. the gnmic twin), `_get_vlan_id` and `_get_interface_ip`.\n\n4.
          **Add tier 4 unit tests for the connection manager** \u2014\n   `test_connection.py`
          monkeypatches `connection.pynetbox.api`,\n   `connection.time.sleep` and
          the `connection.requests` SSL helpers in\n   the module-under-test namespace;
          `time.sleep` is patched in every\n   `connect()` test. Covers `__init__`,
          `connect` (first-attempt success,\n   the SSL-ignore branch, the no-SSL
          branch, retry-then-success,\n   retry exhaustion raising `NetBoxConnectionError`
          chained from the\n   original cause, and `pynetbox.api` itself raising),\n
          \  `_configure_ssl_ignore` (with and without `self.api`), and\n   `disconnect`
          (close, idempotency, no-prior-connect).\n\n## Verification\n\n- `pytest
          tests/unit` \u2014 325 passed\n- `pytest --cov=bulk_loader --cov=interfaces
          --cov=connection` \u2014 100% on\n  all three modules\n- `pytest --durations=10`
          \u2014 tier-4 suite 0.17s, all durations <0.005s\n- `flake8 files tests`
          \u2014 clean\n- `black --check` on the four touched files \u2014 clean\n\n##
          Notes\n\n- Coverage is invoked as `--cov=bulk_loader` (etc.) rather than
          the\n  issue's `--cov=files.netbox.bulk_loader`: the test harness puts\n
          \ `files/netbox/` on `sys.path` (see `tests/conftest.py`) so the modules\n
          \ import flat, and the flat name is what coverage matches. The reported\n
          \ file is still `files/netbox/bulk_loader.py`.\n\n\U0001F916 Generated with
          [Claude Code](https://claude.com/claude-code)"
        change_url: https://github.com/osism/container-image-inventory-reconciler/pull/548
        commit_id: 674bbde6f166863561b0abcad0cdbf6fc2bef84b
        patchset: 674bbde6f166863561b0abcad0cdbf6fc2bef84b
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-image-inventory-reconciler
          name: osism/container-image-inventory-reconciler
          short_name: container-image-inventory-reconciler
        src_dir: src/github.com/osism/container-image-inventory-reconciler
        topic: null
      buildset: 7674b0f370c3491693282f792ae11317
      buildset_refs:
      - branch: main
        change: '548'
        change_message: "Add tier 4 unit tests (bulk_loader, interfaces, connection)\n\nImplements
          #546 (tier 4 of the meta test-coverage effort #524).\n\nAdds unit tests
          for the **bulk loader & connection** modules under\n`files/netbox/` \u2014
          `bulk_loader.py`, `interfaces.py` and `connection.py`.\nThis is the first
          tier where the code under test wraps the pynetbox\nsession itself, so the
          tests move from `SimpleNamespace`-only fakes to\n`MagicMock`-backed sessions
          where call counts, call arguments and\nper-call `side_effect` failures matter.
          No live NetBox is required.\n\nAll three modules reach **100% line coverage**
          and the tier-4 suite runs\nin well under a second with no real waiting.\n\n##
          Change set (commit order)\n\n1. **Extend conftest factories for tier 4 modules**
          \u2014 extends the\n   `tests/unit/netbox/conftest.py` factories introduced
          in #543, all\n   backward-compatibly (keyword-only, defaulted), so the tier-3
          tests\n   keep passing unchanged:\n   - `make_interface` gains `name`, `mac_address`,
          `untagged_vlan`,\n     `device` (and `mgmt_only` now defaults to `False`)\n
          \  - `make_ip` gains a keyword-only `assigned_object_id`\n   - new `make_vlan(vid)`
          helper\n\n2. **Add tier 4 unit tests for the bulk loader** \u2014 `test_bulk_loader.py`\n
          \  drives `BulkDataLoader` with a `MagicMock` pynetbox session:\n   constructor
          defaults / `BATCH_SIZE` parity, `_chunk_list` edge cases,\n   `load_device_data`
          (empty short-circuit, single/multi-batch interface\n   loading asserted
          via `call_args_list`, IP batching + grouping, partial\n   per-batch failures
          that `continue`, the no-interfaces skip, the\n   grouping `AttributeError`
          that clears state and re-raises, additive\n   accumulation across calls),
          the cache getters, `clear()` and\n   `get_statistics()`.\n\n3. **Add tier
          4 unit tests for the interface handler** \u2014\n   `test_interfaces.py`
          uses the *real* in-memory `CacheManager` and the\n   `make_fake_api` stub:
          `get_oob_interface` cache hit / ideal IP+MAC\n   match / cached-on-second-call
          / IP-preferred-over-MAC-only /\n   MAC-only fallback / first-fallback-wins
          / skip rules / cached negative\n   result / VLAN extraction / filter-exception-without-caching,
          plus the\n   `_is_managed_oob_interface` truth table (including the no-`hasattr`\n
          \  asymmetry vs. the gnmic twin), `_get_vlan_id` and `_get_interface_ip`.\n\n4.
          **Add tier 4 unit tests for the connection manager** \u2014\n   `test_connection.py`
          monkeypatches `connection.pynetbox.api`,\n   `connection.time.sleep` and
          the `connection.requests` SSL helpers in\n   the module-under-test namespace;
          `time.sleep` is patched in every\n   `connect()` test. Covers `__init__`,
          `connect` (first-attempt success,\n   the SSL-ignore branch, the no-SSL
          branch, retry-then-success,\n   retry exhaustion raising `NetBoxConnectionError`
          chained from the\n   original cause, and `pynetbox.api` itself raising),\n
          \  `_configure_ssl_ignore` (with and without `self.api`), and\n   `disconnect`
          (close, idempotency, no-prior-connect).\n\n## Verification\n\n- `pytest
          tests/unit` \u2014 325 passed\n- `pytest --cov=bulk_loader --cov=interfaces
          --cov=connection` \u2014 100% on\n  all three modules\n- `pytest --durations=10`
          \u2014 tier-4 suite 0.17s, all durations <0.005s\n- `flake8 files tests`
          \u2014 clean\n- `black --check` on the four touched files \u2014 clean\n\n##
          Notes\n\n- Coverage is invoked as `--cov=bulk_loader` (etc.) rather than
          the\n  issue's `--cov=files.netbox.bulk_loader`: the test harness puts\n
          \ `files/netbox/` on `sys.path` (see `tests/conftest.py`) so the modules\n
          \ import flat, and the flat name is what coverage matches. The reported\n
          \ file is still `files/netbox/bulk_loader.py`.\n\n\U0001F916 Generated with
          [Claude Code](https://claude.com/claude-code)"
        change_url: https://github.com/osism/container-image-inventory-reconciler/pull/548
        commit_id: 674bbde6f166863561b0abcad0cdbf6fc2bef84b
        patchset: 674bbde6f166863561b0abcad0cdbf6fc2bef84b
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-image-inventory-reconciler
          name: osism/container-image-inventory-reconciler
          short_name: container-image-inventory-reconciler
        src_dir: src/github.com/osism/container-image-inventory-reconciler
        topic: null
      change: '548'
      change_message: "Add tier 4 unit tests (bulk_loader, interfaces, connection)\n\nImplements
        #546 (tier 4 of the meta test-coverage effort #524).\n\nAdds unit tests for
        the **bulk loader & connection** modules under\n`files/netbox/` \u2014 `bulk_loader.py`,
        `interfaces.py` and `connection.py`.\nThis is the first tier where the code
        under test wraps the pynetbox\nsession itself, so the tests move from `SimpleNamespace`-only
        fakes to\n`MagicMock`-backed sessions where call counts, call arguments and\nper-call
        `side_effect` failures matter. No live NetBox is required.\n\nAll three modules
        reach **100% line coverage** and the tier-4 suite runs\nin well under a second
        with no real waiting.\n\n## Change set (commit order)\n\n1. **Extend conftest
        factories for tier 4 modules** \u2014 extends the\n   `tests/unit/netbox/conftest.py`
        factories introduced in #543, all\n   backward-compatibly (keyword-only, defaulted),
        so the tier-3 tests\n   keep passing unchanged:\n   - `make_interface` gains
        `name`, `mac_address`, `untagged_vlan`,\n     `device` (and `mgmt_only` now
        defaults to `False`)\n   - `make_ip` gains a keyword-only `assigned_object_id`\n
        \  - new `make_vlan(vid)` helper\n\n2. **Add tier 4 unit tests for the bulk
        loader** \u2014 `test_bulk_loader.py`\n   drives `BulkDataLoader` with a `MagicMock`
        pynetbox session:\n   constructor defaults / `BATCH_SIZE` parity, `_chunk_list`
        edge cases,\n   `load_device_data` (empty short-circuit, single/multi-batch
        interface\n   loading asserted via `call_args_list`, IP batching + grouping,
        partial\n   per-batch failures that `continue`, the no-interfaces skip, the\n
        \  grouping `AttributeError` that clears state and re-raises, additive\n   accumulation
        across calls), the cache getters, `clear()` and\n   `get_statistics()`.\n\n3.
        **Add tier 4 unit tests for the interface handler** \u2014\n   `test_interfaces.py`
        uses the *real* in-memory `CacheManager` and the\n   `make_fake_api` stub:
        `get_oob_interface` cache hit / ideal IP+MAC\n   match / cached-on-second-call
        / IP-preferred-over-MAC-only /\n   MAC-only fallback / first-fallback-wins
        / skip rules / cached negative\n   result / VLAN extraction / filter-exception-without-caching,
        plus the\n   `_is_managed_oob_interface` truth table (including the no-`hasattr`\n
        \  asymmetry vs. the gnmic twin), `_get_vlan_id` and `_get_interface_ip`.\n\n4.
        **Add tier 4 unit tests for the connection manager** \u2014\n   `test_connection.py`
        monkeypatches `connection.pynetbox.api`,\n   `connection.time.sleep` and the
        `connection.requests` SSL helpers in\n   the module-under-test namespace;
        `time.sleep` is patched in every\n   `connect()` test. Covers `__init__`,
        `connect` (first-attempt success,\n   the SSL-ignore branch, the no-SSL branch,
        retry-then-success,\n   retry exhaustion raising `NetBoxConnectionError` chained
        from the\n   original cause, and `pynetbox.api` itself raising),\n   `_configure_ssl_ignore`
        (with and without `self.api`), and\n   `disconnect` (close, idempotency, no-prior-connect).\n\n##
        Verification\n\n- `pytest tests/unit` \u2014 325 passed\n- `pytest --cov=bulk_loader
        --cov=interfaces --cov=connection` \u2014 100% on\n  all three modules\n-
        `pytest --durations=10` \u2014 tier-4 suite 0.17s, all durations <0.005s\n-
        `flake8 files tests` \u2014 clean\n- `black --check` on the four touched files
        \u2014 clean\n\n## Notes\n\n- Coverage is invoked as `--cov=bulk_loader` (etc.)
        rather than the\n  issue's `--cov=files.netbox.bulk_loader`: the test harness
        puts\n  `files/netbox/` on `sys.path` (see `tests/conftest.py`) so the modules\n
        \ import flat, and the flat name is what coverage matches. The reported\n
        \ file is still `files/netbox/bulk_loader.py`.\n\n\U0001F916 Generated with
        [Claude Code](https://claude.com/claude-code)"
      change_url: https://github.com/osism/container-image-inventory-reconciler/pull/548
      child_jobs: []
      commit_id: 674bbde6f166863561b0abcad0cdbf6fc2bef84b
      event_id: 2812c620-64a0-11f1-93a6-b3195077cb6a
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/923163e764e54670b6999cccfeed185f/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/923163e764e54670b6999cccfeed185f/work/logs
        result_data_file: /var/lib/zuul/builds/923163e764e54670b6999cccfeed185f/work/results.json
        src_root: /var/lib/zuul/builds/923163e764e54670b6999cccfeed185f/work/src
        work_root: /var/lib/zuul/builds/923163e764e54670b6999cccfeed185f/work
      include_vars: []
      items:
      - branch: main
        change: '548'
        change_message: "Add tier 4 unit tests (bulk_loader, interfaces, connection)\n\nImplements
          #546 (tier 4 of the meta test-coverage effort #524).\n\nAdds unit tests
          for the **bulk loader & connection** modules under\n`files/netbox/` \u2014
          `bulk_loader.py`, `interfaces.py` and `connection.py`.\nThis is the first
          tier where the code under test wraps the pynetbox\nsession itself, so the
          tests move from `SimpleNamespace`-only fakes to\n`MagicMock`-backed sessions
          where call counts, call arguments and\nper-call `side_effect` failures matter.
          No live NetBox is required.\n\nAll three modules reach **100% line coverage**
          and the tier-4 suite runs\nin well under a second with no real waiting.\n\n##
          Change set (commit order)\n\n1. **Extend conftest factories for tier 4 modules**
          \u2014 extends the\n   `tests/unit/netbox/conftest.py` factories introduced
          in #543, all\n   backward-compatibly (keyword-only, defaulted), so the tier-3
          tests\n   keep passing unchanged:\n   - `make_interface` gains `name`, `mac_address`,
          `untagged_vlan`,\n     `device` (and `mgmt_only` now defaults to `False`)\n
          \  - `make_ip` gains a keyword-only `assigned_object_id`\n   - new `make_vlan(vid)`
          helper\n\n2. **Add tier 4 unit tests for the bulk loader** \u2014 `test_bulk_loader.py`\n
          \  drives `BulkDataLoader` with a `MagicMock` pynetbox session:\n   constructor
          defaults / `BATCH_SIZE` parity, `_chunk_list` edge cases,\n   `load_device_data`
          (empty short-circuit, single/multi-batch interface\n   loading asserted
          via `call_args_list`, IP batching + grouping, partial\n   per-batch failures
          that `continue`, the no-interfaces skip, the\n   grouping `AttributeError`
          that clears state and re-raises, additive\n   accumulation across calls),
          the cache getters, `clear()` and\n   `get_statistics()`.\n\n3. **Add tier
          4 unit tests for the interface handler** \u2014\n   `test_interfaces.py`
          uses the *real* in-memory `CacheManager` and the\n   `make_fake_api` stub:
          `get_oob_interface` cache hit / ideal IP+MAC\n   match / cached-on-second-call
          / IP-preferred-over-MAC-only /\n   MAC-only fallback / first-fallback-wins
          / skip rules / cached negative\n   result / VLAN extraction / filter-exception-without-caching,
          plus the\n   `_is_managed_oob_interface` truth table (including the no-`hasattr`\n
          \  asymmetry vs. the gnmic twin), `_get_vlan_id` and `_get_interface_ip`.\n\n4.
          **Add tier 4 unit tests for the connection manager** \u2014\n   `test_connection.py`
          monkeypatches `connection.pynetbox.api`,\n   `connection.time.sleep` and
          the `connection.requests` SSL helpers in\n   the module-under-test namespace;
          `time.sleep` is patched in every\n   `connect()` test. Covers `__init__`,
          `connect` (first-attempt success,\n   the SSL-ignore branch, the no-SSL
          branch, retry-then-success,\n   retry exhaustion raising `NetBoxConnectionError`
          chained from the\n   original cause, and `pynetbox.api` itself raising),\n
          \  `_configure_ssl_ignore` (with and without `self.api`), and\n   `disconnect`
          (close, idempotency, no-prior-connect).\n\n## Verification\n\n- `pytest
          tests/unit` \u2014 325 passed\n- `pytest --cov=bulk_loader --cov=interfaces
          --cov=connection` \u2014 100% on\n  all three modules\n- `pytest --durations=10`
          \u2014 tier-4 suite 0.17s, all durations <0.005s\n- `flake8 files tests`
          \u2014 clean\n- `black --check` on the four touched files \u2014 clean\n\n##
          Notes\n\n- Coverage is invoked as `--cov=bulk_loader` (etc.) rather than
          the\n  issue's `--cov=files.netbox.bulk_loader`: the test harness puts\n
          \ `files/netbox/` on `sys.path` (see `tests/conftest.py`) so the modules\n
          \ import flat, and the flat name is what coverage matches. The reported\n
          \ file is still `files/netbox/bulk_loader.py`.\n\n\U0001F916 Generated with
          [Claude Code](https://claude.com/claude-code)"
        change_url: https://github.com/osism/container-image-inventory-reconciler/pull/548
        commit_id: 674bbde6f166863561b0abcad0cdbf6fc2bef84b
        patchset: 674bbde6f166863561b0abcad0cdbf6fc2bef84b
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-image-inventory-reconciler
          name: osism/container-image-inventory-reconciler
          short_name: container-image-inventory-reconciler
          src_dir: src/github.com/osism/container-image-inventory-reconciler
        topic: null
      job: flake8
      jobtags: []
      max_attempts: 3
      message: QWRkIHRpZXIgNCB1bml0IHRlc3RzIChidWxrX2xvYWRlciwgaW50ZXJmYWNlcywgY29ubmVjdGlvbikKCkltcGxlbWVudHMgIzU0NiAodGllciA0IG9mIHRoZSBtZXRhIHRlc3QtY292ZXJhZ2UgZWZmb3J0ICM1MjQpLgoKQWRkcyB1bml0IHRlc3RzIGZvciB0aGUgKipidWxrIGxvYWRlciAmIGNvbm5lY3Rpb24qKiBtb2R1bGVzIHVuZGVyCmBmaWxlcy9uZXRib3gvYCDigJQgYGJ1bGtfbG9hZGVyLnB5YCwgYGludGVyZmFjZXMucHlgIGFuZCBgY29ubmVjdGlvbi5weWAuClRoaXMgaXMgdGhlIGZpcnN0IHRpZXIgd2hlcmUgdGhlIGNvZGUgdW5kZXIgdGVzdCB3cmFwcyB0aGUgcHluZXRib3gKc2Vzc2lvbiBpdHNlbGYsIHNvIHRoZSB0ZXN0cyBtb3ZlIGZyb20gYFNpbXBsZU5hbWVzcGFjZWAtb25seSBmYWtlcyB0bwpgTWFnaWNNb2NrYC1iYWNrZWQgc2Vzc2lvbnMgd2hlcmUgY2FsbCBjb3VudHMsIGNhbGwgYXJndW1lbnRzIGFuZApwZXItY2FsbCBgc2lkZV9lZmZlY3RgIGZhaWx1cmVzIG1hdHRlci4gTm8gbGl2ZSBOZXRCb3ggaXMgcmVxdWlyZWQuCgpBbGwgdGhyZWUgbW9kdWxlcyByZWFjaCAqKjEwMCUgbGluZSBjb3ZlcmFnZSoqIGFuZCB0aGUgdGllci00IHN1aXRlIHJ1bnMKaW4gd2VsbCB1bmRlciBhIHNlY29uZCB3aXRoIG5vIHJlYWwgd2FpdGluZy4KCiMjIENoYW5nZSBzZXQgKGNvbW1pdCBvcmRlcikKCjEuICoqRXh0ZW5kIGNvbmZ0ZXN0IGZhY3RvcmllcyBmb3IgdGllciA0IG1vZHVsZXMqKiDigJQgZXh0ZW5kcyB0aGUKICAgYHRlc3RzL3VuaXQvbmV0Ym94L2NvbmZ0ZXN0LnB5YCBmYWN0b3JpZXMgaW50cm9kdWNlZCBpbiAjNTQzLCBhbGwKICAgYmFja3dhcmQtY29tcGF0aWJseSAoa2V5d29yZC1vbmx5LCBkZWZhdWx0ZWQpLCBzbyB0aGUgdGllci0zIHRlc3RzCiAgIGtlZXAgcGFzc2luZyB1bmNoYW5nZWQ6CiAgIC0gYG1ha2VfaW50ZXJmYWNlYCBnYWlucyBgbmFtZWAsIGBtYWNfYWRkcmVzc2AsIGB1bnRhZ2dlZF92bGFuYCwKICAgICBgZGV2aWNlYCAoYW5kIGBtZ210X29ubHlgIG5vdyBkZWZhdWx0cyB0byBgRmFsc2VgKQogICAtIGBtYWtlX2lwYCBnYWlucyBhIGtleXdvcmQtb25seSBgYXNzaWduZWRfb2JqZWN0X2lkYAogICAtIG5ldyBgbWFrZV92bGFuKHZpZClgIGhlbHBlcgoKMi4gKipBZGQgdGllciA0IHVuaXQgdGVzdHMgZm9yIHRoZSBidWxrIGxvYWRlcioqIOKAlCBgdGVzdF9idWxrX2xvYWRlci5weWAKICAgZHJpdmVzIGBCdWxrRGF0YUxvYWRlcmAgd2l0aCBhIGBNYWdpY01vY2tgIHB5bmV0Ym94IHNlc3Npb246CiAgIGNvbnN0cnVjdG9yIGRlZmF1bHRzIC8gYEJBVENIX1NJWkVgIHBhcml0eSwgYF9jaHVua19saXN0YCBlZGdlIGNhc2VzLAogICBgbG9hZF9kZXZpY2VfZGF0YWAgKGVtcHR5IHNob3J0LWNpcmN1aXQsIHNpbmdsZS9tdWx0aS1iYXRjaCBpbnRlcmZhY2UKICAgbG9hZGluZyBhc3NlcnRlZCB2aWEgYGNhbGxfYXJnc19saXN0YCwgSVAgYmF0Y2hpbmcgKyBncm91cGluZywgcGFydGlhbAogICBwZXItYmF0Y2ggZmFpbHVyZXMgdGhhdCBgY29udGludWVgLCB0aGUgbm8taW50ZXJmYWNlcyBza2lwLCB0aGUKICAgZ3JvdXBpbmcgYEF0dHJpYnV0ZUVycm9yYCB0aGF0IGNsZWFycyBzdGF0ZSBhbmQgcmUtcmFpc2VzLCBhZGRpdGl2ZQogICBhY2N1bXVsYXRpb24gYWNyb3NzIGNhbGxzKSwgdGhlIGNhY2hlIGdldHRlcnMsIGBjbGVhcigpYCBhbmQKICAgYGdldF9zdGF0aXN0aWNzKClgLgoKMy4gKipBZGQgdGllciA0IHVuaXQgdGVzdHMgZm9yIHRoZSBpbnRlcmZhY2UgaGFuZGxlcioqIOKAlAogICBgdGVzdF9pbnRlcmZhY2VzLnB5YCB1c2VzIHRoZSAqcmVhbCogaW4tbWVtb3J5IGBDYWNoZU1hbmFnZXJgIGFuZCB0aGUKICAgYG1ha2VfZmFrZV9hcGlgIHN0dWI6IGBnZXRfb29iX2ludGVyZmFjZWAgY2FjaGUgaGl0IC8gaWRlYWwgSVArTUFDCiAgIG1hdGNoIC8gY2FjaGVkLW9uLXNlY29uZC1jYWxsIC8gSVAtcHJlZmVycmVkLW92ZXItTUFDLW9ubHkgLwogICBNQUMtb25seSBmYWxsYmFjayAvIGZpcnN0LWZhbGxiYWNrLXdpbnMgLyBza2lwIHJ1bGVzIC8gY2FjaGVkIG5lZ2F0aXZlCiAgIHJlc3VsdCAvIFZMQU4gZXh0cmFjdGlvbiAvIGZpbHRlci1leGNlcHRpb24td2l0aG91dC1jYWNoaW5nLCBwbHVzIHRoZQogICBgX2lzX21hbmFnZWRfb29iX2ludGVyZmFjZWAgdHJ1dGggdGFibGUgKGluY2x1ZGluZyB0aGUgbm8tYGhhc2F0dHJgCiAgIGFzeW1tZXRyeSB2cy4gdGhlIGdubWljIHR3aW4pLCBgX2dldF92bGFuX2lkYCBhbmQgYF9nZXRfaW50ZXJmYWNlX2lwYC4KCjQuICoqQWRkIHRpZXIgNCB1bml0IHRlc3RzIGZvciB0aGUgY29ubmVjdGlvbiBtYW5hZ2VyKiog4oCUCiAgIGB0ZXN0X2Nvbm5lY3Rpb24ucHlgIG1vbmtleXBhdGNoZXMgYGNvbm5lY3Rpb24ucHluZXRib3guYXBpYCwKICAgYGNvbm5lY3Rpb24udGltZS5zbGVlcGAgYW5kIHRoZSBgY29ubmVjdGlvbi5yZXF1ZXN0c2AgU1NMIGhlbHBlcnMgaW4KICAgdGhlIG1vZHVsZS11bmRlci10ZXN0IG5hbWVzcGFjZTsgYHRpbWUuc2xlZXBgIGlzIHBhdGNoZWQgaW4gZXZlcnkKICAgYGNvbm5lY3QoKWAgdGVzdC4gQ292ZXJzIGBfX2luaXRfX2AsIGBjb25uZWN0YCAoZmlyc3QtYXR0ZW1wdCBzdWNjZXNzLAogICB0aGUgU1NMLWlnbm9yZSBicmFuY2gsIHRoZSBuby1TU0wgYnJhbmNoLCByZXRyeS10aGVuLXN1Y2Nlc3MsCiAgIHJldHJ5IGV4aGF1c3Rpb24gcmFpc2luZyBgTmV0Qm94Q29ubmVjdGlvbkVycm9yYCBjaGFpbmVkIGZyb20gdGhlCiAgIG9yaWdpbmFsIGNhdXNlLCBhbmQgYHB5bmV0Ym94LmFwaWAgaXRzZWxmIHJhaXNpbmcpLAogICBgX2NvbmZpZ3VyZV9zc2xfaWdub3JlYCAod2l0aCBhbmQgd2l0aG91dCBgc2VsZi5hcGlgKSwgYW5kCiAgIGBkaXNjb25uZWN0YCAoY2xvc2UsIGlkZW1wb3RlbmN5LCBuby1wcmlvci1jb25uZWN0KS4KCiMjIFZlcmlmaWNhdGlvbgoKLSBgcHl0ZXN0IHRlc3RzL3VuaXRgIOKAlCAzMjUgcGFzc2VkCi0gYHB5dGVzdCAtLWNvdj1idWxrX2xvYWRlciAtLWNvdj1pbnRlcmZhY2VzIC0tY292PWNvbm5lY3Rpb25gIOKAlCAxMDAlIG9uCiAgYWxsIHRocmVlIG1vZHVsZXMKLSBgcHl0ZXN0IC0tZHVyYXRpb25zPTEwYCDigJQgdGllci00IHN1aXRlIDAuMTdzLCBhbGwgZHVyYXRpb25zIDwwLjAwNXMKLSBgZmxha2U4IGZpbGVzIHRlc3RzYCDigJQgY2xlYW4KLSBgYmxhY2sgLS1jaGVja2Agb24gdGhlIGZvdXIgdG91Y2hlZCBmaWxlcyDigJQgY2xlYW4KCiMjIE5vdGVzCgotIENvdmVyYWdlIGlzIGludm9rZWQgYXMgYC0tY292PWJ1bGtfbG9hZGVyYCAoZXRjLikgcmF0aGVyIHRoYW4gdGhlCiAgaXNzdWUncyBgLS1jb3Y9ZmlsZXMubmV0Ym94LmJ1bGtfbG9hZGVyYDogdGhlIHRlc3QgaGFybmVzcyBwdXRzCiAgYGZpbGVzL25ldGJveC9gIG9uIGBzeXMucGF0aGAgKHNlZSBgdGVzdHMvY29uZnRlc3QucHlgKSBzbyB0aGUgbW9kdWxlcwogIGltcG9ydCBmbGF0LCBhbmQgdGhlIGZsYXQgbmFtZSBpcyB3aGF0IGNvdmVyYWdlIG1hdGNoZXMuIFRoZSByZXBvcnRlZAogIGZpbGUgaXMgc3RpbGwgYGZpbGVzL25ldGJveC9idWxrX2xvYWRlci5weWAuCgrwn6SWIEdlbmVyYXRlZCB3aXRoIFtDbGF1ZGUgQ29kZV0oaHR0cHM6Ly9jbGF1ZGUuY29tL2NsYXVkZS1jb2RlKQ==
      patchset: 674bbde6f166863561b0abcad0cdbf6fc2bef84b
      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/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: null
      pre_timeout: null
      project:
        canonical_hostname: github.com
        canonical_name: github.com/osism/container-image-inventory-reconciler
        name: osism/container-image-inventory-reconciler
        short_name: container-image-inventory-reconciler
        src_dir: src/github.com/osism/container-image-inventory-reconciler
      projects:
        github.com/osism/container-image-inventory-reconciler:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-image-inventory-reconciler
          checkout: main
          checkout_description: zuul branch
          commit: b925ea99d8ada497e985eef6a784ebaee6fb6ff7
          name: osism/container-image-inventory-reconciler
          required: false
          short_name: container-image-inventory-reconciler
          src_dir: src/github.com/osism/container-image-inventory-reconciler
      ref: refs/pull/548/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
