Skip to content

Commit 70f88b9

Browse files
authored
chore(authorization): migrate to new sdk structure (#1488)
relates to STACKITCLI-354
1 parent b4c4d10 commit 70f88b9

19 files changed

Lines changed: 283 additions & 250 deletions

File tree

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ require (
1717
github.com/spf13/viper v1.21.0
1818
github.com/stackitcloud/stackit-sdk-go/core v0.26.0
1919
github.com/stackitcloud/stackit-sdk-go/services/alb v0.14.2
20-
github.com/stackitcloud/stackit-sdk-go/services/authorization v0.12.0
20+
github.com/stackitcloud/stackit-sdk-go/services/authorization v0.15.2
2121
github.com/stackitcloud/stackit-sdk-go/services/cdn v1.16.0
2222
github.com/stackitcloud/stackit-sdk-go/services/dns v0.21.0
2323
github.com/stackitcloud/stackit-sdk-go/services/edge v0.4.3

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -594,8 +594,8 @@ github.com/stackitcloud/stackit-sdk-go/core v0.26.0 h1:jQEb9gkehfp6VCP6TcYk7BI10
594594
github.com/stackitcloud/stackit-sdk-go/core v0.26.0/go.mod h1:WU1hhxnjXw2EV7CYa1nlEvNpMiRY6CvmIOaHuL3pOaA=
595595
github.com/stackitcloud/stackit-sdk-go/services/alb v0.14.2 h1:hGzfOJjlCRoFpri5eYIiwhE27qu02pKZLprKvbsTC/w=
596596
github.com/stackitcloud/stackit-sdk-go/services/alb v0.14.2/go.mod h1:eK6oRB5Tmpt6KbXQ4UYBGg2LgW5bPtVoncL9E8JSRww=
597-
github.com/stackitcloud/stackit-sdk-go/services/authorization v0.12.0 h1:HxPgBu04j5tj6nfZ2r0l6v4VXC0/tYOGe4sA5Addra8=
598-
github.com/stackitcloud/stackit-sdk-go/services/authorization v0.12.0/go.mod h1:uYI9pHAA2g84jJN25ejFUxa0/JtfpPZqMDkctQ1BzJk=
597+
github.com/stackitcloud/stackit-sdk-go/services/authorization v0.15.2 h1:b7WJ/vwxlVmNNX91kI3obqGcuoPAyaCbDL5aCMQ/sNg=
598+
github.com/stackitcloud/stackit-sdk-go/services/authorization v0.15.2/go.mod h1:T/JF25XGJ3GqER/1L2N//DgY8x5tY7gA3N+/0nvmOWY=
599599
github.com/stackitcloud/stackit-sdk-go/services/cdn v1.16.0 h1:Wqxx0PDTL2F5gqI5jjznuJY0TdqECltjA0aa/rHY63U=
600600
github.com/stackitcloud/stackit-sdk-go/services/cdn v1.16.0/go.mod h1:MHB1N3EQ9GuAduAQoNS+gb1MjrWJieszbpOso9TQv5s=
601601
github.com/stackitcloud/stackit-sdk-go/services/dns v0.21.0 h1:ZVkptfVCAqpaPWkE+WIopM9XdzqgbVcwmX5L1jZqqx8=

internal/cmd/organization/member/add/add.go

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,14 @@ import (
77
"github.com/stackitcloud/stackit-cli/internal/pkg/types"
88

99
"github.com/spf13/cobra"
10-
"github.com/stackitcloud/stackit-sdk-go/services/authorization"
10+
authorization "github.com/stackitcloud/stackit-sdk-go/services/authorization/v2api"
1111

1212
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
1313
"github.com/stackitcloud/stackit-cli/internal/pkg/examples"
1414
"github.com/stackitcloud/stackit-cli/internal/pkg/flags"
1515
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
1616
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
1717
"github.com/stackitcloud/stackit-cli/internal/pkg/services/authorization/client"
18-
"github.com/stackitcloud/stackit-cli/internal/pkg/utils"
1918
)
2019

2120
const (
@@ -30,9 +29,9 @@ const (
3029
type inputModel struct {
3130
*globalflags.GlobalFlagModel
3231

33-
OrganizationId *string
32+
OrganizationId string
3433
Subject string
35-
Role *string
34+
Role string
3635
}
3736

3837
func NewCmd(params *types.CmdParams) *cobra.Command {
@@ -59,7 +58,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
5958
return err
6059
}
6160

62-
prompt := fmt.Sprintf("Are you sure you want to add the %s role to %s on organization with ID %q?", *model.Role, model.Subject, *model.OrganizationId)
61+
prompt := fmt.Sprintf("Are you sure you want to add the %s role to %s on organization with ID %q?", model.Role, model.Subject, model.OrganizationId)
6362
err = params.Printer.PromptForConfirmation(prompt)
6463
if err != nil {
6564
return err
@@ -101,25 +100,25 @@ func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inpu
101100

102101
model := inputModel{
103102
GlobalFlagModel: globalFlags,
104-
OrganizationId: flags.FlagToStringPointer(p, cmd, organizationIdFlag),
103+
OrganizationId: flags.FlagToStringValue(p, cmd, organizationIdFlag),
105104
Subject: subject,
106-
Role: flags.FlagToStringPointer(p, cmd, roleFlag),
105+
Role: flags.FlagToStringValue(p, cmd, roleFlag),
107106
}
108107

109108
p.DebugInputModel(model)
110109
return &model, nil
111110
}
112111

113112
func buildRequest(ctx context.Context, model *inputModel, apiClient *authorization.APIClient) authorization.ApiAddMembersRequest {
114-
req := apiClient.AddMembers(ctx, *model.OrganizationId)
113+
req := apiClient.DefaultAPI.AddMembers(ctx, model.OrganizationId)
115114
req = req.AddMembersPayload(authorization.AddMembersPayload{
116-
Members: utils.Ptr([]authorization.Member{
115+
Members: []authorization.Member{
117116
{
118-
Subject: utils.Ptr(model.Subject),
117+
Subject: model.Subject,
119118
Role: model.Role,
120119
},
121-
}),
122-
ResourceType: utils.Ptr(organizationResourceType),
120+
},
121+
ResourceType: organizationResourceType,
123122
})
124123
return req
125124
}

internal/cmd/organization/member/add/add_test.go

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,18 @@ import (
44
"context"
55
"testing"
66

7-
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
8-
"github.com/stackitcloud/stackit-cli/internal/pkg/testutils"
9-
"github.com/stackitcloud/stackit-cli/internal/pkg/utils"
10-
117
"github.com/google/go-cmp/cmp"
128
"github.com/google/go-cmp/cmp/cmpopts"
13-
"github.com/stackitcloud/stackit-sdk-go/services/authorization"
9+
authorization "github.com/stackitcloud/stackit-sdk-go/services/authorization/v2api"
10+
11+
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
12+
"github.com/stackitcloud/stackit-cli/internal/pkg/testutils"
1413
)
1514

1615
type testCtxKey struct{}
1716

1817
var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo")
19-
var testClient = &authorization.APIClient{}
18+
var testClient = &authorization.APIClient{DefaultAPI: &authorization.DefaultAPIService{}}
2019
var testOrganizationID = "some-organization-id"
2120
var testSubject = "someone@domain.com"
2221
var testRole = "reader"
@@ -45,9 +44,9 @@ func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]st
4544
func fixtureInputModel(mods ...func(model *inputModel)) *inputModel {
4645
model := &inputModel{
4746
GlobalFlagModel: &globalflags.GlobalFlagModel{Verbosity: globalflags.VerbosityDefault},
48-
OrganizationId: utils.Ptr(testOrganizationID),
47+
OrganizationId: testOrganizationID,
4948
Subject: testSubject,
50-
Role: utils.Ptr(testRole),
49+
Role: testRole,
5150
}
5251
for _, mod := range mods {
5352
mod(model)
@@ -56,15 +55,15 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel {
5655
}
5756

5857
func fixtureRequest(mods ...func(request *authorization.ApiAddMembersRequest)) authorization.ApiAddMembersRequest {
59-
request := testClient.AddMembers(testCtx, testOrganizationID)
58+
request := testClient.DefaultAPI.AddMembers(testCtx, testOrganizationID)
6059
request = request.AddMembersPayload(authorization.AddMembersPayload{
61-
Members: utils.Ptr([]authorization.Member{
60+
Members: []authorization.Member{
6261
{
63-
Subject: &testSubject,
64-
Role: &testRole,
62+
Subject: testSubject,
63+
Role: testRole,
6564
},
66-
}),
67-
ResourceType: utils.Ptr(organizationResourceType),
65+
},
66+
ResourceType: organizationResourceType,
6867
})
6968

7069
for _, mod := range mods {
@@ -148,7 +147,7 @@ func TestBuildRequest(t *testing.T) {
148147

149148
diff := cmp.Diff(request, tt.expectedRequest,
150149
cmp.AllowUnexported(tt.expectedRequest),
151-
cmpopts.EquateComparable(testCtx),
150+
cmpopts.EquateComparable(testCtx, authorization.DefaultAPIService{}),
152151
)
153152
if diff != "" {
154153
t.Fatalf("Data does not match: %s", diff)

internal/cmd/organization/member/list/list.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"github.com/stackitcloud/stackit-cli/internal/pkg/types"
99

1010
"github.com/spf13/cobra"
11-
"github.com/stackitcloud/stackit-sdk-go/services/authorization"
11+
authorization "github.com/stackitcloud/stackit-sdk-go/services/authorization/v2api"
1212

1313
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
1414
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
@@ -18,7 +18,6 @@ import (
1818
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
1919
"github.com/stackitcloud/stackit-cli/internal/pkg/services/authorization/client"
2020
"github.com/stackitcloud/stackit-cli/internal/pkg/tables"
21-
"github.com/stackitcloud/stackit-cli/internal/pkg/utils"
2221
)
2322

2423
const (
@@ -39,7 +38,7 @@ var sortByFlag = flags.StringEnumFlag(
3938
type inputModel struct {
4039
*globalflags.GlobalFlagModel
4140

42-
OrganizationId *string
41+
OrganizationId string
4342
Subject *string
4443
Limit *int64
4544
SortBy string
@@ -81,18 +80,14 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
8180
if err != nil {
8281
return fmt.Errorf("list members: %w", err)
8382
}
84-
members := *resp.Members
85-
if len(members) == 0 {
86-
params.Printer.Info("No members found for organization with ID %q\n", *model.OrganizationId)
87-
return nil
88-
}
83+
members := resp.Members
8984

9085
// Truncate output
9186
if model.Limit != nil && len(members) > int(*model.Limit) {
9287
members = members[:*model.Limit]
9388
}
9489

95-
return outputResult(params.Printer, model.OutputFormat, model.SortBy, members)
90+
return outputResult(params.Printer, model.OutputFormat, model.OrganizationId, model.SortBy, members)
9691
},
9792
}
9893
configureFlags(cmd)
@@ -122,7 +117,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel,
122117

123118
model := inputModel{
124119
GlobalFlagModel: globalFlags,
125-
OrganizationId: flags.FlagToStringPointer(p, cmd, organizationIdFlag),
120+
OrganizationId: flags.FlagToStringValue(p, cmd, organizationIdFlag),
126121
Subject: flags.FlagToStringPointer(p, cmd, subjectFlag),
127122
Limit: flags.FlagToInt64Pointer(p, cmd, limitFlag),
128123
SortBy: sortByFlag.Get(),
@@ -133,27 +128,32 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel,
133128
}
134129

135130
func buildRequest(ctx context.Context, model *inputModel, apiClient *authorization.APIClient) authorization.ApiListMembersRequest {
136-
req := apiClient.ListMembers(ctx, organizationResourceType, *model.OrganizationId)
131+
req := apiClient.DefaultAPI.ListMembers(ctx, organizationResourceType, model.OrganizationId)
137132
if model.Subject != nil {
138133
req = req.Subject(*model.Subject)
139134
}
140135
return req
141136
}
142137

143-
func outputResult(p *print.Printer, outputFormat, sortBy string, members []authorization.Member) error {
138+
func outputResult(p *print.Printer, outputFormat, organizationId, sortBy string, members []authorization.Member) error {
144139
sortFn := func(i, j int) bool {
145140
switch sortBy {
146141
case "subject":
147-
return *members[i].Subject < *members[j].Subject
142+
return members[i].Subject < members[j].Subject
148143
case "role":
149-
return *members[i].Role < *members[j].Role
144+
return members[i].Role < members[j].Role
150145
default:
151146
return false
152147
}
153148
}
154149
sort.SliceStable(members, sortFn)
155150

156151
return p.OutputResult(outputFormat, members, func() error {
152+
if len(members) == 0 {
153+
p.Outputf("No members found for organization with ID %q\n", organizationId)
154+
return nil
155+
}
156+
157157
table := tables.NewTable()
158158
table.SetHeader("SUBJECT", "ROLE")
159159
for i := range members {
@@ -162,7 +162,7 @@ func outputResult(p *print.Printer, outputFormat, sortBy string, members []autho
162162
if i > 0 && sortFn(i-1, i) {
163163
table.AddSeparator()
164164
}
165-
table.AddRow(utils.PtrString(m.Subject), utils.PtrString(m.Role))
165+
table.AddRow(m.Subject, m.Role)
166166
}
167167

168168
switch sortBy {

internal/cmd/organization/member/list/list_test.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ import (
1111

1212
"github.com/google/go-cmp/cmp"
1313
"github.com/google/go-cmp/cmp/cmpopts"
14-
"github.com/stackitcloud/stackit-sdk-go/services/authorization"
14+
authorization "github.com/stackitcloud/stackit-sdk-go/services/authorization/v2api"
1515
)
1616

1717
type testCtxKey struct{}
1818

1919
var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo")
20-
var testClient = &authorization.APIClient{}
20+
var testClient = &authorization.APIClient{DefaultAPI: &authorization.DefaultAPIService{}}
2121
var testOrganizationID = "some-organization-id"
2222

2323
func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string {
@@ -34,7 +34,7 @@ func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]st
3434
func fixtureInputModel(mods ...func(model *inputModel)) *inputModel {
3535
model := &inputModel{
3636
GlobalFlagModel: &globalflags.GlobalFlagModel{Verbosity: globalflags.VerbosityDefault},
37-
OrganizationId: utils.Ptr(testOrganizationID),
37+
OrganizationId: testOrganizationID,
3838
Limit: utils.Ptr(int64(10)),
3939
SortBy: "subject",
4040
}
@@ -45,7 +45,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel {
4545
}
4646

4747
func fixtureRequest(mods ...func(request *authorization.ApiListMembersRequest)) authorization.ApiListMembersRequest {
48-
request := testClient.ListMembers(testCtx, organizationResourceType, testOrganizationID)
48+
request := testClient.DefaultAPI.ListMembers(testCtx, organizationResourceType, testOrganizationID)
4949
for _, mod := range mods {
5050
mod(&request)
5151
}
@@ -156,7 +156,7 @@ func TestBuildRequest(t *testing.T) {
156156

157157
diff := cmp.Diff(request, tt.expectedRequest,
158158
cmp.AllowUnexported(tt.expectedRequest),
159-
cmpopts.EquateComparable(testCtx),
159+
cmpopts.EquateComparable(testCtx, authorization.DefaultAPIService{}),
160160
)
161161
if diff != "" {
162162
t.Fatalf("Data does not match: %s", diff)
@@ -167,9 +167,10 @@ func TestBuildRequest(t *testing.T) {
167167

168168
func TestOutputResult(t *testing.T) {
169169
type args struct {
170-
outputFormat string
171-
sortBy string
172-
members []authorization.Member
170+
outputFormat string
171+
organizationId string
172+
sortBy string
173+
members []authorization.Member
173174
}
174175
tests := []struct {
175176
name string
@@ -199,7 +200,7 @@ func TestOutputResult(t *testing.T) {
199200
params := testparams.NewTestParams()
200201
for _, tt := range tests {
201202
t.Run(tt.name, func(t *testing.T) {
202-
if err := outputResult(params.Printer, tt.args.outputFormat, tt.args.sortBy, tt.args.members); (err != nil) != tt.wantErr {
203+
if err := outputResult(params.Printer, tt.args.outputFormat, tt.args.organizationId, tt.args.sortBy, tt.args.members); (err != nil) != tt.wantErr {
203204
t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr)
204205
}
205206
})

0 commit comments

Comments
 (0)