Skip to content

Commit 3517dc5

Browse files
committed
add async handling
1 parent 1c3cd90 commit 3517dc5

File tree

4 files changed

+72
-4
lines changed

4 files changed

+72
-4
lines changed

internal/cmd/ske/cluster/hibernate/hibernate.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ import (
1313
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
1414
"github.com/stackitcloud/stackit-cli/internal/pkg/projectname"
1515
"github.com/stackitcloud/stackit-cli/internal/pkg/services/ske/client"
16+
"github.com/stackitcloud/stackit-cli/internal/pkg/spinner"
1617
"github.com/stackitcloud/stackit-sdk-go/services/ske"
18+
"github.com/stackitcloud/stackit-sdk-go/services/ske/wait"
1719
)
1820

1921
const (
@@ -69,7 +71,22 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
6971
return fmt.Errorf("hibernate SKE cluster: %w", err)
7072
}
7173

72-
params.Printer.Info("Hibernate got triggered for %q\n", model.ClusterName)
74+
// Wait for async operation, if async mode not enabled
75+
if !model.Async {
76+
s := spinner.New(params.Printer)
77+
s.Start("Hibernating cluster")
78+
_, err = wait.TriggerClusterHibernationWaitHandler(ctx, apiClient, model.ProjectId, model.Region, model.ClusterName).WaitWithContext(ctx)
79+
if err != nil {
80+
return fmt.Errorf("wait for SKE cluster hibernation: %w", err)
81+
}
82+
s.Stop()
83+
}
84+
85+
operationState := "Hibernated"
86+
if model.Async {
87+
operationState = "Triggered hibernation of"
88+
}
89+
params.Printer.Outputf("%s cluster %q\n", operationState, model.ClusterName)
7390
return nil
7491
},
7592
}

internal/cmd/ske/cluster/maintenance/maintenance.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ import (
1313
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
1414
"github.com/stackitcloud/stackit-cli/internal/pkg/projectname"
1515
"github.com/stackitcloud/stackit-cli/internal/pkg/services/ske/client"
16+
"github.com/stackitcloud/stackit-cli/internal/pkg/spinner"
1617
"github.com/stackitcloud/stackit-sdk-go/services/ske"
18+
"github.com/stackitcloud/stackit-sdk-go/services/ske/wait"
1719
)
1820

1921
const (
@@ -69,7 +71,22 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
6971
return fmt.Errorf("trigger maintenance SKE cluster: %w", err)
7072
}
7173

72-
params.Printer.Info("Maintenance got triggered for %q\n", model.ClusterName)
74+
// Wait for async operation, if async mode not enabled
75+
if !model.Async {
76+
s := spinner.New(params.Printer)
77+
s.Start("Performing cluster maintenance")
78+
_, err = wait.TriggerClusterMaintenanceWaitHandler(ctx, apiClient, model.ProjectId, model.Region, model.ClusterName).WaitWithContext(ctx)
79+
if err != nil {
80+
return fmt.Errorf("wait for SKE cluster maintenance to complete: %w", err)
81+
}
82+
s.Stop()
83+
}
84+
85+
operationState := "Performed maintenance for"
86+
if model.Async {
87+
operationState = "Triggered maintenance for"
88+
}
89+
params.Printer.Outputf("%s cluster %q\n", operationState, model.ClusterName)
7390
return nil
7491
},
7592
}

internal/cmd/ske/cluster/reconcile/reconcile.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ import (
1212
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
1313
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
1414
"github.com/stackitcloud/stackit-cli/internal/pkg/services/ske/client"
15+
"github.com/stackitcloud/stackit-cli/internal/pkg/spinner"
1516
"github.com/stackitcloud/stackit-sdk-go/services/ske"
17+
"github.com/stackitcloud/stackit-sdk-go/services/ske/wait"
1618
)
1719

1820
const (
@@ -55,7 +57,22 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
5557
return fmt.Errorf("reconcile SKE cluster: %w", err)
5658
}
5759

58-
params.Printer.Info("Reconcile got triggered for %q\n", model.ClusterName)
60+
// Wait for async operation, if async mode not enabled
61+
if !model.Async {
62+
s := spinner.New(params.Printer)
63+
s.Start("Performing cluster reconciliation")
64+
_, err = wait.TriggerClusterReconciliationWaitHandler(ctx, apiClient, model.ProjectId, model.Region, model.ClusterName).WaitWithContext(ctx)
65+
if err != nil {
66+
return fmt.Errorf("wait for SKE cluster reconciliation: %w", err)
67+
}
68+
s.Stop()
69+
}
70+
71+
operationState := "Performed reconciliation for"
72+
if model.Async {
73+
operationState = "Triggered reconcile for"
74+
}
75+
params.Printer.Outputf("%s cluster %q\n", operationState, model.ClusterName)
5976
return nil
6077
},
6178
}

internal/cmd/ske/cluster/wakeup/wakeup.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ import (
1212
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
1313
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
1414
"github.com/stackitcloud/stackit-cli/internal/pkg/services/ske/client"
15+
"github.com/stackitcloud/stackit-cli/internal/pkg/spinner"
1516
"github.com/stackitcloud/stackit-sdk-go/services/ske"
17+
"github.com/stackitcloud/stackit-sdk-go/services/ske/wait"
1618
)
1719

1820
const (
@@ -55,7 +57,22 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
5557
return fmt.Errorf("wakeup SKE cluster: %w", err)
5658
}
5759

58-
params.Printer.Info("Wakeup got triggered for %q\n", model.ClusterName)
60+
// Wait for async operation, if async mode not enabled
61+
if !model.Async {
62+
s := spinner.New(params.Printer)
63+
s.Start("Performing cluster wakeup")
64+
_, err = wait.TriggerClusterWakeupWaitHandler(ctx, apiClient, model.ProjectId, model.Region, model.ClusterName).WaitWithContext(ctx)
65+
if err != nil {
66+
return fmt.Errorf("wait for SKE cluster wakeup: %w", err)
67+
}
68+
s.Stop()
69+
}
70+
71+
operationState := "Performed wakeup of"
72+
if model.Async {
73+
operationState = "Triggered wakeup of"
74+
}
75+
params.Printer.Outputf("%s cluster %q\n", operationState, model.ClusterName)
5976
return nil
6077
},
6178
}

0 commit comments

Comments
 (0)