Skip to content

chore(scaleway): the Terraform provider pin moves to 2.82.0, and the move measures what it exposed - #777

Merged
stephrobert merged 1 commit into
mainfrom
chore/pin-scaleway-provider-2.82.0
Sep 14, 2026
Merged

stephrobert merged 1 commit into
mainfrom
chore/pin-scaleway-provider-2.82.0

Conversation

@stephrobert

Copy link
Copy Markdown
Owner

The three exact pins in this repository move from 2.81.0 to 2.82.0: the
conformance fixture, examples/stacks/scaleway and examples/quickstart/scaleway.
The pin is exact so that moving it is an act, and this is that act.

What the release changes that could reach this emulator

Read from the release notes rather than met one failure at a time. 2.82.0 adds
an srn attribute to six products, three of which this emulator serves —
iam, vpcgw, ipam/flexibleip — plus fix(instance): infer project_id from server if not explicit, on a pack this repository does serve. Everything else is a new
product (autoscaling, datawarehouse) or a test chore.

What that turned out to mean, measured

srn is computed client-side, and the SDK that 2.82.0 bumps to asks the gateway
for the domain to build it with:

apiMetadata, err := s.client.GetAPIMetadata()   // GET /metadata
if err == nil {
    resp.setSRN(apiMetadata.Domain)
}

This emulator mounts no /metadata. One apply plus destroy of the
conformance fixture, recorded through feint proxy --record:

exchanges 539 over 100 distinct paths
GET /metadata 148 calls, every one answered 404
response codes {200: 339, 404: 169, 204: 20, 201: 9, 202: 2}

148 of the run's 169 refusals are that one route. Nothing fails, because the
error is discarded — that is luck rather than a decision, and it is the shape of
#257 exactly.

So the answer is known rather than guessed. A read-only shot at a real
fr-par account, no resource created, 2026-09-14:

GET https://api.scaleway.com/metadata  ->  200
{"platform": "external", "partition": "scw", "domain": "scw.eu"}

It is not mounted in this PR, and the reason is the instrument rather than
the handler: Route.Operation must name an operation the drift scan finds, and
that scan walks api/<product>/<version> only, where GetAPIMetadata is not. A
route declaring it becomes an orphan, and all three baselines carry zero. That
decision is #776; docs/limits.md carries the measurement in the meantime.

The same shot recorded a second divergence, left to its own issue: the gateway
answers an unknown path with a Scaleway error document, where this emulator
answers net/http's plain-text 404 page not found.

Proven

  • conformance:leg -- terraform: green, and the log names the client that
    answered — Installed scaleway/scaleway v2.82.0 (signed, key ID F5BF26CADF6F9614).
  • conformance:leg -- scw-cli: green.
  • conformance:quickstart: green — Scaleway brought up, second plan empty,
    taken down. That empty second plan is the assertion that catches a provider
    which gained an attribute the emulator does not serve.
  • conformance:stacks: green — applied, second plan with no resource change,
    destroyed, on all three stacks.
  • conformance:functional under incus-ovn, Scaleway half green: seven
    machines, each running and each really Running on the host, public paths,
    firewall rules, cross-VPC isolation, a restart through the API, stack taken
    down.
  • mise run check and docs:check green; the generated client tables and the
    README safety banner regenerated (56 → 57 limits sections).

Two things about the registry, because one of them nearly fooled me

A false alarm: the registry answered 504 on 2.82.0's SHA256SUMS twice
running, which reads exactly like a broken release. Fifteen requests against
2.82.0 and fifteen against 2.81.0 as a witness came back 200/200 on both,
same byte size. One attempt at a remote service settles nothing.

A real outage, and not this release: the functional leg's Outscale half died
on Failed to install provider outscale/outscale v1.8.0[…] 504 Gateway Timeout returned from github.com. Fifteen requests for that asset came back 5 in 200
and 10 in 504
, while both Scaleway assets were 15/15 the same minute. So the
Outscale half of that leg is not measured here, for a reason upstream of this
repository and unrelated to this pin — and CI may hit the same thing on any leg
that installs the Outscale provider.

Not in this change

mise run limits:check is red on 9 sections whose cited issues closed after
anyone last looked. It was red on main before this branch — verified by
stashing — and is a separate piece of work. The section added here carries its
own acknowledgement and is not among the nine.

🤖 Generated with Claude Code

…move measures what it exposed

The three exact pins in this repository go from 2.81.0 to 2.82.0: the
conformance fixture, examples/stacks/scaleway and examples/quickstart/scaleway.
The pin is exact so that moving it is an act, and this is that act.

WHAT THE RELEASE CHANGES THAT COULD REACH THIS EMULATOR

Read from the release notes rather than met one failure at a time. 2.82.0 adds
an `srn` attribute to six products, three of which this emulator serves — iam,
vpcgw, ipam/flexibleip — plus `fix(instance): infer project_id from server if
not explicit` on a pack this repository does serve. Everything else is a new
product (autoscaling, datawarehouse) or a test chore.

WHAT THAT TURNED OUT TO MEAN, MEASURED

`srn` is computed client-side, and the SDK 2.82.0 bumps to asks the gateway for
the domain to build it with:

    apiMetadata, err := s.client.GetAPIMetadata()   // GET /metadata
    if err == nil {
        resp.setSRN(apiMetadata.Domain)
    }

This emulator mounts no `/metadata`. One apply plus destroy of the conformance
fixture, recorded through `feint proxy --record`: **539 exchanges over 100
paths, of which 148 are `GET /metadata`, every one answered 404** — 148 of the
run's 169 refusals. Nothing fails, because the error is discarded; that is luck
rather than a decision, and it is the shape of #257 exactly.

So the answer is known rather than guessed. A read-only shot at a real fr-par
account, no resource created, 2026-09-14:

    GET https://api.scaleway.com/metadata  ->  200
    {"platform": "external", "partition": "scw", "domain": "scw.eu"}

Not mounted here, because `Route.Operation` must name an operation the drift
scan finds and that scan walks `api/<product>/<version>` only, where
`GetAPIMetadata` is not. A route declaring it becomes an orphan and all three
baselines carry zero. The instrument gets decided before the handler: #776, with
docs/limits.md carrying the measurement in the meantime.

The same shot recorded a second divergence, left to its own issue: the gateway
answers an unknown path with a Scaleway error document, where this emulator
answers `net/http`'s plain-text `404 page not found`.

PROVEN

- conformance:leg -- terraform: green, and the log says which client answered —
  `Installed scaleway/scaleway v2.82.0 (signed, key ID F5BF26CADF6F9614)`;
- conformance:leg -- scw-cli, conformance:quickstart (scaleway up, empty second
  plan, down), conformance:stacks: green;
- mise run check and docs:check green; the generated client tables regenerated.

- conformance:functional under incus-ovn, Scaleway half: seven machines, each
  'running' and each Running on the host, public paths, firewall rules,
  cross-VPC isolation, a restart through the API, and the stack taken down.

A false alarm worth recording, because a single probe produced it: the provider
registry answered 504 on v2.82.0's SHA256SUMS twice running, which reads exactly
like a broken release. Fifteen requests against 2.82.0 and fifteen against
2.81.0 as a witness came back 200/200 on both, same size. One attempt at a
remote service settles nothing.

The same measurement found a real outage, and it is not this release. The
functional leg's Outscale half died on `Failed to install provider
outscale/outscale v1.8.0 [...] 504 Gateway Timeout returned from github.com`,
and 15 requests for that asset came back **5 in 200 and 10 in 504** while both
Scaleway assets were 15/15. So the Outscale half of that leg is not measured
here, for a reason upstream of this repository and unrelated to the pin this
commit moves.

NOT IN THIS CHANGE

`mise run limits:check` is red on 9 sections whose cited issues closed after
anyone last looked. It was red on main before this branch — verified by stashing
— and is a separate piece of work. The section added here carries its own
acknowledgement and is not among them.

Assisted-by: Claude Code (claude-opus-5)
@stephrobert
stephrobert force-pushed the chore/pin-scaleway-provider-2.82.0 branch from 02b1654 to 6e93ce5 Compare September 14, 2026 15:03
@stephrobert
stephrobert merged commit 043de63 into main Sep 14, 2026
54 of 58 checks passed
@stephrobert
stephrobert deleted the chore/pin-scaleway-provider-2.82.0 branch September 14, 2026 15:22
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