Allow bucket creation in different regions, closes #4287 and #4241

* I needed to remove the region check from PutBucketHandler
This commit is contained in:
Remco Verhoef 2017-05-08 14:40:27 -07:00 committed by Harshavardhana
parent 07949f68d8
commit 0a8cf1a6b0
3 changed files with 13 additions and 19 deletions

View File

@ -206,10 +206,8 @@ func (l *gcsGateway) MakeBucket(bucket string) error {
func (l *gcsGateway) MakeBucketWithLocation(bucket, location string) error { func (l *gcsGateway) MakeBucketWithLocation(bucket, location string) error {
bkt := l.client.Bucket(bucket) bkt := l.client.Bucket(bucket)
// TODO: location
_ = location
if err := bkt.Create(l.ctx, l.projectID, &storage.BucketAttrs{ if err := bkt.Create(l.ctx, l.projectID, &storage.BucketAttrs{
Location: "US", Location: location,
}); err != nil { }); err != nil {
return gcsToObjectError(traceError(err), bucket) return gcsToObjectError(traceError(err), bucket)
} }

View File

@ -651,15 +651,6 @@ func (api gatewayAPIHandlers) PutBucketHandler(w http.ResponseWriter, r *http.Re
return return
} }
// validating region here, because isValidLocationConstraint
// reads body which has been read already. So only validating
// region here.
serverRegion := serverConfig.GetRegion()
if serverRegion != location {
writeErrorResponse(w, ErrInvalidRegion, r.URL)
return
}
bucketLock := globalNSMutex.NewNSLock(bucket, "") bucketLock := globalNSMutex.NewNSLock(bucket, "")
bucketLock.Lock() bucketLock.Lock()
defer bucketLock.Unlock() defer bucketLock.Unlock()

View File

@ -180,14 +180,20 @@ const (
) )
// Returns access and secretkey set from environment variables. // Returns access and secretkey set from environment variables.
func mustGetGatewayCredsFromEnv() (accessKey, secretKey string) { func mustGetGatewayConfigFromEnv() (string, string, string) {
// Fetch access keys from environment variables. // Fetch access keys from environment variables.
accessKey = os.Getenv("MINIO_ACCESS_KEY") accessKey := os.Getenv("MINIO_ACCESS_KEY")
secretKey = os.Getenv("MINIO_SECRET_KEY") secretKey := os.Getenv("MINIO_SECRET_KEY")
if accessKey == "" || secretKey == "" { if accessKey == "" || secretKey == "" {
fatalIf(errors.New("Missing credentials"), "Access and secret keys are mandatory to run Minio gateway server.") fatalIf(errors.New("Missing credentials"), "Access and secret keys are mandatory to run Minio gateway server.")
} }
return accessKey, secretKey
region := globalMinioDefaultRegion
if v := os.Getenv("MINIO_REGION"); v != "" {
region = v
}
return accessKey, secretKey, region
} }
// Set browser setting from environment variables // Set browser setting from environment variables
@ -336,14 +342,13 @@ func gcsGatewayMain(ctx *cli.Context) {
// Handler for 'minio gateway'. // Handler for 'minio gateway'.
func gatewayMain(ctx *cli.Context, backendType gatewayBackend) { func gatewayMain(ctx *cli.Context, backendType gatewayBackend) {
// Fetch access and secret key from env. // Fetch access and secret key from env.
accessKey, secretKey := mustGetGatewayCredsFromEnv() accessKey, secretKey, region := mustGetGatewayConfigFromEnv()
// Fetch browser env setting // Fetch browser env setting
mustSetBrowserSettingFromEnv() mustSetBrowserSettingFromEnv()
// Initialize new gateway config. // Initialize new gateway config.
newGatewayConfig(accessKey, secretKey, region)
newGatewayConfig(accessKey, secretKey, globalMinioDefaultRegion)
// Get quiet flag from command line argument. // Get quiet flag from command line argument.
quietFlag := ctx.Bool("quiet") || ctx.GlobalBool("quiet") quietFlag := ctx.Bool("quiet") || ctx.GlobalBool("quiet")