66 "log"
77 "net/http"
88 "reflect"
9+ "strings"
910 "time"
1011
1112 "github.com/scaleway/scaleway-cli/v2/internal/core"
@@ -16,6 +17,11 @@ import (
1617
1718const redisActionTimeout = 15 * time .Minute
1819
20+ func redisClusterMigrateBuilder (c * core.Command ) * core.Command {
21+ c .ArgSpecs .GetByName ("node-type" ).AutoCompleteFunc = autoCompleteNodeType
22+ return c
23+ }
24+
1925func clusterCreateBuilder (c * core.Command ) * core.Command {
2026 type redisEndpointSpecPrivateNetworkSpecCustom struct {
2127 * redis.EndpointSpecPrivateNetworkSpec
@@ -204,3 +210,29 @@ func redisClusterGetMarshalerFunc(i interface{}, opt *human.MarshalOpt) (string,
204210
205211 return str , nil
206212}
213+
214+ var completeRedisNoteTypeCache * redis.ListNodeTypesResponse
215+
216+ func autoCompleteNodeType (ctx context.Context , prefix string , request any ) core.AutocompleteSuggestions {
217+ suggestions := core .AutocompleteSuggestions (nil )
218+ req := request .(* redis.MigrateClusterRequest )
219+ client := core .ExtractClient (ctx )
220+ api := redis .NewAPI (client )
221+ if req .Zone != "" {
222+ if completeRedisNoteTypeCache == nil {
223+ res , err := api .ListNodeTypes (& redis.ListNodeTypesRequest {
224+ Zone : req .Zone ,
225+ })
226+ if err != nil {
227+ return nil
228+ }
229+ completeRedisNoteTypeCache = res
230+ }
231+ for _ , nodeType := range completeRedisNoteTypeCache .NodeTypes {
232+ if strings .HasPrefix (nodeType .Name , prefix ) {
233+ suggestions = append (suggestions , nodeType .Name )
234+ }
235+ }
236+ }
237+ return suggestions
238+ }
0 commit comments