all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fe69:89ac
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: fb4d2ba5-b25a-4530-8568-9d09de350231
        host_id: 25afcdcd4b24cc9d1766f11f81549380a3029030a455889bb61ec093
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fe69:89ac
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.7.63
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.201
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fe69:89ac
        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/python-osism/.zuul.yaml@main#138>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: 5aaf9993b57942a5815361929ffa1b86
      build_refs:
      - branch: main
        change: '2328'
        change_message: "sonic: Add support for BGP IPv6 neighbors on VLAN\n\n## Summary\n\nThe
          VLAN BGP neighbor generation in `_add_bgp_configurations` only looked up
          the **IPv4** address of the connected peer interface, so IPv6 peers never
          received a `BGP_NEIGHBOR` entry \u2014 the case described in #2312.\n\nThis
          change adds IPv6 support for BGP neighbors on VLAN interfaces (SVIs).\n\n##
          Changes\n\n- **`connections.py`**: Factored the existing IPv4 lookup into
          a shared, IP-version-parameterized helper `_get_connected_interface_ip_address(...,
          ip_version)` (covers both direct addresses and FHRP VIPs). Added two thin
          wrappers:\n  - `get_connected_interface_ipv4_address` (behaviour unchanged)\n
          \ - `get_connected_interface_ipv6_address` (new)\n  - plus `_address_matches_ip_version`
          for the family check (`.` vs `:`).\n- **`config_generator.py`**: The VLAN
          section now resolves both the IPv4 and IPv6 peer address. A dual-stack peer
          yields one numbered neighbor per address family, each with the matching
          `BGP_NEIGHBOR_AF` (`ipv4_unicast` / `ipv6_unicast`). Per-address dedup is
          preserved; `v6only=false` is set for both families in the default VRF (numbered
          global addresses, consistent with the prior IPv4 behaviour).\n\n## Tests\n\n-
          Extended the `patch_bgp` fixture with `peer_ipv6`.\n- New cases: IPv6-only
          peer, dual-stack (both neighbors created), non-default VRF (no `v6only`),
          and IPv6 dedup.\n- Direct unit tests in `test_connections.py` for the version
          detection and the IPv6 lookup (direct + FHRP VIP).\n\nCloses #2312\n\n\U0001F916
          Generated with [Claude Code](https://claude.com/claude-code)"
        change_url: https://github.com/osism/python-osism/pull/2328
        commit_id: b7e59e324368f856a24b655130a98cf69ce1085b
        patchset: b7e59e324368f856a24b655130a98cf69ce1085b
        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: ac6eb3a9438f48a6830d54839f7b455e
      buildset_refs:
      - branch: main
        change: '2328'
        change_message: "sonic: Add support for BGP IPv6 neighbors on VLAN\n\n## Summary\n\nThe
          VLAN BGP neighbor generation in `_add_bgp_configurations` only looked up
          the **IPv4** address of the connected peer interface, so IPv6 peers never
          received a `BGP_NEIGHBOR` entry \u2014 the case described in #2312.\n\nThis
          change adds IPv6 support for BGP neighbors on VLAN interfaces (SVIs).\n\n##
          Changes\n\n- **`connections.py`**: Factored the existing IPv4 lookup into
          a shared, IP-version-parameterized helper `_get_connected_interface_ip_address(...,
          ip_version)` (covers both direct addresses and FHRP VIPs). Added two thin
          wrappers:\n  - `get_connected_interface_ipv4_address` (behaviour unchanged)\n
          \ - `get_connected_interface_ipv6_address` (new)\n  - plus `_address_matches_ip_version`
          for the family check (`.` vs `:`).\n- **`config_generator.py`**: The VLAN
          section now resolves both the IPv4 and IPv6 peer address. A dual-stack peer
          yields one numbered neighbor per address family, each with the matching
          `BGP_NEIGHBOR_AF` (`ipv4_unicast` / `ipv6_unicast`). Per-address dedup is
          preserved; `v6only=false` is set for both families in the default VRF (numbered
          global addresses, consistent with the prior IPv4 behaviour).\n\n## Tests\n\n-
          Extended the `patch_bgp` fixture with `peer_ipv6`.\n- New cases: IPv6-only
          peer, dual-stack (both neighbors created), non-default VRF (no `v6only`),
          and IPv6 dedup.\n- Direct unit tests in `test_connections.py` for the version
          detection and the IPv6 lookup (direct + FHRP VIP).\n\nCloses #2312\n\n\U0001F916
          Generated with [Claude Code](https://claude.com/claude-code)"
        change_url: https://github.com/osism/python-osism/pull/2328
        commit_id: b7e59e324368f856a24b655130a98cf69ce1085b
        patchset: b7e59e324368f856a24b655130a98cf69ce1085b
        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: '2328'
      change_message: "sonic: Add support for BGP IPv6 neighbors on VLAN\n\n## Summary\n\nThe
        VLAN BGP neighbor generation in `_add_bgp_configurations` only looked up the
        **IPv4** address of the connected peer interface, so IPv6 peers never received
        a `BGP_NEIGHBOR` entry \u2014 the case described in #2312.\n\nThis change
        adds IPv6 support for BGP neighbors on VLAN interfaces (SVIs).\n\n## Changes\n\n-
        **`connections.py`**: Factored the existing IPv4 lookup into a shared, IP-version-parameterized
        helper `_get_connected_interface_ip_address(..., ip_version)` (covers both
        direct addresses and FHRP VIPs). Added two thin wrappers:\n  - `get_connected_interface_ipv4_address`
        (behaviour unchanged)\n  - `get_connected_interface_ipv6_address` (new)\n
        \ - plus `_address_matches_ip_version` for the family check (`.` vs `:`).\n-
        **`config_generator.py`**: The VLAN section now resolves both the IPv4 and
        IPv6 peer address. A dual-stack peer yields one numbered neighbor per address
        family, each with the matching `BGP_NEIGHBOR_AF` (`ipv4_unicast` / `ipv6_unicast`).
        Per-address dedup is preserved; `v6only=false` is set for both families in
        the default VRF (numbered global addresses, consistent with the prior IPv4
        behaviour).\n\n## Tests\n\n- Extended the `patch_bgp` fixture with `peer_ipv6`.\n-
        New cases: IPv6-only peer, dual-stack (both neighbors created), non-default
        VRF (no `v6only`), and IPv6 dedup.\n- Direct unit tests in `test_connections.py`
        for the version detection and the IPv6 lookup (direct + FHRP VIP).\n\nCloses
        #2312\n\n\U0001F916 Generated with [Claude Code](https://claude.com/claude-code)"
      change_url: https://github.com/osism/python-osism/pull/2328
      child_jobs: []
      commit_id: b7e59e324368f856a24b655130a98cf69ce1085b
      event_id: bec1f750-63d6-11f1-90a3-8353f80bb786
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/5aaf9993b57942a5815361929ffa1b86/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/5aaf9993b57942a5815361929ffa1b86/work/logs
        result_data_file: /var/lib/zuul/builds/5aaf9993b57942a5815361929ffa1b86/work/results.json
        src_root: /var/lib/zuul/builds/5aaf9993b57942a5815361929ffa1b86/work/src
        work_root: /var/lib/zuul/builds/5aaf9993b57942a5815361929ffa1b86/work
      include_vars: []
      items:
      - branch: main
        change: '2328'
        change_message: "sonic: Add support for BGP IPv6 neighbors on VLAN\n\n## Summary\n\nThe
          VLAN BGP neighbor generation in `_add_bgp_configurations` only looked up
          the **IPv4** address of the connected peer interface, so IPv6 peers never
          received a `BGP_NEIGHBOR` entry \u2014 the case described in #2312.\n\nThis
          change adds IPv6 support for BGP neighbors on VLAN interfaces (SVIs).\n\n##
          Changes\n\n- **`connections.py`**: Factored the existing IPv4 lookup into
          a shared, IP-version-parameterized helper `_get_connected_interface_ip_address(...,
          ip_version)` (covers both direct addresses and FHRP VIPs). Added two thin
          wrappers:\n  - `get_connected_interface_ipv4_address` (behaviour unchanged)\n
          \ - `get_connected_interface_ipv6_address` (new)\n  - plus `_address_matches_ip_version`
          for the family check (`.` vs `:`).\n- **`config_generator.py`**: The VLAN
          section now resolves both the IPv4 and IPv6 peer address. A dual-stack peer
          yields one numbered neighbor per address family, each with the matching
          `BGP_NEIGHBOR_AF` (`ipv4_unicast` / `ipv6_unicast`). Per-address dedup is
          preserved; `v6only=false` is set for both families in the default VRF (numbered
          global addresses, consistent with the prior IPv4 behaviour).\n\n## Tests\n\n-
          Extended the `patch_bgp` fixture with `peer_ipv6`.\n- New cases: IPv6-only
          peer, dual-stack (both neighbors created), non-default VRF (no `v6only`),
          and IPv6 dedup.\n- Direct unit tests in `test_connections.py` for the version
          detection and the IPv6 lookup (direct + FHRP VIP).\n\nCloses #2312\n\n\U0001F916
          Generated with [Claude Code](https://claude.com/claude-code)"
        change_url: https://github.com/osism/python-osism/pull/2328
        commit_id: b7e59e324368f856a24b655130a98cf69ce1085b
        patchset: b7e59e324368f856a24b655130a98cf69ce1085b
        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: flake8
      jobtags: []
      max_attempts: 3
      message: c29uaWM6IEFkZCBzdXBwb3J0IGZvciBCR1AgSVB2NiBuZWlnaGJvcnMgb24gVkxBTgoKIyMgU3VtbWFyeQoKVGhlIFZMQU4gQkdQIG5laWdoYm9yIGdlbmVyYXRpb24gaW4gYF9hZGRfYmdwX2NvbmZpZ3VyYXRpb25zYCBvbmx5IGxvb2tlZCB1cCB0aGUgKipJUHY0KiogYWRkcmVzcyBvZiB0aGUgY29ubmVjdGVkIHBlZXIgaW50ZXJmYWNlLCBzbyBJUHY2IHBlZXJzIG5ldmVyIHJlY2VpdmVkIGEgYEJHUF9ORUlHSEJPUmAgZW50cnkg4oCUIHRoZSBjYXNlIGRlc2NyaWJlZCBpbiAjMjMxMi4KClRoaXMgY2hhbmdlIGFkZHMgSVB2NiBzdXBwb3J0IGZvciBCR1AgbmVpZ2hib3JzIG9uIFZMQU4gaW50ZXJmYWNlcyAoU1ZJcykuCgojIyBDaGFuZ2VzCgotICoqYGNvbm5lY3Rpb25zLnB5YCoqOiBGYWN0b3JlZCB0aGUgZXhpc3RpbmcgSVB2NCBsb29rdXAgaW50byBhIHNoYXJlZCwgSVAtdmVyc2lvbi1wYXJhbWV0ZXJpemVkIGhlbHBlciBgX2dldF9jb25uZWN0ZWRfaW50ZXJmYWNlX2lwX2FkZHJlc3MoLi4uLCBpcF92ZXJzaW9uKWAgKGNvdmVycyBib3RoIGRpcmVjdCBhZGRyZXNzZXMgYW5kIEZIUlAgVklQcykuIEFkZGVkIHR3byB0aGluIHdyYXBwZXJzOgogIC0gYGdldF9jb25uZWN0ZWRfaW50ZXJmYWNlX2lwdjRfYWRkcmVzc2AgKGJlaGF2aW91ciB1bmNoYW5nZWQpCiAgLSBgZ2V0X2Nvbm5lY3RlZF9pbnRlcmZhY2VfaXB2Nl9hZGRyZXNzYCAobmV3KQogIC0gcGx1cyBgX2FkZHJlc3NfbWF0Y2hlc19pcF92ZXJzaW9uYCBmb3IgdGhlIGZhbWlseSBjaGVjayAoYC5gIHZzIGA6YCkuCi0gKipgY29uZmlnX2dlbmVyYXRvci5weWAqKjogVGhlIFZMQU4gc2VjdGlvbiBub3cgcmVzb2x2ZXMgYm90aCB0aGUgSVB2NCBhbmQgSVB2NiBwZWVyIGFkZHJlc3MuIEEgZHVhbC1zdGFjayBwZWVyIHlpZWxkcyBvbmUgbnVtYmVyZWQgbmVpZ2hib3IgcGVyIGFkZHJlc3MgZmFtaWx5LCBlYWNoIHdpdGggdGhlIG1hdGNoaW5nIGBCR1BfTkVJR0hCT1JfQUZgIChgaXB2NF91bmljYXN0YCAvIGBpcHY2X3VuaWNhc3RgKS4gUGVyLWFkZHJlc3MgZGVkdXAgaXMgcHJlc2VydmVkOyBgdjZvbmx5PWZhbHNlYCBpcyBzZXQgZm9yIGJvdGggZmFtaWxpZXMgaW4gdGhlIGRlZmF1bHQgVlJGIChudW1iZXJlZCBnbG9iYWwgYWRkcmVzc2VzLCBjb25zaXN0ZW50IHdpdGggdGhlIHByaW9yIElQdjQgYmVoYXZpb3VyKS4KCiMjIFRlc3RzCgotIEV4dGVuZGVkIHRoZSBgcGF0Y2hfYmdwYCBmaXh0dXJlIHdpdGggYHBlZXJfaXB2NmAuCi0gTmV3IGNhc2VzOiBJUHY2LW9ubHkgcGVlciwgZHVhbC1zdGFjayAoYm90aCBuZWlnaGJvcnMgY3JlYXRlZCksIG5vbi1kZWZhdWx0IFZSRiAobm8gYHY2b25seWApLCBhbmQgSVB2NiBkZWR1cC4KLSBEaXJlY3QgdW5pdCB0ZXN0cyBpbiBgdGVzdF9jb25uZWN0aW9ucy5weWAgZm9yIHRoZSB2ZXJzaW9uIGRldGVjdGlvbiBhbmQgdGhlIElQdjYgbG9va3VwIChkaXJlY3QgKyBGSFJQIFZJUCkuCgpDbG9zZXMgIzIzMTIKCvCfpJYgR2VuZXJhdGVkIHdpdGggW0NsYXVkZSBDb2RlXShodHRwczovL2NsYXVkZS5jb20vY2xhdWRlLWNvZGUp
      patchset: b7e59e324368f856a24b655130a98cf69ce1085b
      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/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/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: 8f25b4047cdd10d81dd51fb9ec6269c06012be5b
          name: osism/python-osism
          required: false
          short_name: python-osism
          src_dir: src/github.com/osism/python-osism
      ref: refs/pull/2328/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
