Parcourir la source

Populate AWS Parameter Store v2 parity design

Moritz Johner il y a 1 mois
Parent
commit
f245198321

+ 105 - 0
docs/superpowers/specs/2026-04-16-aws-parameterstore-v2-parity-design.md

@@ -0,0 +1,105 @@
+# AWS Parameter Store V2 Parity Design
+
+## Goal
+
+Bring AWS Parameter Store v2 to parity with the existing AWS Secrets Manager v2 implementation and e2e structure.
+
+Parity here means matching the current Secrets Manager v2 shape for provider auth support and e2e coverage, not inventing a larger test matrix.
+
+## Current State
+
+Parameter Store v2 already has:
+- provider implementation in `providers/v2/aws/store/parameterstore`
+- namespaced-provider v2 e2e coverage for static auth
+- cluster-provider v2 e2e coverage
+- push-secret v2 e2e coverage
+
+Secrets Manager v2 additionally has:
+- namespaced-provider auth coverage for `static`, `external-id`, and `session-tags`
+- managed v2 IRSA coverage for:
+  - referenced service account
+  - mounted IRSA
+- reusable auth/profile helpers for assume-role probing and provider config generation
+
+## Scope
+
+In scope:
+- add missing Parameter Store v2 auth support in e2e helper/config generation for:
+  - static
+  - external-id
+  - session-tags
+  - referenced-irsa
+  - mounted-irsa
+- add missing Parameter Store v2 e2e coverage so it matches Secrets Manager v2:
+  - namespaced provider: static, external-id, session-tags
+  - managed v2 IRSA: referenced service account, mounted IRSA
+- keep existing Parameter Store v2 cluster-provider and push-secret coverage
+- add or update focused helper tests for the new auth/profile behavior
+
+Out of scope:
+- expanding cluster-provider or push-secret auth matrices beyond current Secrets Manager v2 parity
+- changing CI wiring
+- broader AWS v2 helper deduplication beyond what is directly needed for this slice
+
+## Design
+
+### 1. Parameter Store v2 auth profiles
+
+Extend `e2e/suites/provider/cases/aws/parameterstore/provider_support_v2.go` to mirror the Secrets Manager v2 auth-profile model.
+
+This includes:
+- auth profile enum/constants for `static`, `external-id`, `session-tags`, `referenced-irsa`, `mounted-irsa`
+- auth-aware config generation for Parameter Store provider configs
+- assume-role probe reuse for `external-id` and `session-tags`
+- provider preparation helpers for namespaced-provider and managed-provider cases
+
+The Parameter Store v2 helper should stay Parameter Store specific, but its behavior should align with Secrets Manager v2 so the two suites remain structurally parallel.
+
+### 2. Namespaced-provider parity
+
+Update `e2e/suites/provider/cases/aws/parameterstore/provider_v2.go` to match the Secrets Manager v2 auth-case matrix where applicable.
+
+Resulting namespaced-provider coverage:
+- static auth: existing sync, refresh, find, versioned, status-not-updated cases remain
+- external-id auth: add the same simple sync coverage style used by Secrets Manager v2
+- session-tags auth: add the same simple sync coverage style used by Secrets Manager v2
+
+This keeps the richer Parameter Store-specific cases on static auth only, while matching Secrets Manager v2’s extra auth validation path.
+
+### 3. Managed v2 IRSA parity
+
+Add a new Parameter Store v2 managed test file mirroring `secretsmanager_v2_managed.go`.
+
+Coverage should match Secrets Manager v2 exactly:
+- referenced IRSA with a cluster provider reference
+- mounted IRSA with a namespaced provider address in the service account namespace
+- case set limited to:
+  - `common.SimpleDataSync`
+  - provider-specific `FindByName`
+
+This preserves the existing AWS managed test strategy and avoids adding a larger managed matrix than Secrets Manager v2 already has.
+
+### 4. Tests
+
+Add or update focused helper tests to verify:
+- Parameter Store v2 config generation picks the correct kind and auth fields for each profile
+- referenced IRSA store refs use cluster-provider kind where required
+- any new profile-specific config fields are wired as expected
+
+Verification commands for implementation should include:
+- focused `go test` for Parameter Store v2 helper packages
+- focused Parameter Store v2 v2 e2e runs using the existing `make` targets
+
+## Risks
+
+- assume-role coverage depends on the current static credentials being allowed to assume the expected roles; tests should skip cleanly when denied, matching Secrets Manager v2 behavior
+- mounted IRSA v2 coverage is sensitive to provider pod namespace/address wiring; reuse of the Secrets Manager v2 pattern should minimize divergence
+- Parameter Store remote key naming rules differ from Secrets Manager; existing Parameter Store path conventions should remain unchanged
+
+## Success Criteria
+
+This work is complete when:
+- Parameter Store v2 has the same auth profile coverage shape as Secrets Manager v2
+- Parameter Store v2 managed IRSA coverage exists and mirrors Secrets Manager v2
+- focused helper/unit tests pass
+- focused Parameter Store v2 e2e runs pass for the added coverage