feat(site): manage metadata with write-only bootstrap credentials #5

Merged
Andreas merged 1 commit from feat/site-resource into main 2026-10-02 12:58:46 +00:00
Owner

Implements a controller-scoped omada_site resource without touching production or transferring ownership.

  • Basic-site creation uses creation-only write-only device credentials; metadata import/update never writes device credentials. Rotation is deliberately unsupported pending a verified contract.
  • Complete bounded inventory reads, identity validation and error-state retention; metadata patches preserve unmodeled settings.
  • Deletion refuses primary, non-empty and unknown inventories, never force-deletes, and verifies disappearance. Concurrent adoption must still be prevented operationally.
  • Generated examples/docs and candidate mirror version 0.13.1-homelab.2. Existing prerelease stays immutable; no automatic production release/deploy.

Validation: full Terraform 1.16.4 and deployed OpenTofu 1.12.1 mock suites, vet, golangci-lint 2.12.2, govulncheck, and generated docs pass. Both engines also passed real isolated exact-controller 6.3.0.45 import/no-op/in-place rename/no-op/destroy, credential absence in serialized state/plans, and preservation of device account and unmodeled metadata. Controller is network-none with disposable volumes, no production credentials/backend.

Limitations and remaining ownership-transfer/trust gates are explicit in SITE_BOOTSTRAP_PROOF.md. Real provider-driven creation and least-privilege service account remain separate proofs; the real import fixture was created by the typed client.

Follow-up for issue #3.

Implements a controller-scoped omada_site resource without touching production or transferring ownership. - Basic-site creation uses creation-only write-only device credentials; metadata import/update never writes device credentials. Rotation is deliberately unsupported pending a verified contract. - Complete bounded inventory reads, identity validation and error-state retention; metadata patches preserve unmodeled settings. - Deletion refuses primary, non-empty and unknown inventories, never force-deletes, and verifies disappearance. Concurrent adoption must still be prevented operationally. - Generated examples/docs and candidate mirror version 0.13.1-homelab.2. Existing prerelease stays immutable; no automatic production release/deploy. Validation: full Terraform 1.16.4 and deployed OpenTofu 1.12.1 mock suites, vet, golangci-lint 2.12.2, govulncheck, and generated docs pass. Both engines also passed real isolated exact-controller 6.3.0.45 import/no-op/in-place rename/no-op/destroy, credential absence in serialized state/plans, and preservation of device account and unmodeled metadata. Controller is network-none with disposable volumes, no production credentials/backend. Limitations and remaining ownership-transfer/trust gates are explicit in SITE_BOOTSTRAP_PROOF.md. Real provider-driven creation and least-privilege service account remain separate proofs; the real import fixture was created by the typed client. Follow-up for issue #3.
feat(site): manage metadata with write-only bootstrap credentials
All checks were successful
Validate and package Omada provider / provider (pull_request) Successful in 3m56s
Validate and package Omada provider / provider (push) Successful in 3m51s
4d15a73840
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Andreas/terraform-provider-omada!5
No description provided.