Skip to content

Commit 78a4ebb

Browse files
authored
feat(apply): allow provider as a flag (#60)
1 parent 84fff2b commit 78a4ebb

File tree

3 files changed

+14
-1
lines changed

3 files changed

+14
-1
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,4 @@ lint:
2323
format:
2424
go fmt ./...
2525

26-
.PHONY: build install test clean lint format
26+
.PHONY: build install test clean lint format

cmd/ctrlc/root/apply/cmd.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
func NewApplyCmd() *cobra.Command {
2121
var filePatterns []string
2222
var selectorRaw string
23+
var providerName string
2324

2425
cmd := &cobra.Command{
2526
Use: "apply",
@@ -46,8 +47,12 @@ func NewApplyCmd() *cobra.Command {
4647

4748
cmd.Flags().StringArrayVarP(&filePatterns, "file", "f", nil, "Path or glob pattern to YAML files (can be specified multiple times, prefix with ! to exclude)")
4849
cmd.Flags().StringVar(&selectorRaw, "selector", "", "Metadata selector in key=value format to apply to created resources")
50+
cmd.Flags().StringVarP(&providerName, "provider", "p", "ctrlc-apply", "Name of the resource provider")
4951
cmd.MarkFlagRequired("file")
5052

53+
viper.BindPFlag("provider", cmd.Flags().Lookup("provider"))
54+
viper.BindEnv("provider", "CTRLPLANE_PROVIDER")
55+
5156
return cmd
5257
}
5358

@@ -64,6 +69,7 @@ func runApply(ctx context.Context, filePatterns []string, selectorRaw string) er
6469
apiURL := viper.GetString("url")
6570
apiKey := viper.GetString("api-key")
6671
workspace := viper.GetString("workspace")
72+
providerName := viper.GetString("provider")
6773

6874
client, err := api.NewAPIKeyClientWithResponses(apiURL, apiKey)
6975
if err != nil {
@@ -109,6 +115,10 @@ func runApply(ctx context.Context, filePatterns []string, selectorRaw string) er
109115
for _, ts := range sortedSpecs {
110116
if ts.Type == "Resource" {
111117
if spec, ok := ts.Spec.(*providers.ResourceItemSpec); ok {
118+
if spec.Provider == "" {
119+
log.Debug("Updating resource provider", "from", spec.Provider, "to", providerName)
120+
spec.Provider = providerName
121+
}
112122
resourceSpecs = append(resourceSpecs, spec)
113123
continue
114124
}

internal/api/providers/resource.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"time"
77

88
"github.com/avast/retry-go"
9+
"github.com/charmbracelet/log"
910
"github.com/ctrlplanedev/cli/internal/api"
1011
"gopkg.in/yaml.v3"
1112
)
@@ -163,6 +164,7 @@ func BatchUpsertResources(ctx Context, specs []*ResourceItemSpec) []Result {
163164
for _, spec := range specs {
164165
providerName := spec.Provider
165166
if providerName == "" {
167+
log.Debug("Using ctrlc-apply providerName")
166168
providerName = "ctrlc-apply"
167169
}
168170
byProvider[providerName] = append(byProvider[providerName], spec)
@@ -205,6 +207,7 @@ func BatchUpsertResources(ctx Context, specs []*ResourceItemSpec) []Result {
205207
}
206208

207209
// Single API call for all resources under this provider
210+
log.Debug("Upserting resources", "workspaceID", ctx.WorkspaceIDValue(), "provider", providerName, "providerID", providerID)
208211
resp, err := ctx.APIClient().SetResourceProviderResourcesWithResponse(
209212
ctx.Ctx(), ctx.WorkspaceIDValue(), providerID,
210213
api.SetResourceProviderResourcesJSONRequestBody{Resources: apiResources},

0 commit comments

Comments
 (0)