Skip to content

fix(gateway): handle delayed Podman bridge listeners - #2874

Draft
elezar wants to merge 2 commits into
codex/rootful-podman-test-guestfrom
codex/fix-fedora-release-canary
Draft

fix(gateway): handle delayed Podman bridge listeners#2874
elezar wants to merge 2 commits into
codex/rootful-podman-test-guestfrom
codex/fix-fedora-release-canary

Conversation

@elezar

@elezar elezar commented Aug 21, 2026

Copy link
Copy Markdown
Member

Summary

Fix rootful Podman gateway startup when Podman has allocated a managed bridge gateway address but netavark has not assigned that address yet. The gateway uses delayed exact binding where Linux supports it and a narrowly scoped fallback for the nested Fedora canary topology.

This PR is stacked on #3184, which adds the reusable rootful Podman test-guest configuration.

Related Issue

No issue required: this is a focused fix for a reliably failing Fedora release-canary regression. Longer-term driver-owned callback relay work remains tracked in #2540.

Release Canary reference: https://github.com/NVIDIA/OpenShell/actions/runs/32448768823/job/96673135310

Changes

  • Add an additive exact-bind listener requirement that allows trusted built-in drivers to identify addresses eligible for delayed binding while preserving the legacy protobuf field.
  • Allow only the built-in rootful Podman driver, using its automatically discovered managed-bridge address, to request delayed binding.
  • Use Linux IP_FREEBIND when the bridge gateway address has not yet been assigned.
  • When delayed exact binding is unavailable in the nested Linux container topology, use an IPv4 wildcard socket with primary scope only for loopback destinations and callback-only scope elsewhere.
  • Document the listener behavior and Podman networking constraints.
  • Run Fedora conformance against candidate RPMs in rootless and rootful Podman modes with smoke and gateway-restart scenarios.

Security impact

The nested-container fallback exposes only the sandbox-callable gRPC surface on non-loopback IPv4 destinations in the outer container namespace. User, administrator, health, reflection, non-callback inference, and HTTP routes remain unavailable there. Sandbox authentication and the surrounding container-network boundary remain required defenses.

Testing

  • mise run pre-commit
  • cargo check -p openshell-server -p openshell-driver-podman
  • Targeted Podman and Docker listener/callback tests available on macOS
  • git diff --check origin/main..HEAD
  • Fedora rootless and rootful conformance lanes (GitHub Actions)

Checklist

  • Follows Conventional Commits
  • Commits are signed off (DCO)

@copy-pr-bot

copy-pr-bot Bot commented Aug 21, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@elezar elezar added the test:e2e Requires end-to-end coverage label Aug 21, 2026
@github-actions

Copy link
Copy Markdown

Label test:e2e applied, but pull-request/2874 does not exist yet. A maintainer needs to comment /ok to test e2e39b416207323bc6ef34480f6134efc0ddf2f1 to mirror this PR. Once the mirror exists, re-apply the label or re-run Branch E2E Checks from the Actions tab.

@elezar

elezar commented Aug 21, 2026

Copy link
Copy Markdown
Member Author

/ok-to-test e2e39b4

@elezar elezar changed the title test(ci): add nested Podman callback E2E fix(gateway): handle delayed Podman bridge listeners Aug 21, 2026
@github-actions

Copy link
Copy Markdown

@elezar

elezar commented Aug 21, 2026

Copy link
Copy Markdown
Member Author

/ok-to-test fa02b7d

@elezar
elezar force-pushed the codex/fix-fedora-release-canary branch from 8be2ce6 to 1ca8c32 Compare August 27, 2026 13:21
@elezar

elezar commented Aug 27, 2026

Copy link
Copy Markdown
Member Author

/ok-to-test 1ca8c32

@elezar
elezar force-pushed the codex/fix-fedora-release-canary branch 2 times, most recently from fe4097d to d31a034 Compare September 3, 2026 17:57
@elezar
elezar marked this pull request as ready for review September 3, 2026 21:14
@elezar

elezar commented Sep 3, 2026

Copy link
Copy Markdown
Member Author

/ok-to-test 5c8c586

Comment on lines -176 to +190
--copy "${candidate_cli_package[0]}:/var/lib/openshell-conformance/candidate/openshell.rpm" \
--copy "${candidate_gateway_package[0]}:/var/lib/openshell-conformance/candidate/openshell-gateway.rpm" \
--install "${candidate_cli_package[0]}" \
--install "${candidate_gateway_package[0]}" \

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@SDAChess just a note. This removes the "upgrade" test. There were some rough edges to sort out. For example, with the "upgrade" flow as defined, we were testing the latest stable release for the initial test cases and then only upgrading.

The latest release also didn't work as expected with "rootful podman" (which is also why the Fedora canary is failing).

@elezar
elezar force-pushed the codex/fix-fedora-release-canary branch from 5c8c586 to f5cde26 Compare September 4, 2026 12:03
@elezar
elezar changed the base branch from main to codex/rootful-podman-test-guest September 4, 2026 12:03
@elezar
elezar marked this pull request as draft September 4, 2026 12:30
Signed-off-by: Evan Lezar <elezar@nvidia.com>
Signed-off-by: Evan Lezar <elezar@nvidia.com>
@elezar
elezar force-pushed the codex/rootful-podman-test-guest branch from 35374e3 to 5f2ac04 Compare September 4, 2026 13:10
@elezar
elezar force-pushed the codex/fix-fedora-release-canary branch from f5cde26 to 3bccf31 Compare September 4, 2026 13:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

test:e2e Requires end-to-end coverage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant