Skip to content

docs: document migrating a static external attachment to BGP - #351

Merged
Frostman merged 4 commits into
masterfrom
pau/static-bgp-external-migration
Sep 21, 2026
Merged

Frostman merged 4 commits into
masterfrom
pau/static-bgp-external-migration

Conversation

@pau-hedgehog

@pau-hedgehog pau-hedgehog commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

Summary

  • ExternalAttachment static-ness is per-attachment, not per-External, so one External can carry both a static and a BGP attachment at once - document the migration sequence from static to BGP.
  • Call out two sharp edges found while smoke-testing this on hardware: the attachment conversion and dropping spec.static can't be applied atomically, and inboundCommunity/outboundCommunity need to be set on the External after migrating, since the API forbids setting them while it's still static.

Static-ness is per-attachment, not per-External, so one External can
have both a static and a BGP attachment at once. Document the
migration sequence and its two sharp edges: the attachment conversion
and dropping spec.static can't be applied atomically, and BGP
communities need to be configured on the External after the migration
since they can't be set while it's still static.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: Pau Capdevila <pau@githedgehog.com>
@pau-hedgehog
pau-hedgehog requested a review from a team as a code owner September 21, 2026 06:25
@github-actions

Copy link
Copy Markdown

🚀 Deployed on https://preview-351--hedgehog-docs.netlify.app

Two back-to-back warning admonitions read like an afterthought list;
fold both sharp edges into a single warning with two bullets instead.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: Pau Capdevila <pau@githedgehog.com>
@pau-hedgehog pau-hedgehog self-assigned this Sep 21, 2026
The prior wording attributed the outage window to attachment/External
static-flag mismatch causing the switch to skip programming the BGP
link. Re-verified against a freshly fetched fabric@origin/master: the
switch-agent gates BGP route-exchange per attachment (extHasBGP), not
on the External's own static flag, so that part was wrong -- the
earlier read was against a stale, pre-feature local checkout.

The real mechanism: the API forbids setting inboundCommunity/
outboundCommunity while any static prefix remains on the External, to
protect the static route's own EVPN re-origination. That's what forces
step 3 to wait for step 2, and it's the actual reason a community-
filtering Edge Device drops everything the Fabric advertises until
step 3 completes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: Pau Capdevila <pau@githedgehog.com>
Comment thread docs/user-guide/external.md
Per review feedback from the feature's author: since this BGP session
is new, there's no prior community filter on the Edge Device to
conform to. Coordinating with the Edge Device operator to defer
community-based filtering until after the migration avoids the gap
entirely, when that coordination is possible.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: Pau Capdevila <pau@githedgehog.com>

@edipascale edipascale left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

maybe let's squash the commits into a single one, other than that LGTM

@Frostman
Frostman merged commit a0d4834 into master Sep 21, 2026
4 checks passed
@Frostman
Frostman deleted the pau/static-bgp-external-migration branch September 21, 2026 16:13
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.

3 participants