all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:feb3:bf20
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 63a7ae11-2e09-4e62-b505-60c7f3dc837b
        host_id: 4667d18e0398acd2fb730ad41ba32e35789c4ac8cd4c0875d25b316b
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:feb3:bf20
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.7.137
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.192.124
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:feb3:bf20
        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 mypy explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-jobs/.zuul.yaml@main#42>'
      - '<Job mypy explicit: None implied: None source: osism/python-osism/.zuul.yaml@main#138>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: 2c8432a9be5843cd985da1292c0e2784
      build_refs:
      - branch: main
        change: '2297'
        change_message: "sonic: enforce full config_db.json ownership\n\n## Motivation\n\nRegenerating
          a SONiC config from NetBox repeatedly raised the same question: when `generate_sonic_config()`
          rewrites `config_db.json`, which sections does it own, and may an operator
          hand-edit anything directly? PRs #2279 and #2290 both ran into it. The policy
          is now settled: **the generator owns and generates `config_db.json` in full,
          and operators make no manual adjustments to it.**\n\n## What this PR does\n\nDocuments
          that ownership model in the `generate_sonic_config()` docstring and brings
          the code in line with it.\n\n- **Full ownership, documented.** The docstring
          states whole-file ownership: every section the generator manages is rebuilt
          from NetBox data and hardcoded SONiC policy on each regen; no sections pass
          operator edits through unchanged. Two fields the generator does not itself
          emit \u2014 the `DEVICE_METADATA` localhost device attributes (e.g. device
          `type`) and the `DATABASE` schema `VERSION` \u2014 are inherited from the
          device's image-provided base config, not from operator hand-edits.\n- **Owned
          tables rebuilt from scratch.** Previously the generator deep-copied the
          base config and most helpers assigned only the keys they generate this run,
          so an entry removed from NetBox but still present in `config_db.json` (e.g.
          an old `VLAN_MEMBER`, `BGP_GLOBALS` VRF, `VXLAN_TUNNEL_MAP`, SNMP user,
          or syslog host) survived as stale, active config. The owned tables (`OWNED_TABLE_KEYS`
          \u2014 every generated table except the inherited `DEVICE_METADATA` and
          `VERSIONS`) are now cleared up front, so only regenerated entries remain.\n-
          **`BGP_GLOBALS['default']` replaced wholesale.** It was written with key-level
          updates that merged into a pre-existing entry, so operator fields survived
          regen. It is now replaced wholesale, like every other generated VRF.\n-
          **`STATIC_ROUTE` no longer preserves hand-edited routes.** Clearing the
          owned tables drops pre-existing routes (e.g. an operator's custom blackhole
          or VRF route) before the management default route is written.\n\n## Tests\n\n-
          **Illustrative helper tests** (`test_config_generator_ownership.py`): `_add_vrf_configuration`
          and `_add_vlan_configuration` replace `BGP_GLOBALS[vrf]`, `VLAN` entries,
          and `ROUTE_REDISTRIBUTE` keys wholesale.\n- **Orchestrator tests** (`test_config_generator_orchestrator.py`):
          pre-existing `BGP_GLOBALS['default']` fields, `STATIC_ROUTE` entries, and
          stale owned-table entries are dropped on regen, while `DEVICE_METADATA`
          and `VERSIONS` survive."
        change_url: https://github.com/osism/python-osism/pull/2297
        commit_id: bb263fa3ee82ee1209909ee74d42efa4e6e0e396
        patchset: bb263fa3ee82ee1209909ee74d42efa4e6e0e396
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/python-osism
          name: osism/python-osism
          short_name: python-osism
        src_dir: src/github.com/osism/python-osism
        topic: null
      buildset: 0dbe9d60b94c4b1e9d56ef43c30e306c
      buildset_refs:
      - branch: main
        change: '2297'
        change_message: "sonic: enforce full config_db.json ownership\n\n## Motivation\n\nRegenerating
          a SONiC config from NetBox repeatedly raised the same question: when `generate_sonic_config()`
          rewrites `config_db.json`, which sections does it own, and may an operator
          hand-edit anything directly? PRs #2279 and #2290 both ran into it. The policy
          is now settled: **the generator owns and generates `config_db.json` in full,
          and operators make no manual adjustments to it.**\n\n## What this PR does\n\nDocuments
          that ownership model in the `generate_sonic_config()` docstring and brings
          the code in line with it.\n\n- **Full ownership, documented.** The docstring
          states whole-file ownership: every section the generator manages is rebuilt
          from NetBox data and hardcoded SONiC policy on each regen; no sections pass
          operator edits through unchanged. Two fields the generator does not itself
          emit \u2014 the `DEVICE_METADATA` localhost device attributes (e.g. device
          `type`) and the `DATABASE` schema `VERSION` \u2014 are inherited from the
          device's image-provided base config, not from operator hand-edits.\n- **Owned
          tables rebuilt from scratch.** Previously the generator deep-copied the
          base config and most helpers assigned only the keys they generate this run,
          so an entry removed from NetBox but still present in `config_db.json` (e.g.
          an old `VLAN_MEMBER`, `BGP_GLOBALS` VRF, `VXLAN_TUNNEL_MAP`, SNMP user,
          or syslog host) survived as stale, active config. The owned tables (`OWNED_TABLE_KEYS`
          \u2014 every generated table except the inherited `DEVICE_METADATA` and
          `VERSIONS`) are now cleared up front, so only regenerated entries remain.\n-
          **`BGP_GLOBALS['default']` replaced wholesale.** It was written with key-level
          updates that merged into a pre-existing entry, so operator fields survived
          regen. It is now replaced wholesale, like every other generated VRF.\n-
          **`STATIC_ROUTE` no longer preserves hand-edited routes.** Clearing the
          owned tables drops pre-existing routes (e.g. an operator's custom blackhole
          or VRF route) before the management default route is written.\n\n## Tests\n\n-
          **Illustrative helper tests** (`test_config_generator_ownership.py`): `_add_vrf_configuration`
          and `_add_vlan_configuration` replace `BGP_GLOBALS[vrf]`, `VLAN` entries,
          and `ROUTE_REDISTRIBUTE` keys wholesale.\n- **Orchestrator tests** (`test_config_generator_orchestrator.py`):
          pre-existing `BGP_GLOBALS['default']` fields, `STATIC_ROUTE` entries, and
          stale owned-table entries are dropped on regen, while `DEVICE_METADATA`
          and `VERSIONS` survive."
        change_url: https://github.com/osism/python-osism/pull/2297
        commit_id: bb263fa3ee82ee1209909ee74d42efa4e6e0e396
        patchset: bb263fa3ee82ee1209909ee74d42efa4e6e0e396
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/python-osism
          name: osism/python-osism
          short_name: python-osism
        src_dir: src/github.com/osism/python-osism
        topic: null
      change: '2297'
      change_message: "sonic: enforce full config_db.json ownership\n\n## Motivation\n\nRegenerating
        a SONiC config from NetBox repeatedly raised the same question: when `generate_sonic_config()`
        rewrites `config_db.json`, which sections does it own, and may an operator
        hand-edit anything directly? PRs #2279 and #2290 both ran into it. The policy
        is now settled: **the generator owns and generates `config_db.json` in full,
        and operators make no manual adjustments to it.**\n\n## What this PR does\n\nDocuments
        that ownership model in the `generate_sonic_config()` docstring and brings
        the code in line with it.\n\n- **Full ownership, documented.** The docstring
        states whole-file ownership: every section the generator manages is rebuilt
        from NetBox data and hardcoded SONiC policy on each regen; no sections pass
        operator edits through unchanged. Two fields the generator does not itself
        emit \u2014 the `DEVICE_METADATA` localhost device attributes (e.g. device
        `type`) and the `DATABASE` schema `VERSION` \u2014 are inherited from the
        device's image-provided base config, not from operator hand-edits.\n- **Owned
        tables rebuilt from scratch.** Previously the generator deep-copied the base
        config and most helpers assigned only the keys they generate this run, so
        an entry removed from NetBox but still present in `config_db.json` (e.g. an
        old `VLAN_MEMBER`, `BGP_GLOBALS` VRF, `VXLAN_TUNNEL_MAP`, SNMP user, or syslog
        host) survived as stale, active config. The owned tables (`OWNED_TABLE_KEYS`
        \u2014 every generated table except the inherited `DEVICE_METADATA` and `VERSIONS`)
        are now cleared up front, so only regenerated entries remain.\n- **`BGP_GLOBALS['default']`
        replaced wholesale.** It was written with key-level updates that merged into
        a pre-existing entry, so operator fields survived regen. It is now replaced
        wholesale, like every other generated VRF.\n- **`STATIC_ROUTE` no longer preserves
        hand-edited routes.** Clearing the owned tables drops pre-existing routes
        (e.g. an operator's custom blackhole or VRF route) before the management default
        route is written.\n\n## Tests\n\n- **Illustrative helper tests** (`test_config_generator_ownership.py`):
        `_add_vrf_configuration` and `_add_vlan_configuration` replace `BGP_GLOBALS[vrf]`,
        `VLAN` entries, and `ROUTE_REDISTRIBUTE` keys wholesale.\n- **Orchestrator
        tests** (`test_config_generator_orchestrator.py`): pre-existing `BGP_GLOBALS['default']`
        fields, `STATIC_ROUTE` entries, and stale owned-table entries are dropped
        on regen, while `DEVICE_METADATA` and `VERSIONS` survive."
      change_url: https://github.com/osism/python-osism/pull/2297
      child_jobs: []
      commit_id: bb263fa3ee82ee1209909ee74d42efa4e6e0e396
      event_id: bf647300-5b3d-11f1-9ce4-fc94fecdf03b
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/2c8432a9be5843cd985da1292c0e2784/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/2c8432a9be5843cd985da1292c0e2784/work/logs
        result_data_file: /var/lib/zuul/builds/2c8432a9be5843cd985da1292c0e2784/work/results.json
        src_root: /var/lib/zuul/builds/2c8432a9be5843cd985da1292c0e2784/work/src
        work_root: /var/lib/zuul/builds/2c8432a9be5843cd985da1292c0e2784/work
      include_vars: []
      items:
      - branch: main
        change: '2297'
        change_message: "sonic: enforce full config_db.json ownership\n\n## Motivation\n\nRegenerating
          a SONiC config from NetBox repeatedly raised the same question: when `generate_sonic_config()`
          rewrites `config_db.json`, which sections does it own, and may an operator
          hand-edit anything directly? PRs #2279 and #2290 both ran into it. The policy
          is now settled: **the generator owns and generates `config_db.json` in full,
          and operators make no manual adjustments to it.**\n\n## What this PR does\n\nDocuments
          that ownership model in the `generate_sonic_config()` docstring and brings
          the code in line with it.\n\n- **Full ownership, documented.** The docstring
          states whole-file ownership: every section the generator manages is rebuilt
          from NetBox data and hardcoded SONiC policy on each regen; no sections pass
          operator edits through unchanged. Two fields the generator does not itself
          emit \u2014 the `DEVICE_METADATA` localhost device attributes (e.g. device
          `type`) and the `DATABASE` schema `VERSION` \u2014 are inherited from the
          device's image-provided base config, not from operator hand-edits.\n- **Owned
          tables rebuilt from scratch.** Previously the generator deep-copied the
          base config and most helpers assigned only the keys they generate this run,
          so an entry removed from NetBox but still present in `config_db.json` (e.g.
          an old `VLAN_MEMBER`, `BGP_GLOBALS` VRF, `VXLAN_TUNNEL_MAP`, SNMP user,
          or syslog host) survived as stale, active config. The owned tables (`OWNED_TABLE_KEYS`
          \u2014 every generated table except the inherited `DEVICE_METADATA` and
          `VERSIONS`) are now cleared up front, so only regenerated entries remain.\n-
          **`BGP_GLOBALS['default']` replaced wholesale.** It was written with key-level
          updates that merged into a pre-existing entry, so operator fields survived
          regen. It is now replaced wholesale, like every other generated VRF.\n-
          **`STATIC_ROUTE` no longer preserves hand-edited routes.** Clearing the
          owned tables drops pre-existing routes (e.g. an operator's custom blackhole
          or VRF route) before the management default route is written.\n\n## Tests\n\n-
          **Illustrative helper tests** (`test_config_generator_ownership.py`): `_add_vrf_configuration`
          and `_add_vlan_configuration` replace `BGP_GLOBALS[vrf]`, `VLAN` entries,
          and `ROUTE_REDISTRIBUTE` keys wholesale.\n- **Orchestrator tests** (`test_config_generator_orchestrator.py`):
          pre-existing `BGP_GLOBALS['default']` fields, `STATIC_ROUTE` entries, and
          stale owned-table entries are dropped on regen, while `DEVICE_METADATA`
          and `VERSIONS` survive."
        change_url: https://github.com/osism/python-osism/pull/2297
        commit_id: bb263fa3ee82ee1209909ee74d42efa4e6e0e396
        patchset: bb263fa3ee82ee1209909ee74d42efa4e6e0e396
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/python-osism
          name: osism/python-osism
          short_name: python-osism
          src_dir: src/github.com/osism/python-osism
        topic: null
      job: mypy
      jobtags: []
      max_attempts: 3
      message: c29uaWM6IGVuZm9yY2UgZnVsbCBjb25maWdfZGIuanNvbiBvd25lcnNoaXAKCiMjIE1vdGl2YXRpb24KClJlZ2VuZXJhdGluZyBhIFNPTmlDIGNvbmZpZyBmcm9tIE5ldEJveCByZXBlYXRlZGx5IHJhaXNlZCB0aGUgc2FtZSBxdWVzdGlvbjogd2hlbiBgZ2VuZXJhdGVfc29uaWNfY29uZmlnKClgIHJld3JpdGVzIGBjb25maWdfZGIuanNvbmAsIHdoaWNoIHNlY3Rpb25zIGRvZXMgaXQgb3duLCBhbmQgbWF5IGFuIG9wZXJhdG9yIGhhbmQtZWRpdCBhbnl0aGluZyBkaXJlY3RseT8gUFJzICMyMjc5IGFuZCAjMjI5MCBib3RoIHJhbiBpbnRvIGl0LiBUaGUgcG9saWN5IGlzIG5vdyBzZXR0bGVkOiAqKnRoZSBnZW5lcmF0b3Igb3ducyBhbmQgZ2VuZXJhdGVzIGBjb25maWdfZGIuanNvbmAgaW4gZnVsbCwgYW5kIG9wZXJhdG9ycyBtYWtlIG5vIG1hbnVhbCBhZGp1c3RtZW50cyB0byBpdC4qKgoKIyMgV2hhdCB0aGlzIFBSIGRvZXMKCkRvY3VtZW50cyB0aGF0IG93bmVyc2hpcCBtb2RlbCBpbiB0aGUgYGdlbmVyYXRlX3NvbmljX2NvbmZpZygpYCBkb2NzdHJpbmcgYW5kIGJyaW5ncyB0aGUgY29kZSBpbiBsaW5lIHdpdGggaXQuCgotICoqRnVsbCBvd25lcnNoaXAsIGRvY3VtZW50ZWQuKiogVGhlIGRvY3N0cmluZyBzdGF0ZXMgd2hvbGUtZmlsZSBvd25lcnNoaXA6IGV2ZXJ5IHNlY3Rpb24gdGhlIGdlbmVyYXRvciBtYW5hZ2VzIGlzIHJlYnVpbHQgZnJvbSBOZXRCb3ggZGF0YSBhbmQgaGFyZGNvZGVkIFNPTmlDIHBvbGljeSBvbiBlYWNoIHJlZ2VuOyBubyBzZWN0aW9ucyBwYXNzIG9wZXJhdG9yIGVkaXRzIHRocm91Z2ggdW5jaGFuZ2VkLiBUd28gZmllbGRzIHRoZSBnZW5lcmF0b3IgZG9lcyBub3QgaXRzZWxmIGVtaXQg4oCUIHRoZSBgREVWSUNFX01FVEFEQVRBYCBsb2NhbGhvc3QgZGV2aWNlIGF0dHJpYnV0ZXMgKGUuZy4gZGV2aWNlIGB0eXBlYCkgYW5kIHRoZSBgREFUQUJBU0VgIHNjaGVtYSBgVkVSU0lPTmAg4oCUIGFyZSBpbmhlcml0ZWQgZnJvbSB0aGUgZGV2aWNlJ3MgaW1hZ2UtcHJvdmlkZWQgYmFzZSBjb25maWcsIG5vdCBmcm9tIG9wZXJhdG9yIGhhbmQtZWRpdHMuCi0gKipPd25lZCB0YWJsZXMgcmVidWlsdCBmcm9tIHNjcmF0Y2guKiogUHJldmlvdXNseSB0aGUgZ2VuZXJhdG9yIGRlZXAtY29waWVkIHRoZSBiYXNlIGNvbmZpZyBhbmQgbW9zdCBoZWxwZXJzIGFzc2lnbmVkIG9ubHkgdGhlIGtleXMgdGhleSBnZW5lcmF0ZSB0aGlzIHJ1biwgc28gYW4gZW50cnkgcmVtb3ZlZCBmcm9tIE5ldEJveCBidXQgc3RpbGwgcHJlc2VudCBpbiBgY29uZmlnX2RiLmpzb25gIChlLmcuIGFuIG9sZCBgVkxBTl9NRU1CRVJgLCBgQkdQX0dMT0JBTFNgIFZSRiwgYFZYTEFOX1RVTk5FTF9NQVBgLCBTTk1QIHVzZXIsIG9yIHN5c2xvZyBob3N0KSBzdXJ2aXZlZCBhcyBzdGFsZSwgYWN0aXZlIGNvbmZpZy4gVGhlIG93bmVkIHRhYmxlcyAoYE9XTkVEX1RBQkxFX0tFWVNgIOKAlCBldmVyeSBnZW5lcmF0ZWQgdGFibGUgZXhjZXB0IHRoZSBpbmhlcml0ZWQgYERFVklDRV9NRVRBREFUQWAgYW5kIGBWRVJTSU9OU2ApIGFyZSBub3cgY2xlYXJlZCB1cCBmcm9udCwgc28gb25seSByZWdlbmVyYXRlZCBlbnRyaWVzIHJlbWFpbi4KLSAqKmBCR1BfR0xPQkFMU1snZGVmYXVsdCddYCByZXBsYWNlZCB3aG9sZXNhbGUuKiogSXQgd2FzIHdyaXR0ZW4gd2l0aCBrZXktbGV2ZWwgdXBkYXRlcyB0aGF0IG1lcmdlZCBpbnRvIGEgcHJlLWV4aXN0aW5nIGVudHJ5LCBzbyBvcGVyYXRvciBmaWVsZHMgc3Vydml2ZWQgcmVnZW4uIEl0IGlzIG5vdyByZXBsYWNlZCB3aG9sZXNhbGUsIGxpa2UgZXZlcnkgb3RoZXIgZ2VuZXJhdGVkIFZSRi4KLSAqKmBTVEFUSUNfUk9VVEVgIG5vIGxvbmdlciBwcmVzZXJ2ZXMgaGFuZC1lZGl0ZWQgcm91dGVzLioqIENsZWFyaW5nIHRoZSBvd25lZCB0YWJsZXMgZHJvcHMgcHJlLWV4aXN0aW5nIHJvdXRlcyAoZS5nLiBhbiBvcGVyYXRvcidzIGN1c3RvbSBibGFja2hvbGUgb3IgVlJGIHJvdXRlKSBiZWZvcmUgdGhlIG1hbmFnZW1lbnQgZGVmYXVsdCByb3V0ZSBpcyB3cml0dGVuLgoKIyMgVGVzdHMKCi0gKipJbGx1c3RyYXRpdmUgaGVscGVyIHRlc3RzKiogKGB0ZXN0X2NvbmZpZ19nZW5lcmF0b3Jfb3duZXJzaGlwLnB5YCk6IGBfYWRkX3ZyZl9jb25maWd1cmF0aW9uYCBhbmQgYF9hZGRfdmxhbl9jb25maWd1cmF0aW9uYCByZXBsYWNlIGBCR1BfR0xPQkFMU1t2cmZdYCwgYFZMQU5gIGVudHJpZXMsIGFuZCBgUk9VVEVfUkVESVNUUklCVVRFYCBrZXlzIHdob2xlc2FsZS4KLSAqKk9yY2hlc3RyYXRvciB0ZXN0cyoqIChgdGVzdF9jb25maWdfZ2VuZXJhdG9yX29yY2hlc3RyYXRvci5weWApOiBwcmUtZXhpc3RpbmcgYEJHUF9HTE9CQUxTWydkZWZhdWx0J11gIGZpZWxkcywgYFNUQVRJQ19ST1VURWAgZW50cmllcywgYW5kIHN0YWxlIG93bmVkLXRhYmxlIGVudHJpZXMgYXJlIGRyb3BwZWQgb24gcmVnZW4sIHdoaWxlIGBERVZJQ0VfTUVUQURBVEFgIGFuZCBgVkVSU0lPTlNgIHN1cnZpdmUu
      patchset: bb263fa3ee82ee1209909ee74d42efa4e6e0e396
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 019f0261a526db7d8989ff1abefc2299a8c0ffbc
          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: 019f0261a526db7d8989ff1abefc2299a8c0ffbc
          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/mypy/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/python-osism
        name: osism/python-osism
        short_name: python-osism
        src_dir: src/github.com/osism/python-osism
      projects:
        github.com/osism/python-osism:
          canonical_hostname: github.com
          canonical_name: github.com/osism/python-osism
          checkout: main
          checkout_description: zuul branch
          commit: 79b917ba025aaa6d35692409401683ce5d7a8446
          name: osism/python-osism
          required: false
          short_name: python-osism
          src_dir: src/github.com/osism/python-osism
      ref: refs/pull/2297/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
