Skip to content

Sync the November API snapshot: VM public IPv4 RPCs - #12

Merged
Zblocker64 merged 1 commit into
mainfrom
sync/api-2026-11
Nov 1, 2026
Merged

Zblocker64 merged 1 commit into
mainfrom
sync/api-2026-11

Conversation

@Zblocker64

@Zblocker64 Zblocker64 commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

Snapshot of Metalhost main 895d9d14 (includes backend #453, many public IPv4s per VM).

API additions

  • NetworkService: GetVmPublicAccess, AddVmPublicIpv4, RemoveVmPublicIpv4, UpdateVmPublicIpv4
  • New VmPublicIpv4 message, VmPublicIpv4Mode (shared/dedicated) and VmPublicIpv4GuestStatus enums, and the four request/response pairs
  • PublicIp.reserved, PublicIpBinding.mode
  • VMNetworkSpec.allow_ssh (optional, unset means true); CreateOperationRequest.vm_allow_ssh
  • Doc-comment change: VirtualMachineSpec.cloud_init is kept as supplied and users are added alongside it
  • OpenAPI: 260 → 264 paths (the four new RPCs); no admin paths

docs/API_SURFACE.md gets a November section (labelled v1.4.0, assuming that is the next tag).

Excluded

aes.network.v1.StatusService (proto/aes/network/v1/status.proto, server-streaming SubscribeStatus) is new in the public network package but no backend binary mounts it on main yet, and its StatusEvent response name fails the SDK's buf lint (the backend exempts it). The sync script now drops that file; publish it once the API serves it.

Validation

  • make tools (pinned buf v1.50.0 and plugins)
  • make generate on unmodified main: no diff (generator output reproducible)
  • METALHOST_API_SOURCE=<backend worktree at origin/main> ./scripts/sync-api-snapshot.sh: lint, generate, finalize OpenAPI, go mod tidy, go test ./... pass
  • buf breaking --against '.git#tag=v1.3.0': clean
  • make ci: pass (exit 0); go vet ./...: clean

Snapshot of Metalhost main 895d9d14. Adds GetVmPublicAccess,
AddVmPublicIpv4, RemoveVmPublicIpv4 and UpdateVmPublicIpv4 to
NetworkService with the VmPublicIpv4 message and its mode and guest status
enums, PublicIp.reserved, PublicIpBinding.mode, VMNetworkSpec.allow_ssh and
CreateOperationRequest.vm_allow_ssh. Compatible with v1.3.0 (buf breaking
clean); admin RPCs stay excluded.

aes.network.v1.StatusService (status.proto) is excluded by the sync script:
no backend binary serves it yet.
@Zblocker64
Zblocker64 merged commit b4689f4 into main Nov 1, 2026
1 check passed
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