From ef4c555e90a0c36112324379e54f96002b477f34 Mon Sep 17 00:00:00 2001 From: Konstantin Lebedev <9497591+kmlebedev@users.noreply.github.com> Date: Mon, 5 Aug 2024 21:22:17 +0500 Subject: [PATCH] [shell] volume.grow (#5855) --- weed/shell/command_volume_grow.go | 64 +++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 weed/shell/command_volume_grow.go diff --git a/weed/shell/command_volume_grow.go b/weed/shell/command_volume_grow.go new file mode 100644 index 000000000..21d98dddd --- /dev/null +++ b/weed/shell/command_volume_grow.go @@ -0,0 +1,64 @@ +package shell + +import ( + "context" + "flag" + "fmt" + "github.com/seaweedfs/seaweedfs/weed/pb/master_pb" + "io" +) + +func init() { + Commands = append(Commands, &commandGrow{}) +} + +type commandGrow struct { +} + +func (c *commandGrow) Name() string { + return "volume.grow" +} + +func (c *commandGrow) Help() string { + return `grow volumes + + volume.grow [-collection=] [-dataCenter=] + +` +} + +func (c *commandGrow) Do(args []string, commandEnv *CommandEnv, writer io.Writer) (err error) { + + volumeVacuumCommand := flag.NewFlagSet(c.Name(), flag.ContinueOnError) + growCount := volumeVacuumCommand.Uint("count", 2, "") + collection := volumeVacuumCommand.String("collection", "", "grow this collection") + dataCenter := volumeVacuumCommand.String("dataCenter", "", "grow volumes only from the specified data center") + + if err = volumeVacuumCommand.Parse(args); err != nil { + return nil + } + + assignRequest := &master_pb.AssignRequest{ + Count: 0, + Collection: *collection, + WritableVolumeCount: uint32(*growCount), + } + if *dataCenter != "" { + assignRequest.DataCenter = *dataCenter + } + + err = commandEnv.MasterClient.WithClient(false, func(client master_pb.SeaweedClient) error { + _, err := client.Assign(context.Background(), assignRequest) + + if err != nil { + return fmt.Errorf("Assign: %v", err) + } + return nil + }) + + if err != nil { + return + } + + return nil +}