You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Expose organization-scoped API key metadata without admitting plaintext or API key lifecycle into Terraform. Use the tagged SDK's paginated search and enforce exact-name identity in the provider, with focused unit and opt-in acceptance coverage.
Copy file name to clipboardExpand all lines: docs/acceptance.md
+3-2Lines changed: 3 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -50,15 +50,15 @@ Actions secrets and must not be printed.
50
50
|`kernel_proxy` data source | Test present | A uniquely created managed datacenter proxy is read by canonical ID and exact name through explicit and provider-default project scope; durable type/protocol metadata, no-drift planning, and post-cleanup coded `not_found` are verified without fixture credentials. | None. |
51
51
|`kernel_app` data source | Test present | A release-owned running app version is read by exact name/version through explicit and provider-default project scope; canonical deployment metadata and no-drift planning are verified without invocation. Unit coverage verifies action-name and environment-key flattening without environment values. | Keep `KERNEL_ACC_APP_NAME` and `KERNEL_ACC_APP_VERSION` pointed at exactly one running app version in the acceptance project. |
52
52
|`kernel_deployment` data source | Test present | The deployment backing the release-owned app fixture is read by canonical ID through explicit and provider-default project scope; direct GET metadata and no-drift planning are verified without logs or event streams. Unit coverage verifies that only environment variable names enter state. | Keep the release-owned app fixture running so its deployment ID remains readable. |
53
-
|`kernel_api_key` data source |Deferred; unregistered|No provider surface yet. | Wait for a tagged SDK with exact-name filtering, then add masked ID/name lookup acceptance. |
53
+
|`kernel_api_key` data source |Test present|A uniquely created project-scoped key is read by canonical ID and byte-exact name; masked metadata, no plaintext state, ambiguity behavior, no-drift planning, cleanup, and coded post-cleanup absence are covered. | Run with an organization-wide administrative `KERNEL_API_KEY`; project-scoped credentials cannot create or delete the fixture. |
54
54
| Profile, proxy, deployment, and API-key resources | Deferred; unregistered | No provider surfaces yet. | Enter the matrix only after their documented API/SDK/state blockers are resolved and implementation lands. |
55
55
56
56
"Test present" describes code in the repository; it does not claim a run
57
57
against the release commit. The release record below supplies that evidence.
58
58
59
59
## Current Commands
60
60
61
-
Run the ten existing packages independently for fast failure isolation:
61
+
Run the eleven existing packages independently for fast failure isolation:
62
62
63
63
```sh
64
64
go test -count=1 -timeout=30m -v ./internal/resources/project -run TestAcc
@@ -69,6 +69,7 @@ go test -count=1 -timeout=30m -v ./internal/datasources/extension -run TestAcc
69
69
go test -count=1 -timeout=30m -v ./internal/datasources/profile -run TestAcc
70
70
go test -count=1 -timeout=30m -v ./internal/datasources/proxy -run TestAcc
71
71
go test -count=1 -timeout=30m -v ./internal/datasources/app -run TestAcc
72
+
go test -count=1 -timeout=30m -v ./internal/datasources/apikey -run TestAcc
72
73
go test -count=1 -timeout=30m -v ./internal/datasources/deployment -run TestAcc
73
74
go test -count=1 -timeout=30m -v ./internal/datasources/browserpool -run TestAcc
Copy file name to clipboardExpand all lines: docs/architecture.md
+5-4Lines changed: 5 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -56,6 +56,7 @@ Core v1 resources:
56
56
57
57
Core v1 data sources:
58
58
59
+
-`kernel_api_key`
59
60
-`kernel_project`
60
61
-`kernel_browser_pool`
61
62
-`kernel_profile`
@@ -67,17 +68,17 @@ Core v1 data sources:
67
68
Late or conditional v1 work:
68
69
69
70
-`kernel_proxy` resource, after write-only credential/import semantics are accepted and a tagged SDK exposes in-place rename
70
-
- masked `kernel_api_key` metadata lookup
71
71
-`kernel_api_key` resource, only after plaintext-once, retry, rotation, import, and provider self-use semantics are accepted
72
72
- project limits, only after their lifecycle is clearly separate from basic project management
73
73
74
74
Blocked candidates must remain unimplemented until the API and a tagged SDK expose the required durable contract. Provider code must not guess missing semantics, patch generated SDK code, or add a fallback HTTP client to bypass the durable client module.
75
75
76
76
The accepted plaintext, import, rotation, and self-use model for API keys is
77
77
defined in [API Key Terraform State Design](api-key-state.md). The masked data
78
-
source may proceed after the exact-name SDK surface is tagged. The resource
79
-
remains blocked on replayable Create/Rotate idempotency and a current-key
80
-
rotation guard with effective authenticated project-scope metadata.
78
+
source scans the tagged SDK's paginated query results and enforces byte-exact
79
+
name equality in provider code. The resource remains blocked on replayable
80
+
Create/Rotate idempotency and a current-key rotation guard with effective
81
+
authenticated project-scope metadata.
81
82
82
83
`kernel_deployment` remains core v1 scope but is currently blocked until a
83
84
tagged SDK exposes source provenance, the API supports deterministic durable
Copy file name to clipboardExpand all lines: docs/release.md
+5-4Lines changed: 5 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,13 +23,14 @@ Use this checklist before publishing a Kernel Terraform provider version.
23
23
- Review the [v1 migration guide](migration-v1.md) and include it in the release notes.
24
24
- Use the commands and status table in `docs/acceptance.md` as the single source of truth. The manual `Acceptance` workflow runs all current packages in parallel; add each new package in the same PR as its first live test and keep live tests out of normal PR CI.
25
25
- Process-level timeouts can bypass Go test cleanup. After an interrupted or hard-timeout run:
26
-
1. In the Kernel dashboard or durable API, find projects, browser pools, extensions, profiles, and proxies named `kernel-tf-*` that were created during the failed workflow run.
26
+
1. In the Kernel dashboard or durable API, find projects, browser pools, extensions, profiles, proxies, and API keys named `kernel-tf-*` that were created during the failed workflow run.
27
27
2. Delete leaked browser pools first with `force=false`. If deletion conflicts with a lease, wait for the lease to end; do not force-release or recover the browser from Terraform cleanup.
28
28
3. Delete leaked extensions after removing any durable browser-pool references to them. Do not mutate pools or running browsers implicitly.
29
29
4. Delete leaked profiles and managed datacenter proxies after removing durable references. Do not run proxy health checks as cleanup.
30
-
5. Delete a leaked project only after its child resources are gone and the organization still has another active project.
31
-
6. Do not delete the release-owned app fixture; it is not created by the acceptance run.
32
-
7. Read each test-owned canonical resource ID and require a 404 before considering cleanup complete.
30
+
5. Delete leaked API keys with an organization-wide administrative key. Never delete the credential running the acceptance workflow.
31
+
6. Delete a leaked project only after its child resources are gone and the organization still has another active project.
32
+
7. Do not delete the release-owned app fixture; it is not created by the acceptance run.
33
+
8. Read each test-owned canonical resource ID and require a 404 before considering cleanup complete.
33
34
- Verify unscoped API calls send no `X-Kernel-Project-Id` header; it is sent only when a resource-level `project_id` or the provider default resolves a project.
34
35
- Confirm `terraform-registry-manifest.json` contains protocol `["6.0"]` for Terraform Plugin Framework.
35
36
- Confirm the repository license before the first public release. The release workflow fails unless a non-empty `LICENSE` exists.
0 commit comments