filer.remote.gateway: add options to include or exclude new bucket names to mirror

This commit is contained in:
Chris Lu 2021-09-15 23:04:16 -07:00
parent b5f4910412
commit 94a01fcfcb
2 changed files with 15 additions and 0 deletions

View file

@ -22,6 +22,8 @@ type RemoteGatewayOptions struct {
timeAgo *time.Duration timeAgo *time.Duration
createBucketAt *string createBucketAt *string
createBucketRandomSuffix *bool createBucketRandomSuffix *bool
include *string
exclude *string
mappings *remote_pb.RemoteStorageMapping mappings *remote_pb.RemoteStorageMapping
remoteConfs map[string]*remote_pb.RemoteConf remoteConfs map[string]*remote_pb.RemoteConf
@ -50,6 +52,8 @@ func init() {
remoteGatewayOptions.createBucketRandomSuffix = cmdFilerRemoteGateway.Flag.Bool("createBucketWithRandomSuffix", true, "add randomized suffix to bucket name to avoid conflicts") remoteGatewayOptions.createBucketRandomSuffix = cmdFilerRemoteGateway.Flag.Bool("createBucketWithRandomSuffix", true, "add randomized suffix to bucket name to avoid conflicts")
remoteGatewayOptions.readChunkFromFiler = cmdFilerRemoteGateway.Flag.Bool("filerProxy", false, "read file chunks from filer instead of volume servers") remoteGatewayOptions.readChunkFromFiler = cmdFilerRemoteGateway.Flag.Bool("filerProxy", false, "read file chunks from filer instead of volume servers")
remoteGatewayOptions.timeAgo = cmdFilerRemoteGateway.Flag.Duration("timeAgo", 0, "start time before now. \"300ms\", \"1.5h\" or \"2h45m\". Valid time units are \"ns\", \"us\" (or \"µs\"), \"ms\", \"s\", \"m\", \"h\"") remoteGatewayOptions.timeAgo = cmdFilerRemoteGateway.Flag.Duration("timeAgo", 0, "start time before now. \"300ms\", \"1.5h\" or \"2h45m\". Valid time units are \"ns\", \"us\" (or \"µs\"), \"ms\", \"s\", \"m\", \"h\"")
remoteGatewayOptions.include = cmdFilerRemoteGateway.Flag.String("include", "", "pattens of new bucket names, e.g., s3*")
remoteGatewayOptions.exclude = cmdFilerRemoteGateway.Flag.String("exclude", "", "pattens of new bucket names, e.g., local*")
} }
var cmdFilerRemoteGateway = &Command{ var cmdFilerRemoteGateway = &Command{

View file

@ -13,6 +13,7 @@ import (
"github.com/golang/protobuf/proto" "github.com/golang/protobuf/proto"
"math" "math"
"math/rand" "math/rand"
"path/filepath"
"strings" "strings"
"time" "time"
) )
@ -75,6 +76,16 @@ func (option *RemoteGatewayOptions) makeBucketedEventProcessor(filerSource *sour
} }
bucketName := strings.ToLower(entry.Name) bucketName := strings.ToLower(entry.Name)
if *option.include != "" {
if ok, _ := filepath.Match(*option.include, entry.Name); !ok {
return nil
}
}
if *option.exclude != "" {
if ok, _ := filepath.Match(*option.exclude, entry.Name); ok {
return nil
}
}
if *option.createBucketRandomSuffix { if *option.createBucketRandomSuffix {
// https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html // https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html
if len(bucketName)+5 > 63 { if len(bucketName)+5 > 63 {