Summary
Add support for Google Cloud and Azure secret/config management services, making suve a truly unified tool across cloud providers.
Target Services
Implementation Roadmap
Phase A: Foundation (Complete ✅)
Phase B: AWS Refactoring (In Progress)
Migrate UseCase/Staging layers from paramapi.*/secretapi.* to provider.* interfaces.
Phase C: Multi-cloud (Future)
PR Plan Details
PR #2: Read UseCase Migration
Files:
internal/usecase/param/show.go, log.go, list.go, diff.go
internal/usecase/secret/show.go, log.go, list.go, diff.go
Interface mapping:
| Old |
New |
paramapi.GetParameterAPI |
provider.ParameterReader.GetParameter |
paramapi.GetParameterHistoryAPI |
provider.ParameterReader.GetParameterHistory |
paramapi.DescribeParametersAPI |
provider.ParameterReader.ListParameters |
secretapi.GetSecretValueAPI |
provider.SecretReader.GetSecret |
secretapi.ListSecretVersionIDsAPI |
provider.SecretReader.GetSecretVersions |
secretapi.ListSecretsAPI |
provider.SecretReader.ListSecrets |
secretapi.DescribeSecretAPI |
provider.SecretDescriber.DescribeSecret |
PR #3: Write UseCase Migration
Files:
internal/usecase/param/create.go, update.go, delete.go
internal/usecase/secret/create.go, update.go, delete.go, restore.go
PR #4: Staging Strategy Migration
Files:
internal/staging/param.go, secret.go
internal/staging/cli/*.go
internal/cli/commands/stage/param/, secret/
PR #5: Version Resolution Abstraction
Provider-agnostic version resolution interface:
type VersionSpec interface {
Name() string
HasAbsolute() bool
Shift() int
}
type VersionResolver interface {
ResolveVersion(ctx context.Context, spec VersionSpec) (string, error)
}
Dependency Graph
[Phase A: Complete] ✅
|
+---> PR #2 (Read UseCase)
| |
| +---> PR #5 (Version Resolution)
|
+---> PR #3 (Write UseCase)
|
+---> PR #4 (Staging Strategy)
|
+---> Phase C (Multi-cloud)
CLI Structure (Future)
# AWS: --region required
suve aws --region=ap-northeast-1 param show /my/param
suve aws --region=ap-northeast-1 secret show my-secret
# Google Cloud: --project required
suve gcloud --project=my-project secret show my-secret
# Azure: --resource-group, --vault/--store required
suve azure --resource-group=my-rg keyvault --vault=my-vault show my-secret
suve azure --resource-group=my-rg appconfig --store=my-store show my-key
References
Summary
Add support for Google Cloud and Azure secret/config management services, making suve a truly unified tool across cloud providers.
Target Services
Implementation Roadmap
Phase A: Foundation (Complete ✅)
Phase B: AWS Refactoring (In Progress)
Migrate UseCase/Staging layers from
paramapi.*/secretapi.*toprovider.*interfaces.show,log,list,diff)create,update,delete,restore)internal/apiPhase C: Multi-cloud (Future)
PR Plan Details
PR #2: Read UseCase Migration
Files:
internal/usecase/param/show.go,log.go,list.go,diff.gointernal/usecase/secret/show.go,log.go,list.go,diff.goInterface mapping:
paramapi.GetParameterAPIprovider.ParameterReader.GetParameterparamapi.GetParameterHistoryAPIprovider.ParameterReader.GetParameterHistoryparamapi.DescribeParametersAPIprovider.ParameterReader.ListParameterssecretapi.GetSecretValueAPIprovider.SecretReader.GetSecretsecretapi.ListSecretVersionIDsAPIprovider.SecretReader.GetSecretVersionssecretapi.ListSecretsAPIprovider.SecretReader.ListSecretssecretapi.DescribeSecretAPIprovider.SecretDescriber.DescribeSecretPR #3: Write UseCase Migration
Files:
internal/usecase/param/create.go,update.go,delete.gointernal/usecase/secret/create.go,update.go,delete.go,restore.goPR #4: Staging Strategy Migration
Files:
internal/staging/param.go,secret.gointernal/staging/cli/*.gointernal/cli/commands/stage/param/,secret/PR #5: Version Resolution Abstraction
Provider-agnostic version resolution interface:
Dependency Graph
CLI Structure (Future)
References