Skip to content

docs: GCP is simulated by plugin-gcp from CLI v0.6.18 (ENG-1193) - #5

Merged
Istvan Docsa (istvandocsa) merged 3 commits into
mainfrom
adamtauber/eng-1193-verify-the-gcp-cutover-on-local-dev-and-staging-with
Oct 8, 2026
Merged

Istvan Docsa (istvandocsa) merged 3 commits into
mainfrom
adamtauber/eng-1193-verify-the-gcp-cutover-on-local-dev-and-staging-with

Conversation

@asciimoo

Copy link
Copy Markdown
Contributor

Part of ENG-1193. Docs only.

  • project input: a fallback for a resource whose plan states none, not an override. A contradiction refuses the run.
  • Scope section: a Pulumi preview does carry the GCP project (the stack's gcp:project, read by CLI v0.6.18+). The table gains the per-resource project order and a GCP organization row.
  • New GCP section covers:
    • the three dialects (Terraform google/google-beta, Pulumi bridged gcp, Pulumi google-native);
    • project resolution and the refusal when none resolves;
    • --organization through extra-args, since there is no input yet (left to ENG-1196);
    • Pulumi auto-naming;
    • the Linro Release 2026.10.1 floor.

Auto-naming, stated as the plugin behaves: the ticket expected "auto-named Pulumi resources are skipped with a reason". plugin-gcp deliberately does something else. It keys a create by the name the preview drew (compute.planName, pinned by TestIaC_SQLInstance_ACreatedAutonameComposes), because skipping it would also drop everything that references it. Only a name the plan cannot state at all is skipped (unkeyable). The README says that.

🤖 Generated with Claude Code

Adam Tauber (asciimoo) and others added 2 commits October 8, 2026 09:00
Name the three dialects, the per-resource project order and the
--organization fallback (through extra-args, no input yet), what happens to an
auto-named Pulumi resource, and the Linro Release 2026.10.1 floor.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…lumi project key (ENG-1193)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@asciimoo

Copy link
Copy Markdown
Contributor Author

Claude: codex review (gpt-6.1-sol), pass 1 — sweep on 3ac7453.

  • CLI review: no findings. Persona (operator + writer): MERGE AFTER FIXES, 1 major and 1 minor. Both fixed in 8bb04c7:
    • Major: the GCP example's CLI 404s from the default marketplace. Confirmed 2026-10-08: marketplace.linro.io answers 404 for 0.6.18 and 0.6.19 and 302 for 0.2.1. The GCP section now says so above the example, together with the install's 2026.10.1 floor.
    • Minor: the Pulumi project key. A default provider reads gcp:project or google-native:project; an explicit provider never falls back to stack config (linro-simulator frontend/pulumi/project.go). The scope table and text are fixed.

Confirmation pass follows on the fixed head.

@asciimoo

Copy link
Copy Markdown
Contributor Author

Claude: codex review (gpt-6.1-sol), pass 2 — confirmation on 8bb04c7: MERGE. No critical or major issue remains. Nothing left unverified. Step 4 is done; this is not a merge approval.

@asciimoo
Adam Tauber (asciimoo) marked this pull request as ready for review October 8, 2026 09:51
@asciimoo
Adam Tauber (asciimoo) requested a review from a team October 8, 2026 09:51
Comment thread README.md Outdated
if you simulate a preview, pass `account`/`region` (and `project` for GCP, or
`domain` for T Cloud Public), or the resources are identified against the wrong
scope.
if you simulate a preview, pass `account`/`region` (or `domain` for T Cloud

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.

lets make this more generic, seems like it was written for AWS, appended with GCP then (tcloud)

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.

should be something like different providers/plugins define their scopes differently, for more details please visit the marketplace's Scope section for the given plugin or whatever like that

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Claude: Done in 9b795eb. The section now opens with what is generic: each plugin defines its own scope (which values, and where a plan or preview can state them), and that scope is listed under Scopes on the plugin's marketplace page, e.g. https://marketplace.linro.io/plugins/gcp. That tab is real: marketplace-frontend/src/app/plugins/[slug]/page.tsx:281 shows it whenever the plugin declares scope dimensions. The inputs are described as filling what the source does not state, with a missing required value refusing the run unless a placeholder is allowed. The AWS-first plan-vs-preview wording is gone.

Comment thread README.md
| AWS region | the plan's provider config, a per-resource hint, then `region` |
| AWS account | an `assume_role` role ARN in the provider config, `stack-export`, then `account` |
| GCP project | a constant `project` in the `google` provider block, then `project` |
| GCP project | the resource's own `project`, then a constant `project` in **its** provider block (a Pulumi preview: an explicit provider's `project` input; for a default provider only, the stack's `gcp:project` / `google-native:project`), then `project` |

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.

for now this section should be fine, but at some point has the same problems as above

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Claude: Kept as is for now, as you suggest. It is the one place that still lists rules per provider. Once each plugin's Scopes tab carries the order in which values are resolved, this table can be replaced by links.

Comment thread README.md Outdated

## GCP

From CLI **v0.6.18**, GCP resources are simulated by **plugin-gcp**, the plugin

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.

probably TMI

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Claude: Trimmed in 9b795eb to the facts a user acts on: from v0.6.18 plugin-gcp simulates GCP in all three dialects, and version has to be set.

Comment thread README.md Outdated
`google-native`. The action's default `version` predates this, so set it.

**Availability.** As of 2026-10-08, `marketplace.linro.io` (the default
`marketplace-url`) does not serve v0.6.18 or v0.6.19 yet: the download answers

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.

lets push and drop this

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Claude: The note is dropped in 9b795eb. Pushing v0.6.18/v0.6.19 to production (linro-io/workflows promote-to-prod.yml) is the operator's call. Until it happens the example's version: v0.6.19 404s from the default marketplace, so this PR should merge only after the promotion lands.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Claude: Pushed. linro-simulator v0.6.19 was promoted to production (linro-io/workflows run 37770735358, success), and marketplace.linro.io now serves it (linux-amd64 and darwin-arm64 answer 302). The example in this PR downloads from the default marketplace.

Comment thread README.md
the provider draws for the preview, and the apply draws a different one. The
resource is simulated under the preview's name: its findings are real, but it
can never match a live resource. An update keeps the live name. Set `name`
explicitly if you want a create to line up with what lands. A resource whose

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.

'A resource whose
name the plan cannot state at all'
for now this is fine, but later on we have to still simulate these, even if the names will be autogenerated, still not perfect, but better

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Claude: Agreed. Today a resource whose name the plan cannot state at all (unknown until apply, redacted) is reported as skipped (ErrIaCUnkeyable), and resources that reference it still compose. Simulating it under a generated name is a plugin-sdk/plugin-gcp change (a stand-in key, like MintedKey does for server-minted ids). I've raised it with the operator as a follow-up rather than growing this docs PR.

…r needs (ENG-1193)

Review on #5: the scope section read as AWS with GCP and OTC appended. It now
says each plugin defines its scope and points at the plugin's Scopes tab in the
marketplace; the per-provider table stays. The GCP intro is trimmed, and the
availability note goes: the CLI is to be promoted to production instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@asciimoo
Adam Tauber (asciimoo) enabled auto-merge (squash) October 8, 2026 11:37
@istvandocsa
Istvan Docsa (istvandocsa) merged commit 032a171 into main Oct 8, 2026
6 checks passed
@istvandocsa
Istvan Docsa (istvandocsa) deleted the adamtauber/eng-1193-verify-the-gcp-cutover-on-local-dev-and-staging-with branch October 8, 2026 11:52
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.

2 participants