Skip to content

chore(scaleway): the metadata API's five operations moved to their context variants - #793

Merged
stephrobert merged 1 commit into
mainfrom
chore/triage-the-metadata-api-context-variants
Sep 25, 2026
Merged

stephrobert merged 1 commit into
mainfrom
chore/triage-the-metadata-api-context-variants

Conversation

@stephrobert

Copy link
Copy Markdown
Owner

The nightly drift scan has been red since 2026-09-24, and both halves of its
message are the same event:

5 new upstream operation(s), none triaged
5 route(s) reference an operation that no longer exists upstream

Scaleway added a WithContext variant of each MetadataAPI call and turned the
bare one into a deprecated wrapper:

// Deprecated: use GetMetadataWithContext instead
//go:fix inline
func (meta *MetadataAPI) GetMetadata() (m *Metadata, err error) {
    ctx, cancel := context.WithTimeout(context.Background(), metadataTimeout)
    defer cancel()
    return meta.GetMetadataWithContext(ctx)
}

The endpoints did not move; the names did. The scan stopped counting the old
spellings and it is right to: a method that composes an exported one adds no
endpoint, which is the rule already keeping WaitForServer and
ServerActionAndWait out of the surface.

Retargeted, not extended

Listing both spellings was the first attempt, and drift:update refused it in
one line — orphan routes (no upstream match) on the five old names. That is
the report's own alarm for a refusal naming something upstream no longer has, and
it fired immediately.

The reason itself is unchanged and still true: the metadata service answers on
the link-local address 169.254.42.42, from inside the machine, to a caller that
carries no credentials. Serving it would mean an HTTP listener inside every
emulated machine, and user data reaches the guest through the runtime instead.

mise run drift:check green, mise run prepush green.

🤖 Generated with Claude Code

…ntext variants

The nightly drift scan has been red since 2026-09-24, and both halves of its
message are the same event:

    5 new upstream operation(s), none triaged
    5 route(s) reference an operation that no longer exists upstream

Scaleway added a `WithContext` variant of each MetadataAPI call and turned the
bare one into a deprecated wrapper:

    // Deprecated: use GetMetadataWithContext instead
    //go:fix inline
    func (meta *MetadataAPI) GetMetadata() (m *Metadata, err error) {
        ctx, cancel := context.WithTimeout(context.Background(), metadataTimeout)
        defer cancel()
        return meta.GetMetadataWithContext(ctx)
    }

So the endpoints did not move; the names did. The scan stopped counting the old
spellings and it is right to: a method that composes an exported one adds no
endpoint, which is the rule already keeping WaitForServer and
ServerActionAndWait out of the surface.

The refusal is retargeted rather than extended. Listing both spellings was the
first attempt and `drift:update` refused it in one line — `orphan routes (no
upstream match)` on the five old names — which is the report's own alarm for a
refusal naming something upstream no longer has.

The reason itself is unchanged and still true: the metadata service answers on
the link-local address 169.254.42.42, from inside the machine, to a caller that
carries no credentials. Serving it would mean an HTTP listener inside every
emulated machine, and user data reaches the guest through the runtime instead.

`mise run drift:check` green, `mise run prepush` green.

Assisted-by: Claude Code (claude-opus-5)
@stephrobert
stephrobert merged commit b5b08a6 into main Sep 25, 2026
31 checks passed
@stephrobert
stephrobert deleted the chore/triage-the-metadata-api-context-variants branch September 25, 2026 06:49
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