all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fec6:24e6
      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: 5e597646-a601-4018-bc3a-3004a35e92aa
        host_id: d2c528664e1bd332192bb574345deb0c6c7158061222e4a6c036b5ef
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fec6:24e6
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.0.109
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.192.250
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fec6:24e6
        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: 67a89adc2ed540e384435bd80711bec2
      build_refs:
      - branch: main
        change: '2246'
        change_message: "Add unit tests for SONiC config_generator port/interface
          helpers\n\nCovers the port / interface / portchannel / breakout helpers
          in osism/tasks/conductor/sonic/config_generator.py:\r\n\r\n- _add_port_configurations:
          natural sort, master-port skip, admin_status, NetBox speed override (explicit
          vs derived, kbps\u2192Mbps), breakout speed (NetBox + brkout_mode fallback),
          index propagation from master, default port_data shape, valid_speeds branches,
          and the post-loop _add_missing_breakout_ports / _add_tagged_vlans_to_ports
          invocations.\r\n- _get_breakout_port_valid_speeds: known speeds and falsy
          inputs.\r\n- _calculate_breakout_port_lane: 4-lane and 8-lane breakouts,
          range syntax, single-lane master, unexpected counts, out-of-bounds and regex
          no-match fallbacks.\r\n- _add_missing_breakout_ports: skip-existing, NetBox
          speed without kbps\u2192Mbps conversion, brkout_mode fallback (incl. default),
          admin state, master index copy, valid_speeds override, alias kwargs.\r\n-
          _add_tagged_vlans_to_ports: numeric VLAN ID sort, untagged ignored, unknown
          NetBox name skipped, port absent from PORT silently skipped.\r\n- _add_interface_configurations:
          IPv4 base + suffixed entry, IPv6 link-local fallback, port-channel-member
          skip, disconnected skip, missing netbox_interfaces entry.\r\n- _get_transfer_role_ipv4_addresses:
          happy path, dedup per interface, IPv6 ignored, mgmt/virtual filtered, invalid
          prefix and IP swallowed, IP without assigned_object_id, unknown id, top-level
          exception.\r\n- _has_direct_ipv4_address, _has_transfer_role_ipv4, _is_untagged_vlan_member:
          happy path and empty-input early returns.\r\n- _add_portchannel_configuration:
          populated and empty cases.\r\n\r\nCloses #2222\r\n\r\nAI-assisted: Claude
          Code"
        change_url: https://github.com/osism/python-osism/pull/2246
        commit_id: b9387f31256b8732f776a43cef4918b5e05d1de4
        patchset: b9387f31256b8732f776a43cef4918b5e05d1de4
        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: 8e423fe097324c44a9d3618c2fb34b75
      buildset_refs:
      - branch: main
        change: '2246'
        change_message: "Add unit tests for SONiC config_generator port/interface
          helpers\n\nCovers the port / interface / portchannel / breakout helpers
          in osism/tasks/conductor/sonic/config_generator.py:\r\n\r\n- _add_port_configurations:
          natural sort, master-port skip, admin_status, NetBox speed override (explicit
          vs derived, kbps\u2192Mbps), breakout speed (NetBox + brkout_mode fallback),
          index propagation from master, default port_data shape, valid_speeds branches,
          and the post-loop _add_missing_breakout_ports / _add_tagged_vlans_to_ports
          invocations.\r\n- _get_breakout_port_valid_speeds: known speeds and falsy
          inputs.\r\n- _calculate_breakout_port_lane: 4-lane and 8-lane breakouts,
          range syntax, single-lane master, unexpected counts, out-of-bounds and regex
          no-match fallbacks.\r\n- _add_missing_breakout_ports: skip-existing, NetBox
          speed without kbps\u2192Mbps conversion, brkout_mode fallback (incl. default),
          admin state, master index copy, valid_speeds override, alias kwargs.\r\n-
          _add_tagged_vlans_to_ports: numeric VLAN ID sort, untagged ignored, unknown
          NetBox name skipped, port absent from PORT silently skipped.\r\n- _add_interface_configurations:
          IPv4 base + suffixed entry, IPv6 link-local fallback, port-channel-member
          skip, disconnected skip, missing netbox_interfaces entry.\r\n- _get_transfer_role_ipv4_addresses:
          happy path, dedup per interface, IPv6 ignored, mgmt/virtual filtered, invalid
          prefix and IP swallowed, IP without assigned_object_id, unknown id, top-level
          exception.\r\n- _has_direct_ipv4_address, _has_transfer_role_ipv4, _is_untagged_vlan_member:
          happy path and empty-input early returns.\r\n- _add_portchannel_configuration:
          populated and empty cases.\r\n\r\nCloses #2222\r\n\r\nAI-assisted: Claude
          Code"
        change_url: https://github.com/osism/python-osism/pull/2246
        commit_id: b9387f31256b8732f776a43cef4918b5e05d1de4
        patchset: b9387f31256b8732f776a43cef4918b5e05d1de4
        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: '2246'
      change_message: "Add unit tests for SONiC config_generator port/interface helpers\n\nCovers
        the port / interface / portchannel / breakout helpers in osism/tasks/conductor/sonic/config_generator.py:\r\n\r\n-
        _add_port_configurations: natural sort, master-port skip, admin_status, NetBox
        speed override (explicit vs derived, kbps\u2192Mbps), breakout speed (NetBox
        + brkout_mode fallback), index propagation from master, default port_data
        shape, valid_speeds branches, and the post-loop _add_missing_breakout_ports
        / _add_tagged_vlans_to_ports invocations.\r\n- _get_breakout_port_valid_speeds:
        known speeds and falsy inputs.\r\n- _calculate_breakout_port_lane: 4-lane
        and 8-lane breakouts, range syntax, single-lane master, unexpected counts,
        out-of-bounds and regex no-match fallbacks.\r\n- _add_missing_breakout_ports:
        skip-existing, NetBox speed without kbps\u2192Mbps conversion, brkout_mode
        fallback (incl. default), admin state, master index copy, valid_speeds override,
        alias kwargs.\r\n- _add_tagged_vlans_to_ports: numeric VLAN ID sort, untagged
        ignored, unknown NetBox name skipped, port absent from PORT silently skipped.\r\n-
        _add_interface_configurations: IPv4 base + suffixed entry, IPv6 link-local
        fallback, port-channel-member skip, disconnected skip, missing netbox_interfaces
        entry.\r\n- _get_transfer_role_ipv4_addresses: happy path, dedup per interface,
        IPv6 ignored, mgmt/virtual filtered, invalid prefix and IP swallowed, IP without
        assigned_object_id, unknown id, top-level exception.\r\n- _has_direct_ipv4_address,
        _has_transfer_role_ipv4, _is_untagged_vlan_member: happy path and empty-input
        early returns.\r\n- _add_portchannel_configuration: populated and empty cases.\r\n\r\nCloses
        #2222\r\n\r\nAI-assisted: Claude Code"
      change_url: https://github.com/osism/python-osism/pull/2246
      child_jobs: []
      commit_id: b9387f31256b8732f776a43cef4918b5e05d1de4
      event_id: 9b9dfef0-46d4-11f1-81cb-200e4b610dbf
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/67a89adc2ed540e384435bd80711bec2/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/67a89adc2ed540e384435bd80711bec2/work/logs
        result_data_file: /var/lib/zuul/builds/67a89adc2ed540e384435bd80711bec2/work/results.json
        src_root: /var/lib/zuul/builds/67a89adc2ed540e384435bd80711bec2/work/src
        work_root: /var/lib/zuul/builds/67a89adc2ed540e384435bd80711bec2/work
      include_vars: []
      items:
      - branch: main
        change: '2246'
        change_message: "Add unit tests for SONiC config_generator port/interface
          helpers\n\nCovers the port / interface / portchannel / breakout helpers
          in osism/tasks/conductor/sonic/config_generator.py:\r\n\r\n- _add_port_configurations:
          natural sort, master-port skip, admin_status, NetBox speed override (explicit
          vs derived, kbps\u2192Mbps), breakout speed (NetBox + brkout_mode fallback),
          index propagation from master, default port_data shape, valid_speeds branches,
          and the post-loop _add_missing_breakout_ports / _add_tagged_vlans_to_ports
          invocations.\r\n- _get_breakout_port_valid_speeds: known speeds and falsy
          inputs.\r\n- _calculate_breakout_port_lane: 4-lane and 8-lane breakouts,
          range syntax, single-lane master, unexpected counts, out-of-bounds and regex
          no-match fallbacks.\r\n- _add_missing_breakout_ports: skip-existing, NetBox
          speed without kbps\u2192Mbps conversion, brkout_mode fallback (incl. default),
          admin state, master index copy, valid_speeds override, alias kwargs.\r\n-
          _add_tagged_vlans_to_ports: numeric VLAN ID sort, untagged ignored, unknown
          NetBox name skipped, port absent from PORT silently skipped.\r\n- _add_interface_configurations:
          IPv4 base + suffixed entry, IPv6 link-local fallback, port-channel-member
          skip, disconnected skip, missing netbox_interfaces entry.\r\n- _get_transfer_role_ipv4_addresses:
          happy path, dedup per interface, IPv6 ignored, mgmt/virtual filtered, invalid
          prefix and IP swallowed, IP without assigned_object_id, unknown id, top-level
          exception.\r\n- _has_direct_ipv4_address, _has_transfer_role_ipv4, _is_untagged_vlan_member:
          happy path and empty-input early returns.\r\n- _add_portchannel_configuration:
          populated and empty cases.\r\n\r\nCloses #2222\r\n\r\nAI-assisted: Claude
          Code"
        change_url: https://github.com/osism/python-osism/pull/2246
        commit_id: b9387f31256b8732f776a43cef4918b5e05d1de4
        patchset: b9387f31256b8732f776a43cef4918b5e05d1de4
        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: QWRkIHVuaXQgdGVzdHMgZm9yIFNPTmlDIGNvbmZpZ19nZW5lcmF0b3IgcG9ydC9pbnRlcmZhY2UgaGVscGVycwoKQ292ZXJzIHRoZSBwb3J0IC8gaW50ZXJmYWNlIC8gcG9ydGNoYW5uZWwgLyBicmVha291dCBoZWxwZXJzIGluIG9zaXNtL3Rhc2tzL2NvbmR1Y3Rvci9zb25pYy9jb25maWdfZ2VuZXJhdG9yLnB5Og0KDQotIF9hZGRfcG9ydF9jb25maWd1cmF0aW9uczogbmF0dXJhbCBzb3J0LCBtYXN0ZXItcG9ydCBza2lwLCBhZG1pbl9zdGF0dXMsIE5ldEJveCBzcGVlZCBvdmVycmlkZSAoZXhwbGljaXQgdnMgZGVyaXZlZCwga2Jwc+KGkk1icHMpLCBicmVha291dCBzcGVlZCAoTmV0Qm94ICsgYnJrb3V0X21vZGUgZmFsbGJhY2spLCBpbmRleCBwcm9wYWdhdGlvbiBmcm9tIG1hc3RlciwgZGVmYXVsdCBwb3J0X2RhdGEgc2hhcGUsIHZhbGlkX3NwZWVkcyBicmFuY2hlcywgYW5kIHRoZSBwb3N0LWxvb3AgX2FkZF9taXNzaW5nX2JyZWFrb3V0X3BvcnRzIC8gX2FkZF90YWdnZWRfdmxhbnNfdG9fcG9ydHMgaW52b2NhdGlvbnMuDQotIF9nZXRfYnJlYWtvdXRfcG9ydF92YWxpZF9zcGVlZHM6IGtub3duIHNwZWVkcyBhbmQgZmFsc3kgaW5wdXRzLg0KLSBfY2FsY3VsYXRlX2JyZWFrb3V0X3BvcnRfbGFuZTogNC1sYW5lIGFuZCA4LWxhbmUgYnJlYWtvdXRzLCByYW5nZSBzeW50YXgsIHNpbmdsZS1sYW5lIG1hc3RlciwgdW5leHBlY3RlZCBjb3VudHMsIG91dC1vZi1ib3VuZHMgYW5kIHJlZ2V4IG5vLW1hdGNoIGZhbGxiYWNrcy4NCi0gX2FkZF9taXNzaW5nX2JyZWFrb3V0X3BvcnRzOiBza2lwLWV4aXN0aW5nLCBOZXRCb3ggc3BlZWQgd2l0aG91dCBrYnBz4oaSTWJwcyBjb252ZXJzaW9uLCBicmtvdXRfbW9kZSBmYWxsYmFjayAoaW5jbC4gZGVmYXVsdCksIGFkbWluIHN0YXRlLCBtYXN0ZXIgaW5kZXggY29weSwgdmFsaWRfc3BlZWRzIG92ZXJyaWRlLCBhbGlhcyBrd2FyZ3MuDQotIF9hZGRfdGFnZ2VkX3ZsYW5zX3RvX3BvcnRzOiBudW1lcmljIFZMQU4gSUQgc29ydCwgdW50YWdnZWQgaWdub3JlZCwgdW5rbm93biBOZXRCb3ggbmFtZSBza2lwcGVkLCBwb3J0IGFic2VudCBmcm9tIFBPUlQgc2lsZW50bHkgc2tpcHBlZC4NCi0gX2FkZF9pbnRlcmZhY2VfY29uZmlndXJhdGlvbnM6IElQdjQgYmFzZSArIHN1ZmZpeGVkIGVudHJ5LCBJUHY2IGxpbmstbG9jYWwgZmFsbGJhY2ssIHBvcnQtY2hhbm5lbC1tZW1iZXIgc2tpcCwgZGlzY29ubmVjdGVkIHNraXAsIG1pc3NpbmcgbmV0Ym94X2ludGVyZmFjZXMgZW50cnkuDQotIF9nZXRfdHJhbnNmZXJfcm9sZV9pcHY0X2FkZHJlc3NlczogaGFwcHkgcGF0aCwgZGVkdXAgcGVyIGludGVyZmFjZSwgSVB2NiBpZ25vcmVkLCBtZ210L3ZpcnR1YWwgZmlsdGVyZWQsIGludmFsaWQgcHJlZml4IGFuZCBJUCBzd2FsbG93ZWQsIElQIHdpdGhvdXQgYXNzaWduZWRfb2JqZWN0X2lkLCB1bmtub3duIGlkLCB0b3AtbGV2ZWwgZXhjZXB0aW9uLg0KLSBfaGFzX2RpcmVjdF9pcHY0X2FkZHJlc3MsIF9oYXNfdHJhbnNmZXJfcm9sZV9pcHY0LCBfaXNfdW50YWdnZWRfdmxhbl9tZW1iZXI6IGhhcHB5IHBhdGggYW5kIGVtcHR5LWlucHV0IGVhcmx5IHJldHVybnMuDQotIF9hZGRfcG9ydGNoYW5uZWxfY29uZmlndXJhdGlvbjogcG9wdWxhdGVkIGFuZCBlbXB0eSBjYXNlcy4NCg0KQ2xvc2VzICMyMjIyDQoNCkFJLWFzc2lzdGVkOiBDbGF1ZGUgQ29kZQ==
      patchset: b9387f31256b8732f776a43cef4918b5e05d1de4
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 7fe648e065ead713980d61fa015a03a26ed6c629
          trusted/project_1/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 397240f42127868e42e86e6aeb120c2cb092d117
          untrusted/project_0/github.com/osism/python-osism:
            canonical_name: github.com/osism/python-osism
            checkout: main
            commit: 9089764f5003f79a34e44db2ae5408f81eefc6b3
          untrusted/project_1/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 7fe648e065ead713980d61fa015a03a26ed6c629
          untrusted/project_2/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 397240f42127868e42e86e6aeb120c2cb092d117
        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: 9089764f5003f79a34e44db2ae5408f81eefc6b3
          name: osism/python-osism
          required: false
          short_name: python-osism
          src_dir: src/github.com/osism/python-osism
      ref: refs/pull/2246/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
