Skip to content
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
2 changes: 2 additions & 0 deletions docs/stackit_sqlserverflex_instance.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ stackit sqlserverflex instance [flags]

* [stackit sqlserverflex](./stackit_sqlserverflex.md) - Provides functionality for SQLServer Flex
* [stackit sqlserverflex instance create](./stackit_sqlserverflex_instance_create.md) - Creates an SQLServer Flex instance
* [stackit sqlserverflex instance delete](./stackit_sqlserverflex_instance_delete.md) - Deletes an SQLServer Flex instance
* [stackit sqlserverflex instance describe](./stackit_sqlserverflex_instance_describe.md) - Shows details of an SQLServer Flex instance
* [stackit sqlserverflex instance list](./stackit_sqlserverflex_instance_list.md) - Lists all SQLServer Flex instances
* [stackit sqlserverflex instance update](./stackit_sqlserverflex_instance_update.md) - Updates an SQLServer Flex instance

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

Deletes an SQLServer Flex instance

### Synopsis

Deletes an SQLServer Flex instance.

```
stackit sqlserverflex instance delete INSTANCE_ID [flags]
```

### Examples

```
Delete an SQLServer Flex instance with ID "xxx"
$ stackit sqlserverflex instance delete xxx
```

### Options

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

### 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

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

Shows details of an SQLServer Flex instance

### Synopsis

Shows details of an SQLServer Flex instance.

```
stackit sqlserverflex instance describe INSTANCE_ID [flags]
```

### Examples

```
Get details of an SQLServer Flex instance with ID "xxx"
$ stackit sqlserverflex instance describe xxx

Get details of an SQLServer Flex instance with ID "xxx" in JSON format
$ stackit sqlserverflex instance describe xxx --output-format json
```

### Options

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

### 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

2 changes: 1 addition & 1 deletion internal/cmd/mongodbflex/backup/schedule/schedule.go
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ func outputResult(p *print.Printer, outputFormat string, instance *mongodbflex.I
return nil
default:
table := tables.NewTable()
table.AddRow("BACKUP SCHEDULE", *instance.BackupSchedule)
table.AddRow("BACKUP SCHEDULE (UTC)", *instance.BackupSchedule)
table.AddSeparator()
table.AddRow("DAILY SNAPSHOT RETENTION (DAYS)", (*instance.Options)["dailySnapshotRetentionDays"])
table.AddSeparator()
Expand Down
6 changes: 3 additions & 3 deletions internal/cmd/mongodbflex/instance/describe/describe.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ func outputResult(p *print.Printer, outputFormat string, instance *mongodbflex.I
table.AddSeparator()
table.AddRow("STATUS", *instance.Status)
table.AddSeparator()
table.AddRow("STORAGE SIZE", *instance.Storage.Size)
table.AddRow("STORAGE SIZE (GB)", *instance.Storage.Size)
table.AddSeparator()
table.AddRow("VERSION", *instance.Version)
table.AddSeparator()
Expand All @@ -148,9 +148,9 @@ func outputResult(p *print.Printer, outputFormat string, instance *mongodbflex.I
table.AddSeparator()
table.AddRow("CPU", *instance.Flavor.Cpu)
table.AddSeparator()
table.AddRow("RAM", *instance.Flavor.Memory)
table.AddRow("RAM (GB)", *instance.Flavor.Memory)
table.AddSeparator()
table.AddRow("BACKUP SCHEDULE", *instance.BackupSchedule)
table.AddRow("BACKUP SCHEDULE (UTC)", *instance.BackupSchedule)
table.AddSeparator()
err = table.Display(p)
if err != nil {
Expand Down
4 changes: 2 additions & 2 deletions internal/cmd/postgresflex/instance/describe/describe.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ func outputResult(p *print.Printer, outputFormat string, instance *postgresflex.
table.AddSeparator()
table.AddRow("STATUS", cases.Title(language.English).String(*instance.Status))
table.AddSeparator()
table.AddRow("STORAGE SIZE", *instance.Storage.Size)
table.AddRow("STORAGE SIZE (GB)", *instance.Storage.Size)
table.AddSeparator()
table.AddRow("VERSION", *instance.Version)
table.AddSeparator()
Expand All @@ -150,7 +150,7 @@ func outputResult(p *print.Printer, outputFormat string, instance *postgresflex.
table.AddSeparator()
table.AddRow("CPU", *instance.Flavor.Cpu)
table.AddSeparator()
table.AddRow("RAM", *instance.Flavor.Memory)
table.AddRow("RAM (GB)", *instance.Flavor.Memory)
Comment thread
joaopalet marked this conversation as resolved.
table.AddSeparator()
table.AddRow("BACKUP SCHEDULE (UTC)", *instance.BackupSchedule)
table.AddSeparator()
Expand Down
126 changes: 126 additions & 0 deletions internal/cmd/sqlserverflex/instance/delete/delete.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
package delete

import (
"context"
"fmt"

"github.com/stackitcloud/stackit-cli/internal/pkg/args"
"github.com/stackitcloud/stackit-cli/internal/pkg/errors"
"github.com/stackitcloud/stackit-cli/internal/pkg/examples"
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
"github.com/stackitcloud/stackit-cli/internal/pkg/services/sqlserverflex/client"
sqlserverflexUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/sqlserverflex/utils"
"github.com/stackitcloud/stackit-cli/internal/pkg/spinner"
"github.com/stackitcloud/stackit-cli/internal/pkg/utils"

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

const (
instanceIdArg = "INSTANCE_ID"
)

type inputModel struct {
*globalflags.GlobalFlagModel
InstanceId string
}

func NewCmd(p *print.Printer) *cobra.Command {
cmd := &cobra.Command{
Use: fmt.Sprintf("delete %s", instanceIdArg),
Short: "Deletes an SQLServer Flex instance",
Long: "Deletes an SQLServer Flex instance.",
Args: args.SingleArg(instanceIdArg, utils.ValidateUUID),
Example: examples.Build(
examples.NewExample(
`Delete an SQLServer Flex instance with ID "xxx"`,
"$ stackit sqlserverflex instance delete xxx"),
),
RunE: func(cmd *cobra.Command, args []string) error {
ctx := context.Background()
model, err := parseInput(p, cmd, args)
if err != nil {
return err
}

// Configure API client
apiClient, err := client.ConfigureClient(p)
if err != nil {
return err
}

instanceLabel, err := sqlserverflexUtils.GetInstanceName(ctx, apiClient, model.ProjectId, model.InstanceId)
if err != nil {
p.Debug(print.ErrorLevel, "get instance name: %v", err)
instanceLabel = model.InstanceId
}

if !model.AssumeYes {
prompt := fmt.Sprintf("Are you sure you want to delete instance %q? (This cannot be undone)", instanceLabel)
err = p.PromptForConfirmation(prompt)
if err != nil {
return err
}
}

// Call API
req := buildRequest(ctx, model, apiClient)
err = req.Execute()
if err != nil {
return fmt.Errorf("delete SQLServer Flex instance: %w", err)
}

// Wait for async operation, if async mode not enabled
if !model.Async {
s := spinner.New(p)
s.Start("Deleting instance")
_, err = wait.DeleteInstanceWaitHandler(ctx, apiClient, model.ProjectId, model.InstanceId).WaitWithContext(ctx)
if err != nil {
return fmt.Errorf("wait for SQLServer Flex instance deletion: %w", err)
}
s.Stop()
}

operationState := "Deleted"
if model.Async {
operationState = "Triggered deletion of"
}
p.Info("%s instance %q\n", operationState, instanceLabel)
return nil
},
}
return cmd
}

func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inputModel, error) {
instanceId := inputArgs[0]

globalFlags := globalflags.Parse(p, cmd)
if globalFlags.ProjectId == "" {
return nil, &errors.ProjectIdError{}
}

model := inputModel{
GlobalFlagModel: globalFlags,
InstanceId: instanceId,
}

if p.IsVerbosityDebug() {
modelStr, err := print.BuildDebugStrFromInputModel(model)
if err != nil {
p.Debug(print.ErrorLevel, "convert model to string for debugging: %v", err)
} else {
p.Debug(print.DebugLevel, "parsed input values: %s", modelStr)
}
}

return &model, nil
}

func buildRequest(ctx context.Context, model *inputModel, apiClient *sqlserverflex.APIClient) sqlserverflex.ApiDeleteInstanceRequest {
req := apiClient.DeleteInstance(ctx, model.ProjectId, model.InstanceId)
return req
}
Loading