Skip to content

Add sqlserverflex client and configuration logic (and instance list command) #345

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
May 27, 2024
Merged
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
1 change: 1 addition & 0 deletions docs/stackit.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,5 @@ stackit [flags]
* [stackit secrets-manager](./stackit_secrets-manager.md) - Provides functionality for Secrets Manager
* [stackit service-account](./stackit_service-account.md) - Provides functionality for service accounts
* [stackit ske](./stackit_ske.md) - Provides functionality for SKE
* [stackit sqlserverflex](./stackit_sqlserverflex.md) - Provides functionality for SQLServer Flex

1 change: 1 addition & 0 deletions docs/stackit_config_set.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ stackit config set [flags]
--service-account-custom-endpoint string Service Account API base URL, used in calls to this API
--session-time-limit string Maximum time before authentication is required again. After this time, you will be prompted to login again to execute commands that require authentication. Can't be larger than 24h. Requires authentication after being set to take effect. Examples: 3h, 5h30m40s (BETA: currently values greater than 2h have no effect)
--ske-custom-endpoint string SKE API base URL, used in calls to this API
--sqlserverflex-custom-endpoint string SQLServer Flex API base URL, used in calls to this API
```

### Options inherited from parent commands
Expand Down
1 change: 1 addition & 0 deletions docs/stackit_config_unset.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ stackit config unset [flags]
--service-account-custom-endpoint SKE API base URL. If unset, uses the default base URL
--session-time-limit Maximum time before authentication is required again. If unset, defaults to 2h
--ske-custom-endpoint SKE API base URL. If unset, uses the default base URL
--sqlserverflex-custom-endpoint SQLServer Flex API base URL. If unset, uses the default base URL
--verbosity Verbosity of the CLI
```

Expand Down
33 changes: 33 additions & 0 deletions docs/stackit_sqlserverflex.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
## stackit sqlserverflex

Provides functionality for SQLServer Flex

### Synopsis

Provides functionality for SQLServer Flex.

```
stackit sqlserverflex [flags]
```

### Options

```
-h, --help Help for "stackit sqlserverflex"
```

### Options inherited from parent commands

```
-y, --assume-yes If set, skips all confirmation prompts
--async If set, runs the command asynchronously
-o, --output-format string Output format, one of ["json" "pretty" "none" "yaml"]
-p, --project-id string Project ID
--verbosity string Verbosity of the CLI, one of ["debug" "info" "warning" "error"] (default "info")
```

### SEE ALSO

* [stackit](./stackit.md) - Manage STACKIT resources using the command line
* [stackit sqlserverflex instance](./stackit_sqlserverflex_instance.md) - Provides functionality for SQLServer Flex instances

33 changes: 33 additions & 0 deletions docs/stackit_sqlserverflex_instance.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
## stackit sqlserverflex instance

Provides functionality for SQLServer Flex instances

### Synopsis

Provides functionality for SQLServer Flex instances.

```
stackit sqlserverflex instance [flags]
```

### Options

```
-h, --help Help for "stackit sqlserverflex instance"
```

### Options inherited from parent commands

```
-y, --assume-yes If set, skips all confirmation prompts
--async If set, runs the command asynchronously
-o, --output-format string Output format, one of ["json" "pretty" "none" "yaml"]
-p, --project-id string Project ID
--verbosity string Verbosity of the CLI, one of ["debug" "info" "warning" "error"] (default "info")
```

### SEE ALSO

* [stackit sqlserverflex](./stackit_sqlserverflex.md) - Provides functionality for SQLServer Flex
* [stackit sqlserverflex instance list](./stackit_sqlserverflex_instance_list.md) - Lists all SQLServer Flex instances

46 changes: 46 additions & 0 deletions docs/stackit_sqlserverflex_instance_list.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
## stackit sqlserverflex instance list

Lists all SQLServer Flex instances

### Synopsis

Lists all SQLServer Flex instances.

```
stackit sqlserverflex instance list [flags]
```

### Examples

```
List all SQLServer Flex instances
$ stackit sqlserverflex instance list

List all SQLServer Flex instances in JSON format
$ stackit sqlserverflex instance list --output-format json

List up to 10 SQLServer Flex instances
$ stackit sqlserverflex instance list --limit 10
```

### Options

```
-h, --help Help for "stackit sqlserverflex instance list"
--limit int Maximum number of entries to list
```

### Options inherited from parent commands

```
-y, --assume-yes If set, skips all confirmation prompts
--async If set, runs the command asynchronously
-o, --output-format string Output format, one of ["json" "pretty" "none" "yaml"]
-p, --project-id string Project ID
--verbosity string Verbosity of the CLI, one of ["debug" "info" "warning" "error"] (default "info")
```

### SEE ALSO

* [stackit sqlserverflex instance](./stackit_sqlserverflex_instance.md) - Provides functionality for SQLServer Flex instances

3 changes: 2 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ module github.com/stackitcloud/stackit-cli
go 1.22

require (
github.com/fatih/color v1.14.1
github.com/goccy/go-yaml v1.11.3
github.com/golang-jwt/jwt/v5 v5.2.1
github.com/google/go-cmp v0.6.0
Expand All @@ -24,6 +25,7 @@ require (
github.com/stackitcloud/stackit-sdk-go/services/secretsmanager v0.7.0
github.com/stackitcloud/stackit-sdk-go/services/serviceaccount v0.4.0
github.com/stackitcloud/stackit-sdk-go/services/ske v0.15.0
github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex v0.2.0
github.com/zalando/go-keyring v0.2.4
golang.org/x/mod v0.17.0
golang.org/x/oauth2 v0.20.0
Expand All @@ -40,7 +42,6 @@ require (
)

require (
github.com/fatih/color v1.14.1 // indirect
github.com/mattn/go-isatty v0.0.17 // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
)
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,8 @@ github.com/stackitcloud/stackit-sdk-go/services/serviceaccount v0.4.0 h1:JB1O0E9
github.com/stackitcloud/stackit-sdk-go/services/serviceaccount v0.4.0/go.mod h1:Ni9RBJvcaXRIrDIuQBpJcuQvCQSj27crQSyc+WM4p0c=
github.com/stackitcloud/stackit-sdk-go/services/ske v0.15.0 h1:7iTzdiglvJmKMaHlr4JUPvNOmA730rAniry74cnZ8zI=
github.com/stackitcloud/stackit-sdk-go/services/ske v0.15.0/go.mod h1:0fFs4R7kg+gU7FNAIzzFvlCZJz6gyZ8CFhbK3eSrAwQ=
github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex v0.2.0 h1:aIXxXx6u4+6C02MPb+hdItigeKeen7m+hEEG+Ej9sNs=
github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex v0.2.0/go.mod h1:fQJOQMfasStZ8J9iGX0vTjyJoQtLqMXJ5Npb03QJk84=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
Expand Down
10 changes: 7 additions & 3 deletions internal/cmd/config/set/set.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ const (
secretsManagerCustomEndpointFlag = "secrets-manager-custom-endpoint"
serviceAccountCustomEndpointFlag = "service-account-custom-endpoint"
skeCustomEndpointFlag = "ske-custom-endpoint"
sqlServerFlexCustomEndpointFlag = "sqlserverflex-custom-endpoint"
)

type inputModel struct {
Expand Down Expand Up @@ -139,6 +140,7 @@ func configureFlags(cmd *cobra.Command) {
cmd.Flags().String(secretsManagerCustomEndpointFlag, "", "Secrets Manager API base URL, used in calls to this API")
cmd.Flags().String(serviceAccountCustomEndpointFlag, "", "Service Account API base URL, used in calls to this API")
cmd.Flags().String(skeCustomEndpointFlag, "", "SKE API base URL, used in calls to this API")
cmd.Flags().String(sqlServerFlexCustomEndpointFlag, "", "SQLServer Flex API base URL, used in calls to this API")

err := viper.BindPFlag(config.ArgusCustomEndpointKey, cmd.Flags().Lookup(argusCustomEndpointFlag))
cobra.CheckErr(err)
Expand All @@ -160,6 +162,10 @@ func configureFlags(cmd *cobra.Command) {
cobra.CheckErr(err)
err = viper.BindPFlag(config.PostgresFlexCustomEndpointKey, cmd.Flags().Lookup(postgresFlexCustomEndpointFlag))
cobra.CheckErr(err)
err = viper.BindPFlag(config.RabbitMQCustomEndpointKey, cmd.Flags().Lookup(rabbitMQCustomEndpointFlag))
cobra.CheckErr(err)
err = viper.BindPFlag(config.RedisCustomEndpointKey, cmd.Flags().Lookup(redisCustomEndpointFlag))
cobra.CheckErr(err)
err = viper.BindPFlag(config.ResourceManagerEndpointKey, cmd.Flags().Lookup(skeCustomEndpointFlag))
cobra.CheckErr(err)
err = viper.BindPFlag(config.SecretsManagerCustomEndpointKey, cmd.Flags().Lookup(secretsManagerCustomEndpointFlag))
Expand All @@ -168,9 +174,7 @@ func configureFlags(cmd *cobra.Command) {
cobra.CheckErr(err)
err = viper.BindPFlag(config.SKECustomEndpointKey, cmd.Flags().Lookup(skeCustomEndpointFlag))
cobra.CheckErr(err)
err = viper.BindPFlag(config.RedisCustomEndpointKey, cmd.Flags().Lookup(redisCustomEndpointFlag))
cobra.CheckErr(err)
err = viper.BindPFlag(config.RabbitMQCustomEndpointKey, cmd.Flags().Lookup(rabbitMQCustomEndpointFlag))
err = viper.BindPFlag(config.SQLServerFlexCustomEndpointKey, cmd.Flags().Lookup(sqlServerFlexCustomEndpointFlag))
cobra.CheckErr(err)
}

Expand Down
7 changes: 7 additions & 0 deletions internal/cmd/config/unset/unset.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ const (
secretsManagerCustomEndpointFlag = "secrets-manager-custom-endpoint"
serviceAccountCustomEndpointFlag = "service-account-custom-endpoint"
skeCustomEndpointFlag = "ske-custom-endpoint"
sqlServerFlexCustomEndpointFlag = "sqlserverflex-custom-endpoint"
)

type inputModel struct {
Expand All @@ -63,6 +64,7 @@ type inputModel struct {
SecretsManagerCustomEndpoint bool
ServiceAccountCustomEndpoint bool
SKECustomEndpoint bool
SQLServerFlexCustomEndpoint bool
}

func NewCmd(p *print.Printer) *cobra.Command {
Expand Down Expand Up @@ -149,6 +151,9 @@ func NewCmd(p *print.Printer) *cobra.Command {
if model.SKECustomEndpoint {
viper.Set(config.SKECustomEndpointKey, "")
}
if model.SQLServerFlexCustomEndpoint {
viper.Set(config.SQLServerFlexCustomEndpointKey, "")
}

err := config.Write()
if err != nil {
Expand Down Expand Up @@ -184,6 +189,7 @@ func configureFlags(cmd *cobra.Command) {
cmd.Flags().Bool(secretsManagerCustomEndpointFlag, false, "Secrets Manager API base URL. If unset, uses the default base URL")
cmd.Flags().Bool(serviceAccountCustomEndpointFlag, false, "SKE API base URL. If unset, uses the default base URL")
cmd.Flags().Bool(skeCustomEndpointFlag, false, "SKE API base URL. If unset, uses the default base URL")
cmd.Flags().Bool(sqlServerFlexCustomEndpointFlag, false, "SQLServer Flex API base URL. If unset, uses the default base URL")
}

func parseInput(p *print.Printer, cmd *cobra.Command) *inputModel {
Expand All @@ -210,6 +216,7 @@ func parseInput(p *print.Printer, cmd *cobra.Command) *inputModel {
SecretsManagerCustomEndpoint: flags.FlagToBoolValue(p, cmd, secretsManagerCustomEndpointFlag),
ServiceAccountCustomEndpoint: flags.FlagToBoolValue(p, cmd, serviceAccountCustomEndpointFlag),
SKECustomEndpoint: flags.FlagToBoolValue(p, cmd, skeCustomEndpointFlag),
SQLServerFlexCustomEndpoint: flags.FlagToBoolValue(p, cmd, sqlServerFlexCustomEndpointFlag),
}

if p.IsVerbosityDebug() {
Expand Down
3 changes: 3 additions & 0 deletions internal/cmd/config/unset/unset_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ func fixtureFlagValues(mods ...func(flagValues map[string]bool)) map[string]bool
secretsManagerCustomEndpointFlag: true,
serviceAccountCustomEndpointFlag: true,
skeCustomEndpointFlag: true,
sqlServerFlexCustomEndpointFlag: true,
}
for _, mod := range mods {
mod(flagValues)
Expand Down Expand Up @@ -60,6 +61,7 @@ func fixtureInputModel(mods ...func(model *inputModel)) *inputModel {
SecretsManagerCustomEndpoint: true,
ServiceAccountCustomEndpoint: true,
SKECustomEndpoint: true,
SQLServerFlexCustomEndpoint: true,
}
for _, mod := range mods {
mod(model)
Expand Down Expand Up @@ -105,6 +107,7 @@ func TestParseInput(t *testing.T) {
model.SecretsManagerCustomEndpoint = false
model.ServiceAccountCustomEndpoint = false
model.SKECustomEndpoint = false
model.SQLServerFlexCustomEndpoint = false
}),
},
{
Expand Down
2 changes: 2 additions & 0 deletions internal/cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (
secretsmanager "github.com/stackitcloud/stackit-cli/internal/cmd/secrets-manager"
serviceaccount "github.com/stackitcloud/stackit-cli/internal/cmd/service-account"
"github.com/stackitcloud/stackit-cli/internal/cmd/ske"
"github.com/stackitcloud/stackit-cli/internal/cmd/sqlserverflex"
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
"github.com/stackitcloud/stackit-cli/internal/pkg/flags"
Expand Down Expand Up @@ -140,6 +141,7 @@ func addSubcommands(cmd *cobra.Command, p *print.Printer) {
cmd.AddCommand(secretsmanager.NewCmd(p))
cmd.AddCommand(serviceaccount.NewCmd(p))
cmd.AddCommand(ske.NewCmd(p))
cmd.AddCommand(sqlserverflex.NewCmd(p))
}

// traverseCommands calls f for c and all of its children.
Expand Down
26 changes: 26 additions & 0 deletions internal/cmd/sqlserverflex/instance/instance.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package instance

import (
"github.com/stackitcloud/stackit-cli/internal/cmd/sqlserverflex/instance/list"
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
"github.com/stackitcloud/stackit-cli/internal/pkg/utils"

"github.com/spf13/cobra"
)

func NewCmd(p *print.Printer) *cobra.Command {
cmd := &cobra.Command{
Use: "instance",
Short: "Provides functionality for SQLServer Flex instances",
Long: "Provides functionality for SQLServer Flex instances.",
Args: args.NoArgs,
Run: utils.CmdHelp,
}
addSubcommands(cmd, p)
return cmd
}

func addSubcommands(cmd *cobra.Command, p *print.Printer) {
cmd.AddCommand(list.NewCmd(p))
}
Loading