Skip to content

Commit cf8affe

Browse files
author
Yago Carlos Fernandez Gou
committed
Bump Intake OpenAPI to 0.2.0 and address update fixes
1 parent 669dbb9 commit cf8affe

File tree

4 files changed

+83
-4
lines changed

4 files changed

+83
-4
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ require (
2121
github.com/stackitcloud/stackit-sdk-go/services/dns v0.17.1
2222
github.com/stackitcloud/stackit-sdk-go/services/git v0.7.1
2323
github.com/stackitcloud/stackit-sdk-go/services/iaas v0.30.0
24-
github.com/stackitcloud/stackit-sdk-go/services/intake v0.1.1
24+
github.com/stackitcloud/stackit-sdk-go/services/intake v0.2.0
2525
github.com/stackitcloud/stackit-sdk-go/services/mongodbflex v1.5.2
2626
github.com/stackitcloud/stackit-sdk-go/services/opensearch v0.24.1
2727
github.com/stackitcloud/stackit-sdk-go/services/postgresflex v1.2.1

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -579,6 +579,8 @@ github.com/stackitcloud/stackit-sdk-go/services/intake v0.1.0 h1:IhswZoEHqkBW60w
579579
github.com/stackitcloud/stackit-sdk-go/services/intake v0.1.0/go.mod h1:vRnT3zxWJ1k7wbAk8JmO0xFmPhmeos5HTIWdsVAAoKU=
580580
github.com/stackitcloud/stackit-sdk-go/services/intake v0.1.1 h1:qKAGtRfnB89vXom5mIwctMHFeznMQWXJd3cqQBURIK8=
581581
github.com/stackitcloud/stackit-sdk-go/services/intake v0.1.1/go.mod h1:jOArPjNRkwv4487+9ab3dRG+lM09leu5FiRohbQs9Z4=
582+
github.com/stackitcloud/stackit-sdk-go/services/intake v0.2.0 h1:p/zi4VPoCQWk7/2ubi3hxsqiaye41x/Pl3GXYbPkYOY=
583+
github.com/stackitcloud/stackit-sdk-go/services/intake v0.2.0/go.mod h1:jOArPjNRkwv4487+9ab3dRG+lM09leu5FiRohbQs9Z4=
582584
github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.5.1 h1:OdJEs8eOfrzn9tCBDLxIyP8hX50zPfcXNYnRoQX+chs=
583585
github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.5.1/go.mod h1:11uzaOPCF9SeDHXEGOPMlHDD3J5r2TnvCGUwW9Igq9c=
584586
github.com/stackitcloud/stackit-sdk-go/services/logme v0.25.1 h1:hv5WrRU9rN6Jx4OwdOGJRyaQrfA9p1tzEoQK6/CDyoA=

internal/cmd/intake/runner/update/update.go

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@ package update
22

33
import (
44
"context"
5+
"encoding/json"
56
"fmt"
7+
"github.com/goccy/go-yaml"
8+
"github.com/stackitcloud/stackit-cli/internal/pkg/projectname"
69

710
"github.com/spf13/cobra"
811

@@ -70,14 +73,20 @@ func NewUpdateCmd(p *params.CmdParams) *cobra.Command {
7073
return err
7174
}
7275

76+
projectLabel, err := projectname.GetProjectName(ctx, p.Printer, p.CliVersion, cmd)
77+
if err != nil {
78+
p.Printer.Debug(print.ErrorLevel, "get project name: %v", err)
79+
projectLabel = model.ProjectId
80+
}
81+
7382
// Call API
7483
req := buildRequest(ctx, model, apiClient)
75-
if err := req.Execute(); err != nil {
84+
resp, err := req.Execute()
85+
if err != nil {
7686
return fmt.Errorf("update Intake Runner: %w", err)
7787
}
7888

79-
p.Printer.Info("Update request for Intake Runner %q sent successfully.\n", model.RunnerId)
80-
return nil
89+
return outputResult(p.Printer, model.OutputFormat, projectLabel, resp)
8190
},
8291
}
8392
configureFlags(cmd)
@@ -149,3 +158,27 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *intake.APIC
149158
req = req.UpdateIntakeRunnerPayload(payload)
150159
return req
151160
}
161+
162+
func outputResult(p *print.Printer, outputFormat, projectLabel string, resp *intake.IntakeRunnerResponse) error {
163+
switch outputFormat {
164+
case print.JSONOutputFormat:
165+
details, err := json.MarshalIndent(resp, "", " ")
166+
if err != nil {
167+
return fmt.Errorf("marshal instance: %w", err)
168+
}
169+
p.Outputln(string(details))
170+
171+
return nil
172+
case print.YAMLOutputFormat:
173+
details, err := yaml.MarshalWithOptions(resp, yaml.IndentSequence(true), yaml.UseJSONMarshaler())
174+
if err != nil {
175+
return fmt.Errorf("marshal instance: %w", err)
176+
}
177+
p.Outputln(string(details))
178+
179+
return nil
180+
default:
181+
p.Outputf("Updated Intake Runner for project %q. Runner ID: %s\n", projectLabel, utils.PtrString(resp.Id))
182+
return nil
183+
}
184+
}

internal/cmd/intake/runner/update/update_test.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,3 +247,47 @@ func TestBuildRequest(t *testing.T) {
247247
})
248248
}
249249
}
250+
251+
func TestOutputResult(t *testing.T) {
252+
type args struct {
253+
outputFormat string
254+
projectLabel string
255+
runnerId string
256+
resp *intake.IntakeRunnerResponse
257+
}
258+
tests := []struct {
259+
name string
260+
args args
261+
wantErr bool
262+
}{
263+
{
264+
name: "default output",
265+
args: args{outputFormat: "default", projectLabel: "my-project", runnerId: "runner-id-123", resp: &intake.IntakeRunnerResponse{}},
266+
wantErr: false,
267+
},
268+
{
269+
name: "json output",
270+
args: args{outputFormat: print.JSONOutputFormat, resp: &intake.IntakeRunnerResponse{Id: utils.Ptr("runner-id-123")}},
271+
wantErr: false,
272+
},
273+
{
274+
name: "yaml output",
275+
args: args{outputFormat: print.YAMLOutputFormat, resp: &intake.IntakeRunnerResponse{Id: utils.Ptr("runner-id-123")}},
276+
wantErr: false,
277+
},
278+
{
279+
name: "nil response",
280+
args: args{outputFormat: print.JSONOutputFormat, resp: nil},
281+
wantErr: false,
282+
},
283+
}
284+
p := print.NewPrinter()
285+
p.Cmd = NewUpdateCmd(&params.CmdParams{Printer: p})
286+
for _, tt := range tests {
287+
t.Run(tt.name, func(t *testing.T) {
288+
if err := outputResult(p, tt.args.outputFormat, tt.args.projectLabel, tt.args.resp); (err != nil) != tt.wantErr {
289+
t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr)
290+
}
291+
})
292+
}
293+
}

0 commit comments

Comments
 (0)