Chris Lu
4 years ago
2 changed files with 114 additions and 4 deletions
@ -0,0 +1,87 @@ |
|||||
|
package shell |
||||
|
|
||||
|
import ( |
||||
|
"bytes" |
||||
|
"flag" |
||||
|
"io" |
||||
|
"math" |
||||
|
|
||||
|
"github.com/chrislusf/seaweedfs/weed/filer" |
||||
|
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb" |
||||
|
) |
||||
|
|
||||
|
func init() { |
||||
|
Commands = append(Commands, &commandFsConfigure{}) |
||||
|
} |
||||
|
|
||||
|
type commandFsConfigure struct { |
||||
|
} |
||||
|
|
||||
|
func (c *commandFsConfigure) Name() string { |
||||
|
return "fs.configure" |
||||
|
} |
||||
|
|
||||
|
func (c *commandFsConfigure) Help() string { |
||||
|
return `configure and apply storage options for each location |
||||
|
|
||||
|
fs.configure -locationPrfix=/my/folder - |
||||
|
|
||||
|
` |
||||
|
} |
||||
|
|
||||
|
func (c *commandFsConfigure) Do(args []string, commandEnv *CommandEnv, writer io.Writer) (err error) { |
||||
|
|
||||
|
fsConfigureCommand := flag.NewFlagSet(c.Name(), flag.ContinueOnError) |
||||
|
locationPrefix := fsConfigureCommand.String("locationPrefix", "", "path prefix") |
||||
|
collection := fsConfigureCommand.String("collection", "", "assign writes to this colletion") |
||||
|
replication := fsConfigureCommand.String("replication", "", "assign writes with this replication") |
||||
|
ttl := fsConfigureCommand.String("ttl", "", "assign writes with this ttl") |
||||
|
fsync := fsConfigureCommand.Bool("fsync", false, "fsync for the writes") |
||||
|
apply := fsConfigureCommand.Bool("apply", false, "update and apply filer configuration") |
||||
|
if err = fsConfigureCommand.Parse(args); err != nil { |
||||
|
return nil |
||||
|
} |
||||
|
|
||||
|
var buf bytes.Buffer |
||||
|
if err = commandEnv.WithFilerClient(func(client filer_pb.SeaweedFilerClient) error { |
||||
|
|
||||
|
request := &filer_pb.LookupDirectoryEntryRequest{ |
||||
|
Directory: filer.DirectoryEtc, |
||||
|
Name: filer.FilerConfName, |
||||
|
} |
||||
|
respLookupEntry, err := filer_pb.LookupEntry(client, request) |
||||
|
if err != nil { |
||||
|
return err |
||||
|
} |
||||
|
|
||||
|
return filer.StreamContent(commandEnv.MasterClient, &buf, respLookupEntry.Entry.Chunks, 0, math.MaxInt64) |
||||
|
|
||||
|
}); err != nil { |
||||
|
return err |
||||
|
} |
||||
|
|
||||
|
fc := filer.NewFilerConf() |
||||
|
if err = fc.LoadFromBytes(buf.Bytes()); err != nil { |
||||
|
return err |
||||
|
} |
||||
|
|
||||
|
if *locationPrefix != "" { |
||||
|
locConf := &filer_pb.FilerConf_PathConf{ |
||||
|
LocationPrefix: *locationPrefix, |
||||
|
Collection: *collection, |
||||
|
Replication: *replication, |
||||
|
Ttl: *ttl, |
||||
|
Fsync: *fsync, |
||||
|
} |
||||
|
fc.AddLocationConf(locConf) |
||||
|
} |
||||
|
|
||||
|
fc.ToText(writer) |
||||
|
|
||||
|
if *apply { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
return nil |
||||
|
|
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue