Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/stackit_load-balancer_create.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Creates a Load Balancer

Creates a Load Balancer.
The payload can be provided as a JSON string or a file path prefixed with "@".
See https://docs.api.stackit.cloud/documentation/load-balancer/version/v1#tag/Load-Balancer/operation/APIService_CreateLoadBalancer for information regarding the payload structure.
See https://docs.api.stackit.cloud/documentation/load-balancer/version/v2#tag/Load-Balancer/operation/APIService_CreateLoadBalancer for information regarding the payload structure.

```
stackit load-balancer create [flags]
Expand Down
2 changes: 1 addition & 1 deletion docs/stackit_load-balancer_generate-payload.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Generates a payload to create/update a Load Balancer
### Synopsis

Generates a JSON payload with values to be used as --payload input for load balancer creation or update.
See https://docs.api.stackit.cloud/documentation/load-balancer/version/v1#tag/Load-Balancer/operation/APIService_CreateLoadBalancer for information regarding the payload structure.
See https://docs.api.stackit.cloud/documentation/load-balancer/version/v2#tag/Load-Balancer/operation/APIService_CreateLoadBalancer for information regarding the payload structure.

```
stackit load-balancer generate-payload [flags]
Expand Down
2 changes: 1 addition & 1 deletion docs/stackit_load-balancer_update.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Updates a Load Balancer

Updates a load balancer.
The payload can be provided as a JSON string or a file path prefixed with "@".
See https://docs.api.stackit.cloud/documentation/load-balancer/version/v1#tag/Load-Balancer/operation/APIService_UpdateLoadBalancer for information regarding the payload structure.
See https://docs.api.stackit.cloud/documentation/load-balancer/version/v2#tag/Load-Balancer/operation/APIService_UpdateLoadBalancer for information regarding the payload structure.

```
stackit load-balancer update LOAD_BALANCER_NAME [flags]
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ require (
github.com/spf13/afero v1.15.0 // indirect
github.com/spf13/cast v1.10.0 // indirect
github.com/stackitcloud/stackit-sdk-go/services/kms v1.3.2
github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.8.0
github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.14.0
github.com/stackitcloud/stackit-sdk-go/services/logme v0.25.6
github.com/stackitcloud/stackit-sdk-go/services/mariadb v0.25.6
github.com/stackitcloud/stackit-sdk-go/services/objectstorage v1.7.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -614,8 +614,8 @@ github.com/stackitcloud/stackit-sdk-go/services/intake v0.7.1 h1:7ZSrwps/zI41rl+
github.com/stackitcloud/stackit-sdk-go/services/intake v0.7.1/go.mod h1:ZIvwBZwEMFO+YfJLCNXqabslI0Fp9zxV7ZBwlZjk7uE=
github.com/stackitcloud/stackit-sdk-go/services/kms v1.3.2 h1:2ulSL2IkIAKND59eAjbEhVkOoBMyvm48ojwz1a3t0U0=
github.com/stackitcloud/stackit-sdk-go/services/kms v1.3.2/go.mod h1:cuIaMMiHeHQsbvy7BOFMutoV3QtN+ZBx7Tg3GmYUw7s=
github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.8.0 h1:DxrN85V738CRLynu6MULQHO+OXyYnkhVPgoZKULfFIs=
github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.8.0/go.mod h1:ClPE4TOM1FeaJiwTXvApq4gWaSgTLq6nU3PPHAIQDN4=
github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.14.0 h1:1dvL7tX91ziklayQmOupniE3jM4D5Nbtc0auNcx2p18=
github.com/stackitcloud/stackit-sdk-go/services/loadbalancer v1.14.0/go.mod h1:+Ld3dn648I+YKcBV3fEkYpDSr3fel421+LurJGywSBs=
github.com/stackitcloud/stackit-sdk-go/services/logme v0.25.6 h1:4x30lC+YBmo7XpsAzTn0W+C/oP5flnLVgIh5u3O/P0o=
github.com/stackitcloud/stackit-sdk-go/services/logme v0.25.6/go.mod h1:ewaYUiZcBTSS6urE5zEJBPCqxu70w2IjnBHCvnKdFKE=
github.com/stackitcloud/stackit-sdk-go/services/logs v0.5.2 h1:vr4atxFRT+EL+DqONMT5R44f7AzEMbePa9U7PEE0THU=
Expand Down
10 changes: 5 additions & 5 deletions internal/cmd/load-balancer/create/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import (

"github.com/google/uuid"
"github.com/spf13/cobra"
"github.com/stackitcloud/stackit-sdk-go/services/loadbalancer"
"github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/wait"
loadbalancer "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api"
"github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api/wait"

"github.com/stackitcloud/stackit-cli/internal/pkg/args"
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
Expand Down Expand Up @@ -44,7 +44,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
Long: fmt.Sprintf("%s\n%s\n%s",
"Creates a Load Balancer.",
"The payload can be provided as a JSON string or a file path prefixed with \"@\".",
"See https://docs.api.stackit.cloud/documentation/load-balancer/version/v1#tag/Load-Balancer/operation/APIService_CreateLoadBalancer for information regarding the payload structure.",
"See https://docs.api.stackit.cloud/documentation/load-balancer/version/v2#tag/Load-Balancer/operation/APIService_CreateLoadBalancer for information regarding the payload structure.",
),
Args: args.NoArgs,
Example: examples.Build(
Expand Down Expand Up @@ -95,7 +95,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
// Wait for async operation, if async mode not enabled
if !model.Async {
err := spinner.Run(params.Printer, "Creating load balancer", func() error {
_, err = wait.CreateLoadBalancerWaitHandler(ctx, apiClient, model.ProjectId, model.Region, *model.Payload.Name).WaitWithContext(ctx)
_, err = wait.CreateLoadBalancerWaitHandler(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region, *model.Payload.Name).WaitWithContext(ctx)
return err
})
if err != nil {
Expand Down Expand Up @@ -148,7 +148,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel,
}

func buildRequest(ctx context.Context, model *inputModel, apiClient *loadbalancer.APIClient) loadbalancer.ApiCreateLoadBalancerRequest {
req := apiClient.CreateLoadBalancer(ctx, model.ProjectId, model.Region)
req := apiClient.DefaultAPI.CreateLoadBalancer(ctx, model.ProjectId, model.Region)
req = req.CreateLoadBalancerPayload(*model.Payload)
req = req.XRequestID(xRequestId)
return req
Expand Down
36 changes: 19 additions & 17 deletions internal/cmd/load-balancer/create/create_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"context"
"testing"

"github.com/stackitcloud/stackit-sdk-go/services/loadbalancer"
loadbalancer "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api"

"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
"github.com/stackitcloud/stackit-cli/internal/pkg/testutils"
Expand All @@ -23,20 +23,20 @@ type testCtxKey struct{}

var (
testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo")
testClient = &loadbalancer.APIClient{}
testClient = &loadbalancer.APIClient{DefaultAPI: &loadbalancer.DefaultAPIService{}}
testProjectId = uuid.NewString()
testRequestId = xRequestId
)

var testPayload = &loadbalancer.CreateLoadBalancerPayload{
ExternalAddress: utils.Ptr(""),

Listeners: &[]loadbalancer.Listener{
Listeners: []loadbalancer.Listener{
{
DisplayName: utils.Ptr(""),
Port: utils.Ptr(int64(0)),
Protocol: loadbalancer.ListenerProtocol("").Ptr(),
ServerNameIndicators: &[]loadbalancer.ServerNameIndicator{
Port: utils.Ptr(int32(0)),
Protocol: loadbalancer.ListenerProtocol("unknown_default_open_api").Ptr(),
ServerNameIndicators: []loadbalancer.ServerNameIndicator{
{
Name: utils.Ptr(""),
},
Expand All @@ -51,15 +51,15 @@ var testPayload = &loadbalancer.CreateLoadBalancerPayload{
},
},
Name: utils.Ptr(""),
Networks: &[]loadbalancer.Network{
Networks: []loadbalancer.Network{
{
NetworkId: utils.Ptr(""),
Role: loadbalancer.NetworkRole("").Ptr(),
Role: loadbalancer.NetworkRole("unknown_default_open_api").Ptr(),
},
},
Options: &loadbalancer.LoadBalancerOptions{
AccessControl: &loadbalancer.LoadbalancerOptionAccessControl{
AllowedSourceRanges: &[]string{
AllowedSourceRanges: []string{
"",
},
},
Expand All @@ -76,21 +76,21 @@ var testPayload = &loadbalancer.CreateLoadBalancerPayload{
},
PrivateNetworkOnly: utils.Ptr(false),
},
TargetPools: &[]loadbalancer.TargetPool{
TargetPools: []loadbalancer.TargetPool{
{
ActiveHealthCheck: &loadbalancer.ActiveHealthCheck{
HealthyThreshold: utils.Ptr(int64(0)),
HealthyThreshold: utils.Ptr(int32(0)),
Interval: utils.Ptr(""),
IntervalJitter: utils.Ptr(""),
Timeout: utils.Ptr(""),
UnhealthyThreshold: utils.Ptr(int64(0)),
UnhealthyThreshold: utils.Ptr(int32(0)),
},
Name: utils.Ptr(""),
SessionPersistence: &loadbalancer.SessionPersistence{
UseSourceIpAddress: utils.Ptr(false),
},
TargetPort: utils.Ptr(int64(0)),
Targets: &[]loadbalancer.Target{
TargetPort: utils.Ptr(int32(0)),
Targets: []loadbalancer.Target{
{
DisplayName: utils.Ptr(""),
Ip: utils.Ptr(""),
Expand Down Expand Up @@ -197,7 +197,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel {
}

func fixtureRequest(mods ...func(request *loadbalancer.ApiCreateLoadBalancerRequest)) loadbalancer.ApiCreateLoadBalancerRequest {
request := testClient.CreateLoadBalancer(testCtx, testProjectId, testRegion)
request := testClient.DefaultAPI.CreateLoadBalancer(testCtx, testProjectId, testRegion)
request = request.CreateLoadBalancerPayload(*testPayload)
request = request.XRequestID(testRequestId)
for _, mod := range mods {
Expand Down Expand Up @@ -277,7 +277,9 @@ func TestParseInput(t *testing.T) {

for _, tt := range tests {
t.Run(tt.description, func(t *testing.T) {
testutils.TestParseInput(t, NewCmd, parseInput, tt.expectedModel, tt.argValues, tt.flagValues, tt.isValid)
testutils.TestParseInputWithOptions(t, NewCmd, parseInput, tt.expectedModel, tt.argValues, tt.flagValues, nil, tt.isValid, []testutils.TestingOption{
testutils.WithCmpOptions(cmpopts.EquateEmpty()),
})
})
}
}
Expand All @@ -302,7 +304,7 @@ func TestBuildRequest(t *testing.T) {

diff := cmp.Diff(request, tt.expectedRequest,
cmp.AllowUnexported(tt.expectedRequest),
cmpopts.EquateComparable(testCtx),
cmpopts.EquateComparable(testCtx, loadbalancer.DefaultAPIService{}),
)
if diff != "" {
t.Fatalf("Data does not match: %s", diff)
Expand Down
8 changes: 4 additions & 4 deletions internal/cmd/load-balancer/delete/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ import (
"github.com/stackitcloud/stackit-cli/internal/pkg/spinner"

"github.com/spf13/cobra"
"github.com/stackitcloud/stackit-sdk-go/services/loadbalancer"
"github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/wait"
loadbalancer "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api"
"github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api/wait"
)

const (
Expand Down Expand Up @@ -67,7 +67,7 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
// Wait for async operation, if async mode not enabled
if !model.Async {
err := spinner.Run(params.Printer, "Deleting load balancer", func() error {
_, err = wait.DeleteLoadBalancerWaitHandler(ctx, apiClient, model.ProjectId, model.Region, model.LoadBalancerName).WaitWithContext(ctx)
_, err = wait.DeleteLoadBalancerWaitHandler(ctx, apiClient.DefaultAPI, model.ProjectId, model.Region, model.LoadBalancerName).WaitWithContext(ctx)
return err
})
if err != nil {
Expand Down Expand Up @@ -104,6 +104,6 @@ func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inpu
}

func buildRequest(ctx context.Context, model *inputModel, apiClient *loadbalancer.APIClient) loadbalancer.ApiDeleteLoadBalancerRequest {
req := apiClient.DeleteLoadBalancer(ctx, model.ProjectId, model.Region, model.LoadBalancerName)
req := apiClient.DefaultAPI.DeleteLoadBalancer(ctx, model.ProjectId, model.Region, model.LoadBalancerName)
return req
}
8 changes: 4 additions & 4 deletions internal/cmd/load-balancer/delete/delete_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
"github.com/google/go-cmp/cmp"
"github.com/google/go-cmp/cmp/cmpopts"
"github.com/google/uuid"
"github.com/stackitcloud/stackit-sdk-go/services/loadbalancer"
loadbalancer "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api"
)

const (
Expand All @@ -20,7 +20,7 @@ const (
type testCtxKey struct{}

var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo")
var testClient = &loadbalancer.APIClient{}
var testClient = &loadbalancer.APIClient{DefaultAPI: &loadbalancer.DefaultAPIService{}}
var testProjectId = uuid.NewString()
var testLoadBalancerName = "loadBalancer"

Expand Down Expand Up @@ -61,7 +61,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel {
}

func fixtureRequest(mods ...func(request *loadbalancer.ApiDeleteLoadBalancerRequest)) loadbalancer.ApiDeleteLoadBalancerRequest {
request := testClient.DeleteLoadBalancer(testCtx, testProjectId, testRegion, testLoadBalancerName)
request := testClient.DefaultAPI.DeleteLoadBalancer(testCtx, testProjectId, testRegion, testLoadBalancerName)
for _, mod := range mods {
mod(&request)
}
Expand Down Expand Up @@ -155,7 +155,7 @@ func TestBuildRequest(t *testing.T) {

diff := cmp.Diff(request, tt.expectedRequest,
cmp.AllowUnexported(tt.expectedRequest),
cmpopts.EquateComparable(testCtx),
cmpopts.EquateComparable(testCtx, loadbalancer.DefaultAPIService{}),
)
if diff != "" {
t.Fatalf("Data does not match: %s", diff)
Expand Down
22 changes: 11 additions & 11 deletions internal/cmd/load-balancer/describe/describe.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import (
"github.com/stackitcloud/stackit-cli/internal/pkg/utils"

"github.com/spf13/cobra"
"github.com/stackitcloud/stackit-sdk-go/services/loadbalancer"
loadbalancer "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api"
)

const (
Expand Down Expand Up @@ -86,7 +86,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inpu
}

func buildRequest(ctx context.Context, model *inputModel, apiClient *loadbalancer.APIClient) loadbalancer.ApiGetLoadBalancerRequest {
req := apiClient.GetLoadBalancer(ctx, model.ProjectId, model.Region, model.LoadBalancerName)
req := apiClient.DefaultAPI.GetLoadBalancer(ctx, model.ProjectId, model.Region, model.LoadBalancerName)
return req
}

Expand All @@ -100,10 +100,10 @@ func outputResult(p *print.Printer, outputFormat string, loadBalancer *loadbalan
content = append(content, buildLoadBalancerTable(loadBalancer))

if loadBalancer.Listeners != nil {
content = append(content, buildListenersTable(*loadBalancer.Listeners))
content = append(content, buildListenersTable(loadBalancer.Listeners))
}
if loadBalancer.TargetPools != nil {
content = append(content, buildTargetPoolsTable(*loadBalancer.TargetPools))
content = append(content, buildTargetPoolsTable(loadBalancer.TargetPools))
}

err := tables.DisplayTables(p, content)
Expand All @@ -120,7 +120,7 @@ func buildLoadBalancerTable(loadBalancer *loadbalancer.LoadBalancer) tables.Tabl
privateAccessOnly := false
if loadBalancer.Options != nil {
if loadBalancer.Options.AccessControl != nil && loadBalancer.Options.AccessControl.AllowedSourceRanges != nil {
acl = *loadBalancer.Options.AccessControl.AllowedSourceRanges
acl = loadBalancer.Options.AccessControl.AllowedSourceRanges
}

if loadBalancer.Options.PrivateNetworkOnly != nil {
Expand All @@ -129,16 +129,16 @@ func buildLoadBalancerTable(loadBalancer *loadbalancer.LoadBalancer) tables.Tabl
}

networkId := "-"
if loadBalancer.Networks != nil && len(*loadBalancer.Networks) > 0 {
networks := *loadBalancer.Networks
if len(loadBalancer.Networks) > 0 {
networks := loadBalancer.Networks
networkId = *networks[0].NetworkId
}

externalAddress := utils.PtrStringDefault(loadBalancer.ExternalAddress, "-")

errorDescriptions := []string{}
if loadBalancer.Errors != nil && len((*loadBalancer.Errors)) > 0 {
for _, err := range *loadBalancer.Errors {
var errorDescriptions []string
if len(loadBalancer.Errors) > 0 {
for _, err := range loadBalancer.Errors {
errorDescriptions = append(errorDescriptions, *err.Description)
}
}
Expand Down Expand Up @@ -184,7 +184,7 @@ func buildTargetPoolsTable(targetPools []loadbalancer.TargetPool) tables.Table {
table.SetTitle("Target Pools")
table.SetHeader("NAME", "PORT", "TARGETS")
for _, targetPool := range targetPools {
table.AddRow(utils.PtrString(targetPool.Name), utils.PtrString(targetPool.TargetPort), len(*targetPool.Targets))
table.AddRow(utils.PtrString(targetPool.Name), utils.PtrString(targetPool.TargetPort), len(targetPool.Targets))
}
return table
}
8 changes: 4 additions & 4 deletions internal/cmd/load-balancer/describe/describe_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
"github.com/google/go-cmp/cmp"
"github.com/google/go-cmp/cmp/cmpopts"
"github.com/google/uuid"
"github.com/stackitcloud/stackit-sdk-go/services/loadbalancer"
loadbalancer "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api"

"github.com/stackitcloud/stackit-cli/internal/pkg/testparams"

Expand All @@ -23,7 +23,7 @@ const (
type testCtxKey struct{}

var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo")
var testClient = &loadbalancer.APIClient{}
var testClient = &loadbalancer.APIClient{DefaultAPI: &loadbalancer.DefaultAPIService{}}
var testProjectId = uuid.NewString()

func fixtureArgValues(mods ...func(argValues []string)) []string {
Expand Down Expand Up @@ -63,7 +63,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel {
}

func fixtureRequest(mods ...func(request *loadbalancer.ApiGetLoadBalancerRequest)) loadbalancer.ApiGetLoadBalancerRequest {
request := testClient.GetLoadBalancer(testCtx, testProjectId, testRegion, testloadBalancerName)
request := testClient.DefaultAPI.GetLoadBalancer(testCtx, testProjectId, testRegion, testloadBalancerName)
for _, mod := range mods {
mod(&request)
}
Expand Down Expand Up @@ -157,7 +157,7 @@ func TestBuildRequest(t *testing.T) {

diff := cmp.Diff(request, tt.expectedRequest,
cmp.AllowUnexported(tt.expectedRequest),
cmpopts.EquateComparable(testCtx),
cmpopts.EquateComparable(testCtx, loadbalancer.DefaultAPIService{}),
)
if diff != "" {
t.Fatalf("Data does not match: %s", diff)
Expand Down
Loading
Loading