Skip to content

Commit e9df357

Browse files
authored
refactor(rdb): group function by resource (#1195)
1 parent 62c05c8 commit e9df357

12 files changed

+127
-169
lines changed

internal/namespaces/rdb/v1/custom_instance.go

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package rdb
33
import (
44
"context"
55
"reflect"
6+
"strings"
67
"time"
78

89
"github.com/scaleway/scaleway-cli/internal/core"
@@ -76,6 +77,60 @@ func backupScheduleMarshalerFunc(i interface{}, opt *human.MarshalOpt) (string,
7677
return str, nil
7778
}
7879

80+
func instanceCloneBuilder(c *core.Command) *core.Command {
81+
c.WaitFunc = func(ctx context.Context, argsI, respI interface{}) (interface{}, error) {
82+
api := rdb.NewAPI(core.ExtractClient(ctx))
83+
return api.WaitForInstance(&rdb.WaitForInstanceRequest{
84+
InstanceID: respI.(*rdb.Instance).ID,
85+
Region: respI.(*rdb.Instance).Region,
86+
Timeout: scw.TimeDurationPtr(instanceActionTimeout),
87+
RetryInterval: core.DefaultRetryInterval,
88+
})
89+
}
90+
91+
return c
92+
}
93+
94+
func instanceCreateBuilder(c *core.Command) *core.Command {
95+
c.ArgSpecs.GetByName("node-type").Default = core.DefaultValueSetter("DB-DEV-S")
96+
c.ArgSpecs.GetByName("node-type").EnumValues = nodeTypes
97+
98+
c.WaitFunc = func(ctx context.Context, argsI, respI interface{}) (interface{}, error) {
99+
api := rdb.NewAPI(core.ExtractClient(ctx))
100+
return api.WaitForInstance(&rdb.WaitForInstanceRequest{
101+
InstanceID: respI.(*rdb.Instance).ID,
102+
Region: respI.(*rdb.Instance).Region,
103+
Timeout: scw.TimeDurationPtr(instanceActionTimeout),
104+
RetryInterval: core.DefaultRetryInterval,
105+
})
106+
}
107+
108+
// Waiting for API to accept uppercase node-type
109+
c.Interceptor = func(ctx context.Context, argsI interface{}, runner core.CommandRunner) (interface{}, error) {
110+
args := argsI.(*rdb.CreateInstanceRequest)
111+
args.NodeType = strings.ToLower(args.NodeType)
112+
return runner(ctx, args)
113+
}
114+
115+
return c
116+
}
117+
118+
func instanceUpgradeBuilder(c *core.Command) *core.Command {
119+
c.ArgSpecs.GetByName("node-type").EnumValues = nodeTypes
120+
121+
c.WaitFunc = func(ctx context.Context, argsI, respI interface{}) (interface{}, error) {
122+
api := rdb.NewAPI(core.ExtractClient(ctx))
123+
return api.WaitForInstance(&rdb.WaitForInstanceRequest{
124+
InstanceID: respI.(*rdb.Instance).ID,
125+
Region: respI.(*rdb.Instance).Region,
126+
Timeout: scw.TimeDurationPtr(instanceActionTimeout),
127+
RetryInterval: core.DefaultRetryInterval,
128+
})
129+
}
130+
131+
return c
132+
}
133+
79134
func instanceWaitCommand() *core.Command {
80135
return &core.Command{
81136
Short: `Wait for an instance to reach a stable state`,

internal/namespaces/rdb/v1/custom_instance_clone.go

Lines changed: 0 additions & 23 deletions
This file was deleted.

internal/namespaces/rdb/v1/custom_instance_clone_test.go

Lines changed: 0 additions & 21 deletions
This file was deleted.

internal/namespaces/rdb/v1/custom_instance_create.go

Lines changed: 0 additions & 34 deletions
This file was deleted.

internal/namespaces/rdb/v1/custom_instance_create_test.go

Lines changed: 0 additions & 17 deletions
This file was deleted.

internal/namespaces/rdb/v1/custom_instance_get_test.go

Lines changed: 0 additions & 21 deletions
This file was deleted.
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package rdb
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
7+
"github.com/scaleway/scaleway-cli/internal/core"
8+
)
9+
10+
func Test_CloneInstance(t *testing.T) {
11+
t.Run("Simple", core.Test(&core.TestConfig{
12+
Commands: GetCommands(),
13+
BeforeFunc: createInstance(),
14+
Cmd: "scw rdb instance clone {{ .Instance.ID }} node-type=DB-DEV-M name=foobar --wait",
15+
Check: core.TestCheckGolden(),
16+
AfterFunc: deleteInstance(),
17+
}))
18+
}
19+
20+
func Test_CreateInstance(t *testing.T) {
21+
t.Run("Simple", core.Test(&core.TestConfig{
22+
Commands: GetCommands(),
23+
Cmd: fmt.Sprintf("scw rdb instance create node-type=DB-DEV-S is-ha-cluster=false name=%s engine=%s user-name=%s password=%s --wait", name, engine, user, password),
24+
Check: core.TestCheckGolden(),
25+
AfterFunc: core.ExecAfterCmd("scw rdb instance delete {{ .CmdResult.ID }}"),
26+
}))
27+
}
28+
29+
func Test_GetInstance(t *testing.T) {
30+
t.Run("Simple", core.Test(&core.TestConfig{
31+
Commands: GetCommands(),
32+
BeforeFunc: createInstance(),
33+
Cmd: "scw rdb instance get {{ .Instance.ID }}",
34+
Check: core.TestCheckGolden(),
35+
AfterFunc: deleteInstance(),
36+
}))
37+
}
38+
39+
func Test_UpgradeInstance(t *testing.T) {
40+
t.Run("Simple", core.Test(&core.TestConfig{
41+
Commands: GetCommands(),
42+
BeforeFunc: createInstance(),
43+
Cmd: "scw rdb instance upgrade {{ .Instance.ID }} node-type=DB-DEV-M --wait",
44+
Check: core.TestCheckGolden(),
45+
AfterFunc: deleteInstance(),
46+
}))
47+
}

internal/namespaces/rdb/v1/custom_instance_upgrade.go

Lines changed: 0 additions & 25 deletions
This file was deleted.

0 commit comments

Comments
 (0)