mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
filer.copy: automatically use the right bucket
This commit is contained in:
parent
91fd311f7a
commit
147d4d23b6
|
@ -111,11 +111,23 @@ func runCopy(cmd *Command, args []string) bool {
|
||||||
filerGrpcAddress := fmt.Sprintf("%s:%d", filerUrl.Hostname(), filerGrpcPort)
|
filerGrpcAddress := fmt.Sprintf("%s:%d", filerUrl.Hostname(), filerGrpcPort)
|
||||||
copy.grpcDialOption = security.LoadClientTLS(util.GetViper(), "grpc.client")
|
copy.grpcDialOption = security.LoadClientTLS(util.GetViper(), "grpc.client")
|
||||||
|
|
||||||
masters, collection, replication, maxMB, cipher, err := readFilerConfiguration(copy.grpcDialOption, filerGrpcAddress)
|
masters, collection, replication, dirBuckets, maxMB, cipher, err := readFilerConfiguration(copy.grpcDialOption, filerGrpcAddress)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("read from filer %s: %v\n", filerGrpcAddress, err)
|
fmt.Printf("read from filer %s: %v\n", filerGrpcAddress, err)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
if strings.HasPrefix(urlPath, dirBuckets) {
|
||||||
|
restPath := urlPath[len(dirBuckets)+1:]
|
||||||
|
if strings.Index(restPath, "/") > 0 {
|
||||||
|
expectedBucket := restPath[:strings.Index(restPath, "/")]
|
||||||
|
if *copy.collection == "" {
|
||||||
|
*copy.collection = expectedBucket
|
||||||
|
} else {
|
||||||
|
fmt.Printf("destination %s uses collection \"%s\": unexpected collection \"%v\"\n", urlPath, expectedBucket, *copy.collection)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if *copy.collection == "" {
|
if *copy.collection == "" {
|
||||||
*copy.collection = collection
|
*copy.collection = collection
|
||||||
}
|
}
|
||||||
|
@ -170,13 +182,14 @@ func runCopy(cmd *Command, args []string) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
func readFilerConfiguration(grpcDialOption grpc.DialOption, filerGrpcAddress string) (masters []string, collection, replication string, maxMB uint32, cipher bool, err error) {
|
func readFilerConfiguration(grpcDialOption grpc.DialOption, filerGrpcAddress string) (masters []string, collection, replication string, dirBuckets string, maxMB uint32, cipher bool, err error) {
|
||||||
err = pb.WithGrpcFilerClient(filerGrpcAddress, grpcDialOption, func(client filer_pb.SeaweedFilerClient) error {
|
err = pb.WithGrpcFilerClient(filerGrpcAddress, grpcDialOption, func(client filer_pb.SeaweedFilerClient) error {
|
||||||
resp, err := client.GetFilerConfiguration(context.Background(), &filer_pb.GetFilerConfigurationRequest{})
|
resp, err := client.GetFilerConfiguration(context.Background(), &filer_pb.GetFilerConfigurationRequest{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("get filer %s configuration: %v", filerGrpcAddress, err)
|
return fmt.Errorf("get filer %s configuration: %v", filerGrpcAddress, err)
|
||||||
}
|
}
|
||||||
masters, collection, replication, maxMB = resp.Masters, resp.Collection, resp.Replication, resp.MaxMb
|
masters, collection, replication, maxMB = resp.Masters, resp.Collection, resp.Replication, resp.MaxMb
|
||||||
|
dirBuckets = resp.DirBuckets
|
||||||
cipher = resp.Cipher
|
cipher = resp.Cipher
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue