Skip to content

Add A63 control-plane regression example#550

Merged
kevin-w-du merged 1 commit into
developmentfrom
pr/a14-control-plane-regression
Jun 14, 2026
Merged

Add A63 control-plane regression example#550
kevin-w-du merged 1 commit into
developmentfrom
pr/a14-control-plane-regression

Conversation

@zzw4257

@zzw4257 zzw4257 commented Jun 14, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds examples/basic/A63_control_plane_regression, a compact example-first runtime regression entry for the control-plane foundation work.

The goal is to give reviewers and CI one high-value example to run after changes to Routing, BGP intent metadata, FRR rendering, ExaBGP service binding, or MPLS readiness, without adding a large scatter of separate default examples. The example uses the A63 number so it does not collide with lower-numbered basic examples or IPv6 work that may use A14.

What A63 Covers

  • BIRD route-server baseline on IX100 with AS150/AS151 route-server clients.
  • Mixed BIRD/FRR transit AS2 using shared OSPF, iBGP, and eBGP intent.
  • FRR route-reflector AS3 with bgp cluster-id, route-reflector-client, and route propagation to an FRR RR client.
  • ExaBGP as ExaBgpService + Binding only, peering with an FRR router in AS4 and announcing 198.51.100.0/24.
  • MPLS/LDP readiness in AS20 with generated /mpls_ifaces.txt and FRR LDP config checks.

Design Notes

  • This PR does not change core Routing, FRR, ExaBGP, or MPLS semantics.
  • ExaBGP remains a service speaker, not a router backend.
  • FRR route server is not introduced; A63 keeps the existing BIRD route-server baseline visible.
  • MPLS dataplane is intentionally host-gated. The default A63 runtime validates config/readiness and records host capability instead of pretending GitHub hosted runners always provide MPLS kernel support.
  • A63 focuses on control-plane route state and daemon behavior. The route-server probe checks learned routes rather than cross-host dataplane reachability, because the regression target is route-server control-plane behavior.

CI Integration

Adds A63 to the existing PR workflow as a single default basic example:

  • static py-compile list
  • manifest clean validation
  • compile matrix
  • runtime matrix
  • workflow_dispatch selected-example options

A63 is marked requires_mpls: false because the full example must still run on hosted runners; MPLS kernel-dependent dataplane validation remains out of the default path.

Local Verification

Ran from pr/a14-control-plane-regression after renaming the example to A63:

git diff --check
python3 -m py_compile \
  seedemu/testing/base.py \
  seedemu/testing/internet.py \
  seedemu/testing/blockchain.py \
  seedemu/testing/satellite.py \
  seedemu/testing/registry.py \
  seedemu/testing/runtime.py \
  seedemu/testing/cli.py \
  examples/basic/A63_control_plane_regression/control_plane_regression.py \
  examples/basic/A63_control_plane_regression/test_runtime.py
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 /tmp/seedemu-a14-venv/bin/python -m pytest -q test_frr_exabgp_foundation.py
/tmp/seedemu-a14-venv/bin/python -m seedemu.testing.cli clean examples/basic/A63_control_plane_regression/example.yaml
COMPOSE_PROJECT_NAME=seedemu-a63-control-plane \
DOCKER_CONFIG=/tmp/seedemu-docker-config-a14 \
/tmp/seedemu-a14-venv/bin/python -m seedemu.testing.cli all \
  examples/basic/A63_control_plane_regression/example.yaml \
  --artifact-dir ci-artifacts/a63-all-final

Results:

  • git diff --check: passed.
  • CI-style py-compile list including A63: passed.
  • test_frr_exabgp_foundation.py: 11 passed.
  • A63 full lifecycle: passed build, up, readiness, probes, custom runtime validation, and down.
  • A63 generated compose was checked to ensure no unexpected IPv6 fields (enable_ipv6, ipv6_address, or IPv6 IPAM) appear.

Environment Note

The local WSL Docker config had a Windows credential helper entry that makes Python subprocess Docker builds fail with docker-credential-desktop.exe: exec format error. The successful lifecycle run used an isolated temporary Docker config without that host-specific credential helper:

DOCKER_CONFIG=/tmp/seedemu-docker-config-a14

This does not affect CI and is not part of the repository change.

@kevin-w-du
kevin-w-du merged commit 2ec1758 into development Jun 14, 2026
27 checks passed
@zzw4257 zzw4257 changed the title Add A14 control-plane regression example Add A63 control-plane regression example Jun 15, 2026
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.

2 participants