From 36561b93f27a73935b2db7be4abb65b5baf2061e Mon Sep 17 00:00:00 2001 From: Ben McClelland Date: Thu, 10 Oct 2024 15:23:20 -0700 Subject: [PATCH] fix: add admin region cli option The admin client option for region was using the global region option. This was confusing for users since the access/secret are specified after the admin subcommand. Fixes #880 --- cmd/versitygw/admin.go | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/cmd/versitygw/admin.go b/cmd/versitygw/admin.go index f9e9a514..2f7be43b 100644 --- a/cmd/versitygw/admin.go +++ b/cmd/versitygw/admin.go @@ -37,6 +37,7 @@ import ( var ( adminAccess string adminSecret string + adminRegion string adminEndpoint string allowInsecure bool ) @@ -171,6 +172,14 @@ func adminCommand() *cli.Command { Required: true, Destination: &adminSecret, }, + &cli.StringFlag{ + Name: "region", + Usage: "admin s3 region string", + EnvVars: []string{"ADMIN_REGION"}, + Value: "us-east-1", + Destination: &adminRegion, + Aliases: []string{"r"}, + }, &cli.StringFlag{ Name: "endpoint-url", Usage: "admin apis endpoint url", @@ -232,7 +241,7 @@ func createUser(ctx *cli.Context) error { req.Header.Set("X-Amz-Content-Sha256", hexPayload) - signErr := signer.SignHTTP(req.Context(), aws.Credentials{AccessKeyID: adminAccess, SecretAccessKey: adminSecret}, req, hexPayload, "s3", region, time.Now()) + signErr := signer.SignHTTP(req.Context(), aws.Credentials{AccessKeyID: adminAccess, SecretAccessKey: adminSecret}, req, hexPayload, "s3", adminRegion, time.Now()) if signErr != nil { return fmt.Errorf("failed to sign the request: %w", err) } @@ -277,7 +286,7 @@ func deleteUser(ctx *cli.Context) error { req.Header.Set("X-Amz-Content-Sha256", hexPayload) - signErr := signer.SignHTTP(req.Context(), aws.Credentials{AccessKeyID: adminAccess, SecretAccessKey: adminSecret}, req, hexPayload, "s3", region, time.Now()) + signErr := signer.SignHTTP(req.Context(), aws.Credentials{AccessKeyID: adminAccess, SecretAccessKey: adminSecret}, req, hexPayload, "s3", adminRegion, time.Now()) if signErr != nil { return fmt.Errorf("failed to sign the request: %w", err) } @@ -334,7 +343,7 @@ func updateUser(ctx *cli.Context) error { req.Header.Set("X-Amz-Content-Sha256", hexPayload) - signErr := signer.SignHTTP(req.Context(), aws.Credentials{AccessKeyID: adminAccess, SecretAccessKey: adminSecret}, req, hexPayload, "s3", region, time.Now()) + signErr := signer.SignHTTP(req.Context(), aws.Credentials{AccessKeyID: adminAccess, SecretAccessKey: adminSecret}, req, hexPayload, "s3", adminRegion, time.Now()) if signErr != nil { return fmt.Errorf("failed to sign the request: %w", err) } @@ -374,7 +383,7 @@ func listUsers(ctx *cli.Context) error { req.Header.Set("X-Amz-Content-Sha256", hexPayload) - signErr := signer.SignHTTP(req.Context(), aws.Credentials{AccessKeyID: adminAccess, SecretAccessKey: adminSecret}, req, hexPayload, "s3", region, time.Now()) + signErr := signer.SignHTTP(req.Context(), aws.Credentials{AccessKeyID: adminAccess, SecretAccessKey: adminSecret}, req, hexPayload, "s3", adminRegion, time.Now()) if signErr != nil { return fmt.Errorf("failed to sign the request: %w", err) } @@ -441,7 +450,7 @@ func changeBucketOwner(ctx *cli.Context) error { req.Header.Set("X-Amz-Content-Sha256", hexPayload) - signErr := signer.SignHTTP(req.Context(), aws.Credentials{AccessKeyID: adminAccess, SecretAccessKey: adminSecret}, req, hexPayload, "s3", region, time.Now()) + signErr := signer.SignHTTP(req.Context(), aws.Credentials{AccessKeyID: adminAccess, SecretAccessKey: adminSecret}, req, hexPayload, "s3", adminRegion, time.Now()) if signErr != nil { return fmt.Errorf("failed to sign the request: %w", err) } @@ -493,7 +502,7 @@ func listBuckets(ctx *cli.Context) error { req.Header.Set("X-Amz-Content-Sha256", hexPayload) - signErr := signer.SignHTTP(req.Context(), aws.Credentials{AccessKeyID: adminAccess, SecretAccessKey: adminSecret}, req, hexPayload, "s3", region, time.Now()) + signErr := signer.SignHTTP(req.Context(), aws.Credentials{AccessKeyID: adminAccess, SecretAccessKey: adminSecret}, req, hexPayload, "s3", adminRegion, time.Now()) if signErr != nil { return fmt.Errorf("failed to sign the request: %w", err) }