Skip to content

[bgp] Optionally configure router-0 as a BGP-EVPN VTEP - #4125

Open
eduolivares wants to merge 1 commit into
openstack-k8s-operators:mainfrom
eduolivares:feature/bgp-router-evpn-vtep
Open

[bgp] Optionally configure router-0 as a BGP-EVPN VTEP#4125
eduolivares wants to merge 1 commit into
openstack-k8s-operators:mainfrom
eduolivares:feature/bgp-router-evpn-vtep

Conversation

@eduolivares

@eduolivares eduolivares commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

The BGP-EVPN dataplane test needs the DC router (router-0) to reach tenant VM IPs advertised via BGP-EVPN Type-5 routes. Until now the router only ran advertise-all-vni, so the Type-5 routes propagated through the fabric but router-0 was not a VTEP and could not decapsulate or forward tenant traffic, leaving the private IPs unreachable.

Make router-0 a real EVPN VTEP, gated behind router_evpn_vtep (default false, so existing plain-BGP and non-EVPN jobs are unchanged):

  • router-frr.conf.j2: add the L3VNI VRF (vrf vrf-l3vniN/vni N), import vrf into the default instance so ingress traffic on the default VRF can resolve tenant routes, and a second router bgp <asn> vrf vrf-l3vniN instance that imports the VTEP IP from the default VRF and advertises only that /32 into EVPN. The route-target matches the EDPM/OVN side (<edpm_asn>:<vni>).
  • prepare-bgp-spines-leaves.yaml: create the VTEP netdevs (vrf-l3vniN -> br-l3vniN -> vx-0-N) before FRR starts so zebra can program the L3VNI. The VXLAN dstport is 4789 to match the OVN dataplane on EDPM nodes; the kernel FRR default port is advertisement-only and silently blackholes decapsulated packets.
  • Add an idempotent SNAT rule that rewrites tenant-bound traffic to the VTEP IP, so the VM replies to an address router-0 advertises into EVPN and no worker subnet needs to be leaked into the tenant VRF. The destination is the whole tempest project_network_cidr (router_tenant_cidr, default 10.100.0.0/16) because tempest carves /28 subnets sequentially out of it -- a single /24 route flakes once the allocator advances past 10.100.0.255.

The worker-3 node route and the bgpnet-worker-3 NAD route (10.100.0.0/16 -> 100.64.10.1) live in the architecture repo and are handled by a separate change.

Related-ticket: OSPRH-34785

@openshift-ci

openshift-ci Bot commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign lmiccini for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Optionally configure router-0 as a BGP-EVPN VTEP

✨ Enhancement ⚙️ Configuration changes 🕐 20-40 Minutes

Grey Divider

AI Description

• Optionally configures router-0 as an IPv4 EVPN VTEP for Type-5 tenant reachability.
• Builds L3VNI networking before FRR starts and aligns VXLAN with OVN port 4789.
• SNATs tenant-bound traffic to the advertised VTEP address for reliable return routing.
Diagram

graph TD
  SRC["Worker Traffic"] --> DEF["Default VRF"] --> NAT["VTEP SNAT"] --> L3["L3VNI VRF"] --> VX["VXLAN 4789"] --> OVN["EDPM OVN"] --> VM["Tenant VM"]
  FRR["FRR EVPN"] -->|"programs routes"| L3
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Leak the worker subnet into the tenant VRF
  • ➕ Preserves the original worker source address.
  • ➕ Avoids SNAT state and packet rewriting. review
  • ➖ Requires advertising or leaking additional infrastructure routes into tenant routing.
  • ➖ Couples tenant reachability to worker subnet topology and expands routing exposure.
2. Persist VTEP netdevs through NetworkManager
  • ➕ Survives router reboots and service restarts.
  • ➕ Provides declarative lifecycle management for VRF, bridge, and VXLAN devices.
  • ➖ Adds configuration complexity for an ephemeral test router.
  • ➖ Offers little value while router-0 is guaranteed not to reboot during the job.

Recommendation: Keep the gated, transient VTEP plus targeted SNAT approach. It provides the required Type-5 dataplane reachability without changing existing jobs or leaking worker infrastructure routes into tenant VRFs; persistent netdev management is unnecessary for the test router lifecycle.

Files changed (2) +90 / -0

Enhancement (1) +57 / -0
prepare-bgp-spines-leaves.yamlProvision router VTEP netdevs and tenant SNAT +57/-0

Provision router VTEP netdevs and tenant SNAT

• Conditionally creates the L3VNI VRF, bridge, and VXLAN device before FRR starts, using OVN-compatible destination port 4789. Adds an idempotent IPv4 SNAT rule for the complete tenant project CIDR so replies return through the advertised VTEP address.

playbooks/bgp/prepare-bgp-spines-leaves.yaml

Other (1) +33 / -0
router-frr.conf.j2Configure FRR L3VNI and selective VTEP advertisement +33/-0

Configure FRR L3VNI and selective VTEP advertisement

• Conditionally defines the L3VNI VRF and imports its tenant routes into the default BGP instance. Adds a VRF-specific BGP instance with matching EDPM route targets and filters EVPN advertisement to the VTEP /32.

playbooks/bgp/templates/router-frr.conf.j2

@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (4) 📘 Rule violations (1) 📜 Skill insights (0)

Grey Divider


Action required

1. VTEP setup lacks diagnostics 📘 Rule violation ◔ Observability
Description
The VTEP task performs multiple dependent VRF, bridge, and VXLAN operations in one shell invocation
without block/rescue/always failure diagnostics. A partial failure is difficult to isolate and
can leave router networking incompletely configured.
Code

playbooks/bgp/prepare-bgp-spines-leaves.yaml[R303-306]

+          ip link show vrf-l3vni{{ _vni }} \
+            || ip link add vrf-l3vni{{ _vni }} type vrf table {{ _table }}
+          ip link set vrf-l3vni{{ _vni }} up
+          ip link show br-l3vni{{ _vni }} \
Evidence
PR Compliance ID 5 requires complex task sequences to use block/rescue/always, dump relevant
state, and fail explicitly; ID 8 requires smaller tasks for debuggability. The added shell task
creates and configures the VRF, bridge, and VXLAN netdevs through numerous commands without either
structure.

AGENTS.md: Use block/rescue/always With Failure Diagnostics for Complex Ansible Task Sequences
AGENTS.md: Prefer Smaller, Single-Purpose Ansible Tasks to Improve Debuggability
playbooks/bgp/prepare-bgp-spines-leaves.yaml[291-316]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The EVPN VTEP setup combines several dependent netdev operations in one shell task and provides no structured failure diagnostics.

## Issue Context
Use smaller, single-purpose tasks inside `block`/`rescue`/`always`. The `rescue` section should capture relevant link, bridge, VRF, and VXLAN state before stopping execution with `ansible.builtin.fail`.

## Fix Focus Areas
- playbooks/bgp/prepare-bgp-spines-leaves.yaml[291-316]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. VTEP address remains unassigned 🐞 Bug ≡ Correctness
Description
When router_evpn_vtep_ip differs from router_loopback_ip, the playbook uses it for VXLAN, SNAT,
and EVPN advertisement without assigning it to any local interface. The /32 is therefore absent
from the default RIB, so it cannot be imported and advertised for the required return path.
Code

playbooks/bgp/prepare-bgp-spines-leaves.yaml[R297-299]

+        _vni: "{{ router_evpn_l3vni | default(1) }}"
+        _vtep_ip: "{{ router_evpn_vtep_ip | default(router_loopback_ip) }}"
+        _table: "{{ 1000 + (router_evpn_l3vni | default(1) | int) }}"
Evidence
The playbook assigns only router_loopback_ip/32 to lo, while the new netdev and SNAT tasks
consume the independently configurable VTEP address. FRR imports from the default VRF and filters
advertisement to exactly that VTEP /32, so a distinct unassigned address produces no matching
route to advertise.

playbooks/bgp/prepare-bgp-spines-leaves.yaml[275-283]
playbooks/bgp/prepare-bgp-spines-leaves.yaml[297-314]
playbooks/bgp/prepare-bgp-spines-leaves.yaml[376-385]
playbooks/bgp/templates/router-frr.conf.j2[73-90]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
A custom `router_evpn_vtep_ip` is used throughout the dataplane and FRR configuration but is never assigned locally, preventing its `/32` from being imported and advertised.

## Issue Context
Only `router_loopback_ip` is currently assigned to `lo`. Resolve and validate the effective VTEP address, then ensure its `/32` exists locally before creating the VXLAN device or starting FRR.

## Fix Focus Areas
- playbooks/bgp/prepare-bgp-spines-leaves.yaml[275-314]
- playbooks/bgp/templates/router-frr.conf.j2[73-90]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

3. IPv6 renders unusable VTEP 🐞 Bug ≡ Correctness
Description
For an IPv6 run, the playbook skips both EVPN netdev creation and SNAT, but the template still emits
the L3VNI VRF and IPv4 /32 EVPN configuration whenever router_evpn_vtep is true. FRR is
consequently restarted with no corresponding Linux VTEP dataplane, leaving the enabled feature
nonfunctional.
Code

playbooks/bgp/templates/router-frr.conf.j2[R16-19]

+{% if router_evpn_vtep | default(false) %}
+vrf vrf-l3vni{{ router_evpn_l3vni | default(1) }}
+  vni {{ router_evpn_l3vni | default(1) }}
+exit-vrf
Evidence
Both tasks responsible for the Linux dataplane explicitly require _ip_version == 4, while all
three template blocks test only router_evpn_vtep. The template additionally forces the VTEP
address into an IPv4 prefix list with a /32.

playbooks/bgp/prepare-bgp-spines-leaves.yaml[291-314]
playbooks/bgp/prepare-bgp-spines-leaves.yaml[371-385]
playbooks/bgp/templates/router-frr.conf.j2[16-19]
playbooks/bgp/templates/router-frr.conf.j2[69-90]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
EVPN dataplane tasks are IPv4-only, but FRR EVPN configuration is rendered for IPv6 runs as well.

## Issue Context
Either guard every template EVPN block with the same IPv4 condition or fail early with a clear assertion when EVPN VTEP mode is requested for IPv6.

## Fix Focus Areas
- playbooks/bgp/prepare-bgp-spines-leaves.yaml[291-314]
- playbooks/bgp/prepare-bgp-spines-leaves.yaml[371-385]
- playbooks/bgp/templates/router-frr.conf.j2[16-90]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


4. Existing VXLAN stays misconfigured 🐞 Bug ☼ Reliability
Description
The existence check skips VXLAN creation without reconciling its local address, VNI, destination
port, or learning mode. A rerun after changing the VTEP address—or encountering a same-named device
using the incompatible default port—retains the stale dataplane while FRR advertises the new
configuration.
Code

playbooks/bgp/prepare-bgp-spines-leaves.yaml[R310-312]

+          ip link show vx-0-{{ _vni }} \
+            || ip link add vx-0-{{ _vni }} type vxlan id {{ _vni }} \
+                 local {{ _vtep_ip }} dstport 4789 nolearning
Evidence
The VTEP address and dstport 4789 occur only in the right-hand side of `ip link show ... || ip
link add`; when the device exists, the task merely sets its master and brings it up. FRR
independently renders the currently configured VTEP address, allowing control-plane and kernel state
to diverge.

playbooks/bgp/prepare-bgp-spines-leaves.yaml[300-314]
playbooks/bgp/templates/router-frr.conf.j2[73-87]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Existing `vx-0-N` devices bypass configuration of the VTEP address and required UDP port, making playbook reruns non-convergent.

## Issue Context
Ensure existing devices have the requested VNI, local address, `dstport 4789`, and learning mode. Recreate the device safely when immutable attributes differ.

## Fix Focus Areas
- playbooks/bgp/prepare-bgp-spines-leaves.yaml[300-314]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


5. Obsolete SNAT rule wins 🐞 Bug ☼ Reliability
Description
If the configured VTEP address changes, iptables -C misses the new rule and appends it without
removing the old rule. The earlier rule still matches the same tenant traffic first and SNATs it to
the obsolete address, whose /32 is no longer advertised by the rendered FRR configuration.
Code

playbooks/bgp/prepare-bgp-spines-leaves.yaml[R382-385]

+              iptables -t nat -C POSTROUTING -d {{ _tenant_cidr }}
+              -o br-l3vni{{ _vni }} -j SNAT --to-source {{ _vtep_ip }}
+              || iptables -t nat -A POSTROUTING -d {{ _tenant_cidr }}
+              -o br-l3vni{{ _vni }} -j SNAT --to-source {{ _vtep_ip }}
Evidence
The rule check includes the current VTEP address and CIDR, but the failure path only appends; it
never removes prior variants. Since iptables evaluates POSTROUTING in order and the template
advertises only the current VTEP /32, an older matching rule breaks the return route.

playbooks/bgp/prepare-bgp-spines-leaves.yaml[371-386]
playbooks/bgp/templates/router-frr.conf.j2[81-90]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The check-or-append implementation leaves obsolete SNAT rules ahead of the currently configured rule after variable changes.

## Issue Context
Manage a uniquely identifiable rule or dedicated chain and replace/remove stale entries so exactly one current EVPN SNAT rule applies after every rerun.

## Fix Focus Areas
- playbooks/bgp/prepare-bgp-spines-leaves.yaml[371-386]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Context sources
⚠️ Tickets: not configured — ticket URL found in PR but could not be fetched — check ticket provider credentials

Grey Divider

Tip of the day
💡 Did you know, you can copy the agent prompt from any finding and feed it to your IDE agent

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment on lines +303 to +306
ip link show vrf-l3vni{{ _vni }} \
|| ip link add vrf-l3vni{{ _vni }} type vrf table {{ _table }}
ip link set vrf-l3vni{{ _vni }} up
ip link show br-l3vni{{ _vni }} \

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. Vtep setup lacks diagnostics 📘 Rule violation ◔ Observability

The VTEP task performs multiple dependent VRF, bridge, and VXLAN operations in one shell invocation
without block/rescue/always failure diagnostics. A partial failure is difficult to isolate and
can leave router networking incompletely configured.
Agent Prompt
## Issue description
The EVPN VTEP setup combines several dependent netdev operations in one shell task and provides no structured failure diagnostics.

## Issue Context
Use smaller, single-purpose tasks inside `block`/`rescue`/`always`. The `rescue` section should capture relevant link, bridge, VRF, and VXLAN state before stopping execution with `ansible.builtin.fail`.

## Fix Focus Areas
- playbooks/bgp/prepare-bgp-spines-leaves.yaml[291-316]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +297 to +299
_vni: "{{ router_evpn_l3vni | default(1) }}"
_vtep_ip: "{{ router_evpn_vtep_ip | default(router_loopback_ip) }}"
_table: "{{ 1000 + (router_evpn_l3vni | default(1) | int) }}"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

2. Vtep address remains unassigned 🐞 Bug ≡ Correctness

When router_evpn_vtep_ip differs from router_loopback_ip, the playbook uses it for VXLAN, SNAT,
and EVPN advertisement without assigning it to any local interface. The /32 is therefore absent
from the default RIB, so it cannot be imported and advertised for the required return path.
Agent Prompt
## Issue description
A custom `router_evpn_vtep_ip` is used throughout the dataplane and FRR configuration but is never assigned locally, preventing its `/32` from being imported and advertised.

## Issue Context
Only `router_loopback_ip` is currently assigned to `lo`. Resolve and validate the effective VTEP address, then ensure its `/32` exists locally before creating the VXLAN device or starting FRR.

## Fix Focus Areas
- playbooks/bgp/prepare-bgp-spines-leaves.yaml[275-314]
- playbooks/bgp/templates/router-frr.conf.j2[73-90]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +16 to +19
{% if router_evpn_vtep | default(false) %}
vrf vrf-l3vni{{ router_evpn_l3vni | default(1) }}
vni {{ router_evpn_l3vni | default(1) }}
exit-vrf

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remediation recommended

3. Ipv6 renders unusable vtep 🐞 Bug ≡ Correctness

For an IPv6 run, the playbook skips both EVPN netdev creation and SNAT, but the template still emits
the L3VNI VRF and IPv4 /32 EVPN configuration whenever router_evpn_vtep is true. FRR is
consequently restarted with no corresponding Linux VTEP dataplane, leaving the enabled feature
nonfunctional.
Agent Prompt
## Issue description
EVPN dataplane tasks are IPv4-only, but FRR EVPN configuration is rendered for IPv6 runs as well.

## Issue Context
Either guard every template EVPN block with the same IPv4 condition or fail early with a clear assertion when EVPN VTEP mode is requested for IPv6.

## Fix Focus Areas
- playbooks/bgp/prepare-bgp-spines-leaves.yaml[291-314]
- playbooks/bgp/prepare-bgp-spines-leaves.yaml[371-385]
- playbooks/bgp/templates/router-frr.conf.j2[16-90]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +310 to +312
ip link show vx-0-{{ _vni }} \
|| ip link add vx-0-{{ _vni }} type vxlan id {{ _vni }} \
local {{ _vtep_ip }} dstport 4789 nolearning

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remediation recommended

4. Existing vxlan stays misconfigured 🐞 Bug ☼ Reliability

The existence check skips VXLAN creation without reconciling its local address, VNI, destination
port, or learning mode. A rerun after changing the VTEP address—or encountering a same-named device
using the incompatible default port—retains the stale dataplane while FRR advertises the new
configuration.
Agent Prompt
## Issue description
Existing `vx-0-N` devices bypass configuration of the VTEP address and required UDP port, making playbook reruns non-convergent.

## Issue Context
Ensure existing devices have the requested VNI, local address, `dstport 4789`, and learning mode. Recreate the device safely when immutable attributes differ.

## Fix Focus Areas
- playbooks/bgp/prepare-bgp-spines-leaves.yaml[300-314]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +382 to +385
iptables -t nat -C POSTROUTING -d {{ _tenant_cidr }}
-o br-l3vni{{ _vni }} -j SNAT --to-source {{ _vtep_ip }}
|| iptables -t nat -A POSTROUTING -d {{ _tenant_cidr }}
-o br-l3vni{{ _vni }} -j SNAT --to-source {{ _vtep_ip }}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remediation recommended

5. Obsolete snat rule wins 🐞 Bug ☼ Reliability

If the configured VTEP address changes, iptables -C misses the new rule and appends it without
removing the old rule. The earlier rule still matches the same tenant traffic first and SNATs it to
the obsolete address, whose /32 is no longer advertised by the rendered FRR configuration.
Agent Prompt
## Issue description
The check-or-append implementation leaves obsolete SNAT rules ahead of the currently configured rule after variable changes.

## Issue Context
Manage a uniquely identifiable rule or dedicated chain and replace/remove stale entries so exactly one current EVPN SNAT rule applies after every rerun.

## Fix Focus Areas
- playbooks/bgp/prepare-bgp-spines-leaves.yaml[371-386]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@centosinfra-prod-github-app

Copy link
Copy Markdown

Build failed (check pipeline). Post recheck (without leading slash)
to rerun all jobs. Make sure the failure cause has been resolved before
you rerun jobs.

https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/b5edfc2afc1743e9b104bb905c7028d4

✔️ openstack-k8s-operators-content-provider SUCCESS in 1h 58m 56s
✔️ podified-multinode-edpm-deployment-crc SUCCESS in 1h 41m 24s
cifmw-crc-podified-edpm-baremetal NODE_FAILURE Node(set) request 099-0000176356 failed in 0s
cifmw-crc-podified-edpm-baremetal-minor-update NODE_FAILURE Node(set) request 099-0000176357 failed in 0s
✔️ openstack-k8s-operators-content-provider-bootc SUCCESS in 45m 38s
cifmw-crc-podified-edpm-baremetal-bootc NODE_FAILURE Node(set) request 099-0000176445 failed in 0s
✔️ noop SUCCESS in 0s
✔️ cifmw-pod-ansible-test SUCCESS in 8m 45s
✔️ cifmw-pod-pre-commit SUCCESS in 8m 43s

The BGP-EVPN dataplane test needs the DC router (router-0) to reach
tenant VM IPs advertised via BGP-EVPN Type-5 routes. Until now the
router only ran `advertise-all-vni`, so the Type-5 routes propagated
through the fabric but router-0 was not a VTEP and could not decapsulate
or forward tenant traffic, leaving the private IPs unreachable.

Make router-0 a real EVPN VTEP, gated behind `router_evpn_vtep`
(default `false`, so existing plain-BGP and non-EVPN jobs are
unchanged):

- `router-frr.conf.j2`: add the L3VNI VRF (`vrf vrf-l3vniN`/`vni N`),
  `import vrf` into the default instance so ingress traffic on the
  default VRF can resolve tenant routes, and a second
  `router bgp <asn> vrf vrf-l3vniN` instance that imports the VTEP IP
  from the default VRF and advertises only that `/32` into EVPN. The
  `route-target` matches the EDPM/OVN side (`<edpm_asn>:<vni>`).
- `prepare-bgp-spines-leaves.yaml`: create the VTEP netdevs
  (`vrf-l3vniN` -> `br-l3vniN` -> `vx-0-N`) before FRR starts so zebra
  can program the L3VNI. The VXLAN `dstport` is `4789` to match the OVN
  dataplane on EDPM nodes; the kernel FRR default port is
  advertisement-only and silently blackholes decapsulated packets.
- Add an idempotent SNAT rule that rewrites tenant-bound traffic to the
  VTEP IP, so the VM replies to an address router-0 advertises into
  EVPN and no worker subnet needs to be leaked into the tenant VRF. The
  destination is the whole tempest `project_network_cidr`
  (`router_tenant_cidr`, default `10.100.0.0/16`) because tempest carves
  `/28` subnets sequentially out of it -- a single `/24` route flakes
  once the allocator advances past `10.100.0.255`.

The worker-3 node route and the `bgpnet-worker-3` NAD route
(`10.100.0.0/16 -> 100.64.10.1`) live in the `architecture` repo and are
handled by a separate change.

Related-ticket: OSPRH-34785

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Eduardo Olivares <eolivare@redhat.com>
@eduolivares
eduolivares force-pushed the feature/bgp-router-evpn-vtep branch from 127d5b1 to a28d2ec Compare August 24, 2026 12:08
@mtomaska
mtomaska self-requested a review August 24, 2026 14:19
@centosinfra-prod-github-app

Copy link
Copy Markdown

Build failed (check pipeline). Post recheck (without leading slash)
to rerun all jobs. Make sure the failure cause has been resolved before
you rerun jobs.

https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/bdf0b4af54f74c2c9b103fc75da11db0

✔️ openstack-k8s-operators-content-provider SUCCESS in 2h 13m 35s
podified-multinode-edpm-deployment-crc FAILURE in 1h 53m 12s
cifmw-crc-podified-edpm-baremetal FAILURE in 1h 58m 42s
cifmw-crc-podified-edpm-baremetal-minor-update FAILURE in 1h 59m 56s
✔️ openstack-k8s-operators-content-provider-bootc SUCCESS in 2h 40m 04s
cifmw-crc-podified-edpm-baremetal-bootc FAILURE in 2h 03m 43s
✔️ noop SUCCESS in 0s
✔️ cifmw-pod-ansible-test SUCCESS in 10m 34s
✔️ cifmw-pod-pre-commit SUCCESS in 9m 24s

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant