Skip to content

Commit bc8bc1b

Browse files
fix(objectstorage): check service enablement only if initial service call fails
Relates to STACKITCLI-426
1 parent 8c9edfa commit bc8bc1b

9 files changed

Lines changed: 93 additions & 44 deletions

File tree

internal/cmd/object-storage/bucket/create/create.go

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -65,21 +65,20 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
6565
return err
6666
}
6767

68-
// Check if the project is enabled before trying to create
69-
enabled, err := utils.ProjectEnabled(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region)
70-
if err != nil {
71-
return fmt.Errorf("check if Object Storage is enabled: %w", err)
72-
}
73-
if !enabled {
74-
return &errors.ServiceDisabledError{
75-
Service: "object-storage",
76-
}
77-
}
78-
7968
// Call API
8069
req := buildRequest(ctx, model, apiClient)
8170
resp, err := req.Execute()
8271
if err != nil {
72+
// Check if the service is enabled for the given project
73+
enabled, enabledErr := utils.ProjectEnabled(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region)
74+
if enabledErr != nil {
75+
return fmt.Errorf("check if Object Storage is enabled: %w", enabledErr)
76+
}
77+
if !enabled {
78+
return &errors.ServiceDisabledError{
79+
Service: "object-storage",
80+
}
81+
}
8382
return fmt.Errorf("create Object Storage bucket: %w", err)
8483
}
8584

internal/cmd/object-storage/bucket/list/list.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
1818
"github.com/stackitcloud/stackit-cli/internal/pkg/projectname"
1919
"github.com/stackitcloud/stackit-cli/internal/pkg/services/object-storage/client"
20+
"github.com/stackitcloud/stackit-cli/internal/pkg/services/object-storage/utils"
2021
"github.com/stackitcloud/stackit-cli/internal/pkg/tables"
2122
)
2223

@@ -63,6 +64,16 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
6364
req := buildRequest(ctx, model, apiClient)
6465
resp, err := req.Execute()
6566
if err != nil {
67+
// Check if the service is enabled for the given project
68+
enabled, enabledErr := utils.ProjectEnabled(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region)
69+
if enabledErr != nil {
70+
return fmt.Errorf("check if Object Storage is enabled: %w", enabledErr)
71+
}
72+
if !enabled {
73+
return &errors.ServiceDisabledError{
74+
Service: "object-storage",
75+
}
76+
}
6677
return fmt.Errorf("get Object Storage buckets: %w", err)
6778
}
6879
buckets := resp.GetBuckets()

internal/cmd/object-storage/compliance-lock/describe/describe.go

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -46,21 +46,20 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
4646
return err
4747
}
4848

49-
// Check if the project is enabled before trying to describe
50-
enabled, err := objectStorageUtils.ProjectEnabled(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region)
51-
if err != nil {
52-
return fmt.Errorf("check if Object Storage is enabled: %w", err)
53-
}
54-
if !enabled {
55-
return &errors.ServiceDisabledError{
56-
Service: "object-storage",
57-
}
58-
}
59-
6049
// Call API
6150
req := buildRequest(ctx, model, apiClient)
6251
resp, err := req.Execute()
6352
if err != nil {
53+
// Check if the service is enabled for the given project
54+
enabled, enabledErr := objectStorageUtils.ProjectEnabled(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region)
55+
if enabledErr != nil {
56+
return fmt.Errorf("check if Object Storage is enabled: %w", enabledErr)
57+
}
58+
if !enabled {
59+
return &errors.ServiceDisabledError{
60+
Service: "object-storage",
61+
}
62+
}
6463
return fmt.Errorf("get object storage compliance lock: %w", err)
6564
}
6665

internal/cmd/object-storage/compliance-lock/lock/lock.go

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -61,21 +61,20 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
6161
return err
6262
}
6363

64-
// Check if the project is enabled before trying to create
65-
enabled, err := utils.ProjectEnabled(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region)
66-
if err != nil {
67-
return fmt.Errorf("check if Object Storage is enabled: %w", err)
68-
}
69-
if !enabled {
70-
return &errors.ServiceDisabledError{
71-
Service: "object-storage",
72-
}
73-
}
74-
7564
// Call API
7665
req := buildRequest(ctx, model, apiClient)
7766
resp, err := req.Execute()
7867
if err != nil {
68+
// Check if the service is enabled for the given project
69+
enabled, enabledErr := utils.ProjectEnabled(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region)
70+
if enabledErr != nil {
71+
return fmt.Errorf("check if Object Storage is enabled: %w", enabledErr)
72+
}
73+
if !enabled {
74+
return &errors.ServiceDisabledError{
75+
Service: "object-storage",
76+
}
77+
}
7978
return fmt.Errorf("create object storage compliance lock: %w", err)
8079
}
8180

internal/cmd/object-storage/compliance-lock/unlock/unlock.go

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -61,20 +61,19 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
6161
return err
6262
}
6363

64-
// Check if the project is enabled before trying to create
65-
enabled, err := utils.ProjectEnabled(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region)
66-
if err != nil {
67-
return fmt.Errorf("check if Object Storage is enabled: %w", err)
68-
}
69-
if !enabled {
70-
return &errors.ServiceDisabledError{
71-
Service: "object-storage",
72-
}
73-
}
74-
7564
// Call API
7665
_, err = buildRequest(ctx, model, apiClient).Execute()
7766
if err != nil {
67+
// Check if the service is enabled for the given project
68+
enabled, enabledErr := utils.ProjectEnabled(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region)
69+
if enabledErr != nil {
70+
return fmt.Errorf("check if Object Storage is enabled: %w", enabledErr)
71+
}
72+
if !enabled {
73+
return &errors.ServiceDisabledError{
74+
Service: "object-storage",
75+
}
76+
}
7877
return fmt.Errorf("delete object storage compliance lock: %w", err)
7978
}
8079

internal/cmd/object-storage/credentials-group/create/create.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
1717
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
1818
"github.com/stackitcloud/stackit-cli/internal/pkg/services/object-storage/client"
19+
"github.com/stackitcloud/stackit-cli/internal/pkg/services/object-storage/utils"
1920
)
2021

2122
const (
@@ -61,6 +62,16 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
6162
req := buildRequest(ctx, model, apiClient)
6263
resp, err := req.Execute()
6364
if err != nil {
65+
// Check if the service is enabled for the given project
66+
enabled, enabledErr := utils.ProjectEnabled(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region)
67+
if enabledErr != nil {
68+
return fmt.Errorf("check if Object Storage is enabled: %w", enabledErr)
69+
}
70+
if !enabled {
71+
return &errors.ServiceDisabledError{
72+
Service: "object-storage",
73+
}
74+
}
6475
return fmt.Errorf("create Object Storage credentials group: %w", err)
6576
}
6677

internal/cmd/object-storage/credentials-group/list/list.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
1717
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
1818
"github.com/stackitcloud/stackit-cli/internal/pkg/services/object-storage/client"
19+
"github.com/stackitcloud/stackit-cli/internal/pkg/services/object-storage/utils"
1920
"github.com/stackitcloud/stackit-cli/internal/pkg/tables"
2021
)
2122

@@ -62,6 +63,16 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
6263
req := buildRequest(ctx, model, apiClient)
6364
resp, err := req.Execute()
6465
if err != nil {
66+
// Check if the service is enabled for the given project
67+
enabled, enabledErr := utils.ProjectEnabled(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region)
68+
if enabledErr != nil {
69+
return fmt.Errorf("check if Object Storage is enabled: %w", enabledErr)
70+
}
71+
if !enabled {
72+
return &errors.ServiceDisabledError{
73+
Service: "object-storage",
74+
}
75+
}
6576
return fmt.Errorf("list Object Storage credentials groups: %w", err)
6677
}
6778
credentialsGroups := resp.GetCredentialsGroups()

internal/cmd/object-storage/credentials/create/create.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,16 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
7676
req := buildRequest(ctx, model, apiClient)
7777
resp, err := req.Execute()
7878
if err != nil {
79+
// Check if the service is enabled for the given project
80+
enabled, enabledErr := objectStorageUtils.ProjectEnabled(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region)
81+
if enabledErr != nil {
82+
return fmt.Errorf("check if Object Storage is enabled: %w", enabledErr)
83+
}
84+
if !enabled {
85+
return &errors.ServiceDisabledError{
86+
Service: "object-storage",
87+
}
88+
}
7989
return fmt.Errorf("create Object Storage credentials: %w", err)
8090
}
8191

internal/cmd/object-storage/credentials/list/list.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,16 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
6565
req := buildRequest(ctx, model, apiClient)
6666
resp, err := req.Execute()
6767
if err != nil {
68+
// Check if the service is enabled for the given project
69+
enabled, enabledErr := objectStorageUtils.ProjectEnabled(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region)
70+
if enabledErr != nil {
71+
return fmt.Errorf("check if Object Storage is enabled: %w", enabledErr)
72+
}
73+
if !enabled {
74+
return &errors.ServiceDisabledError{
75+
Service: "object-storage",
76+
}
77+
}
6878
return fmt.Errorf("list Object Storage credentials: %w", err)
6979
}
7080
credentials := resp.GetAccessKeys()

0 commit comments

Comments
 (0)