all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fefb:94b0
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      docker_namespace: osism
      docker_registry: osism.harbor.regio.digital
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 20eedb5b-72be-4bf7-9ad5-db6288f72197
        host_id: 0d3d02185f810c959252bd1d303ec55040bf5bb0b401cceef814c3a7
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fefb:94b0
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.7.17
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.75
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fefb:94b0
        region: null
        slot: null
  vars:
    docker_namespace: osism
    docker_registry: osism.harbor.regio.digital
    zuul:
      _inheritance_path:
      - '<Job base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-config/zuul.d/jobs.yaml@main#2>'
      - '<Job container-image-python-osism-build explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/python-osism/.zuul.yaml@main#79>'
      - '<Job container-image-python-osism-build explicit: None implied: None source:
        osism/python-osism/.zuul.yaml@main#138>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: 011193416e9945528eff4c2ba052edfe
      build_refs:
      - branch: main
        change: '2257'
        change_message: "sonic/validator: enforce cross-table leafref references\n\nPer-table
          Pydantic validation only confirms each row is well-formed; YANG leafref
          semantics \u2014 a leaf must point at an existing value in another path
          \u2014 were treated as plain strings, so a PORTCHANNEL_MEMBER referencing
          a non-existent PORT silently passed. Catch these before pushing to the device.\r\n\r\n-
          tools/sonic_yang_to_pydantic.py walks every leafref (including unions and
          leaf-lists), parses the XPath to (target_table, target_field), and emits
          a registry alongside the per-table schemas. Relative paths and predicate-
          bearing XPaths are deliberately skipped (issue out-of-scope).\r\n- osism/tasks/conductor/sonic/_generated/_leafrefs.py
          is the committed output (137 deduplicated constraints across 205 tables);
          regenerated via the tool.\r\n- validator.py runs a post-pass after row validation:
          for each constraint it walks rows in source_table and checks that each value
          resolves to one of the targets. Unions succeed if any target accepts; leaf-lists
          are checked per element; single-key lists fall back to the row key when
          the field is not present in the row dict. Composite-key parsing remains
          out of scope.\r\n- Failures surface as ValidationError(table=<source>, path=\"<row>.<field>\")
          so the existing text/JSON report stays consistent.\r\n\r\nCloses osism/python-osism#2252\r\n\r\nAI-assisted:
          Claude Code"
        change_url: https://github.com/osism/python-osism/pull/2257
        commit_id: cc235a28a16ac35646d399d2ca8c4bb87580896c
        patchset: cc235a28a16ac35646d399d2ca8c4bb87580896c
        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: 528dfe91e18f4274bded47c29a1ac143
      buildset_refs:
      - branch: main
        change: '2257'
        change_message: "sonic/validator: enforce cross-table leafref references\n\nPer-table
          Pydantic validation only confirms each row is well-formed; YANG leafref
          semantics \u2014 a leaf must point at an existing value in another path
          \u2014 were treated as plain strings, so a PORTCHANNEL_MEMBER referencing
          a non-existent PORT silently passed. Catch these before pushing to the device.\r\n\r\n-
          tools/sonic_yang_to_pydantic.py walks every leafref (including unions and
          leaf-lists), parses the XPath to (target_table, target_field), and emits
          a registry alongside the per-table schemas. Relative paths and predicate-
          bearing XPaths are deliberately skipped (issue out-of-scope).\r\n- osism/tasks/conductor/sonic/_generated/_leafrefs.py
          is the committed output (137 deduplicated constraints across 205 tables);
          regenerated via the tool.\r\n- validator.py runs a post-pass after row validation:
          for each constraint it walks rows in source_table and checks that each value
          resolves to one of the targets. Unions succeed if any target accepts; leaf-lists
          are checked per element; single-key lists fall back to the row key when
          the field is not present in the row dict. Composite-key parsing remains
          out of scope.\r\n- Failures surface as ValidationError(table=<source>, path=\"<row>.<field>\")
          so the existing text/JSON report stays consistent.\r\n\r\nCloses osism/python-osism#2252\r\n\r\nAI-assisted:
          Claude Code"
        change_url: https://github.com/osism/python-osism/pull/2257
        commit_id: cc235a28a16ac35646d399d2ca8c4bb87580896c
        patchset: cc235a28a16ac35646d399d2ca8c4bb87580896c
        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: '2257'
      change_message: "sonic/validator: enforce cross-table leafref references\n\nPer-table
        Pydantic validation only confirms each row is well-formed; YANG leafref semantics
        \u2014 a leaf must point at an existing value in another path \u2014 were
        treated as plain strings, so a PORTCHANNEL_MEMBER referencing a non-existent
        PORT silently passed. Catch these before pushing to the device.\r\n\r\n- tools/sonic_yang_to_pydantic.py
        walks every leafref (including unions and leaf-lists), parses the XPath to
        (target_table, target_field), and emits a registry alongside the per-table
        schemas. Relative paths and predicate- bearing XPaths are deliberately skipped
        (issue out-of-scope).\r\n- osism/tasks/conductor/sonic/_generated/_leafrefs.py
        is the committed output (137 deduplicated constraints across 205 tables);
        regenerated via the tool.\r\n- validator.py runs a post-pass after row validation:
        for each constraint it walks rows in source_table and checks that each value
        resolves to one of the targets. Unions succeed if any target accepts; leaf-lists
        are checked per element; single-key lists fall back to the row key when the
        field is not present in the row dict. Composite-key parsing remains out of
        scope.\r\n- Failures surface as ValidationError(table=<source>, path=\"<row>.<field>\")
        so the existing text/JSON report stays consistent.\r\n\r\nCloses osism/python-osism#2252\r\n\r\nAI-assisted:
        Claude Code"
      change_url: https://github.com/osism/python-osism/pull/2257
      child_jobs: []
      commit_id: cc235a28a16ac35646d399d2ca8c4bb87580896c
      event_id: 8d329ba0-4800-11f1-96d0-d95ee606d4c8
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/011193416e9945528eff4c2ba052edfe/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/011193416e9945528eff4c2ba052edfe/work/logs
        result_data_file: /var/lib/zuul/builds/011193416e9945528eff4c2ba052edfe/work/results.json
        src_root: /var/lib/zuul/builds/011193416e9945528eff4c2ba052edfe/work/src
        work_root: /var/lib/zuul/builds/011193416e9945528eff4c2ba052edfe/work
      include_vars: []
      items:
      - branch: main
        change: '2257'
        change_message: "sonic/validator: enforce cross-table leafref references\n\nPer-table
          Pydantic validation only confirms each row is well-formed; YANG leafref
          semantics \u2014 a leaf must point at an existing value in another path
          \u2014 were treated as plain strings, so a PORTCHANNEL_MEMBER referencing
          a non-existent PORT silently passed. Catch these before pushing to the device.\r\n\r\n-
          tools/sonic_yang_to_pydantic.py walks every leafref (including unions and
          leaf-lists), parses the XPath to (target_table, target_field), and emits
          a registry alongside the per-table schemas. Relative paths and predicate-
          bearing XPaths are deliberately skipped (issue out-of-scope).\r\n- osism/tasks/conductor/sonic/_generated/_leafrefs.py
          is the committed output (137 deduplicated constraints across 205 tables);
          regenerated via the tool.\r\n- validator.py runs a post-pass after row validation:
          for each constraint it walks rows in source_table and checks that each value
          resolves to one of the targets. Unions succeed if any target accepts; leaf-lists
          are checked per element; single-key lists fall back to the row key when
          the field is not present in the row dict. Composite-key parsing remains
          out of scope.\r\n- Failures surface as ValidationError(table=<source>, path=\"<row>.<field>\")
          so the existing text/JSON report stays consistent.\r\n\r\nCloses osism/python-osism#2252\r\n\r\nAI-assisted:
          Claude Code"
        change_url: https://github.com/osism/python-osism/pull/2257
        commit_id: cc235a28a16ac35646d399d2ca8c4bb87580896c
        patchset: cc235a28a16ac35646d399d2ca8c4bb87580896c
        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: container-image-python-osism-build
      jobtags: []
      max_attempts: 3
      message: c29uaWMvdmFsaWRhdG9yOiBlbmZvcmNlIGNyb3NzLXRhYmxlIGxlYWZyZWYgcmVmZXJlbmNlcwoKUGVyLXRhYmxlIFB5ZGFudGljIHZhbGlkYXRpb24gb25seSBjb25maXJtcyBlYWNoIHJvdyBpcyB3ZWxsLWZvcm1lZDsgWUFORyBsZWFmcmVmIHNlbWFudGljcyDigJQgYSBsZWFmIG11c3QgcG9pbnQgYXQgYW4gZXhpc3RpbmcgdmFsdWUgaW4gYW5vdGhlciBwYXRoIOKAlCB3ZXJlIHRyZWF0ZWQgYXMgcGxhaW4gc3RyaW5ncywgc28gYSBQT1JUQ0hBTk5FTF9NRU1CRVIgcmVmZXJlbmNpbmcgYSBub24tZXhpc3RlbnQgUE9SVCBzaWxlbnRseSBwYXNzZWQuIENhdGNoIHRoZXNlIGJlZm9yZSBwdXNoaW5nIHRvIHRoZSBkZXZpY2UuDQoNCi0gdG9vbHMvc29uaWNfeWFuZ190b19weWRhbnRpYy5weSB3YWxrcyBldmVyeSBsZWFmcmVmIChpbmNsdWRpbmcgdW5pb25zIGFuZCBsZWFmLWxpc3RzKSwgcGFyc2VzIHRoZSBYUGF0aCB0byAodGFyZ2V0X3RhYmxlLCB0YXJnZXRfZmllbGQpLCBhbmQgZW1pdHMgYSByZWdpc3RyeSBhbG9uZ3NpZGUgdGhlIHBlci10YWJsZSBzY2hlbWFzLiBSZWxhdGl2ZSBwYXRocyBhbmQgcHJlZGljYXRlLSBiZWFyaW5nIFhQYXRocyBhcmUgZGVsaWJlcmF0ZWx5IHNraXBwZWQgKGlzc3VlIG91dC1vZi1zY29wZSkuDQotIG9zaXNtL3Rhc2tzL2NvbmR1Y3Rvci9zb25pYy9fZ2VuZXJhdGVkL19sZWFmcmVmcy5weSBpcyB0aGUgY29tbWl0dGVkIG91dHB1dCAoMTM3IGRlZHVwbGljYXRlZCBjb25zdHJhaW50cyBhY3Jvc3MgMjA1IHRhYmxlcyk7IHJlZ2VuZXJhdGVkIHZpYSB0aGUgdG9vbC4NCi0gdmFsaWRhdG9yLnB5IHJ1bnMgYSBwb3N0LXBhc3MgYWZ0ZXIgcm93IHZhbGlkYXRpb246IGZvciBlYWNoIGNvbnN0cmFpbnQgaXQgd2Fsa3Mgcm93cyBpbiBzb3VyY2VfdGFibGUgYW5kIGNoZWNrcyB0aGF0IGVhY2ggdmFsdWUgcmVzb2x2ZXMgdG8gb25lIG9mIHRoZSB0YXJnZXRzLiBVbmlvbnMgc3VjY2VlZCBpZiBhbnkgdGFyZ2V0IGFjY2VwdHM7IGxlYWYtbGlzdHMgYXJlIGNoZWNrZWQgcGVyIGVsZW1lbnQ7IHNpbmdsZS1rZXkgbGlzdHMgZmFsbCBiYWNrIHRvIHRoZSByb3cga2V5IHdoZW4gdGhlIGZpZWxkIGlzIG5vdCBwcmVzZW50IGluIHRoZSByb3cgZGljdC4gQ29tcG9zaXRlLWtleSBwYXJzaW5nIHJlbWFpbnMgb3V0IG9mIHNjb3BlLg0KLSBGYWlsdXJlcyBzdXJmYWNlIGFzIFZhbGlkYXRpb25FcnJvcih0YWJsZT08c291cmNlPiwgcGF0aD0iPHJvdz4uPGZpZWxkPiIpIHNvIHRoZSBleGlzdGluZyB0ZXh0L0pTT04gcmVwb3J0IHN0YXlzIGNvbnNpc3RlbnQuDQoNCkNsb3NlcyBvc2lzbS9weXRob24tb3Npc20jMjI1Mg0KDQpBSS1hc3Npc3RlZDogQ2xhdWRlIENvZGU=
      patchset: cc235a28a16ac35646d399d2ca8c4bb87580896c
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: add3ee021431f04a7e4409a7c4c34e0c6003f3ab
          trusted/project_1/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 79fe3eb1d01f8ac5739b0b7bc4759c407b6e248d
          untrusted/project_0/github.com/osism/python-osism:
            canonical_name: github.com/osism/python-osism
            checkout: main
            commit: 6a44110160c698d10e6efa97fcc4fa47a59b64aa
          untrusted/project_1/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: add3ee021431f04a7e4409a7c4c34e0c6003f3ab
          untrusted/project_2/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 79fe3eb1d01f8ac5739b0b7bc4759c407b6e248d
        playbooks:
        - path: untrusted/project_0/github.com/osism/python-osism/playbooks/build.yml
          roles:
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_1/zuul-config
            link_target: untrusted/project_1/github.com/osism/zuul-config
            role_path: ansible/playbook_0/role_1/zuul-config/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/playbook_0/role_2/openinfra-zuul-jobs
            link_target: untrusted/project_2/github.com/osism/openinfra-zuul-jobs
            role_path: ansible/playbook_0/role_2/openinfra-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: 6a44110160c698d10e6efa97fcc4fa47a59b64aa
          name: osism/python-osism
          required: false
          short_name: python-osism
          src_dir: src/github.com/osism/python-osism
      ref: refs/pull/2257/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
