state/remote: clean up the encryption flag stuff

/cc @hobbeswalsh
This commit is contained in:
Mitchell Hashimoto 2015-06-25 09:23:12 -07:00
parent a5af429457
commit e135ff546a
2 changed files with 12 additions and 8 deletions

View File

@ -5,6 +5,7 @@ import (
"fmt" "fmt"
"io" "io"
"os" "os"
"strconv"
"github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr" "github.com/aws/aws-sdk-go/aws/awserr"
@ -33,9 +34,14 @@ func s3Factory(conf map[string]string) (Client, error) {
} }
serverSideEncryption := false serverSideEncryption := false
_, ok = conf["encrypt"] if raw, ok := conf["encrypt"]; ok {
if ok { v, err := strconv.ParseBool(raw)
serverSideEncryption = true if err != nil {
return nil, fmt.Errorf(
"'encrypt' field couldn't be parsed as bool: %s", err)
}
serverSideEncryption = v
} }
accessKeyId := conf["access_key"] accessKeyId := conf["access_key"]
@ -130,13 +136,10 @@ func (c *S3Client) Put(data []byte) error {
} }
if c.serverSideEncryption { if c.serverSideEncryption {
e := "AES256" i.ServerSideEncryption = aws.String("AES256")
i.ServerSideEncryption = &e
} }
_, err := c.nativeClient.PutObject(i) if _, err := c.nativeClient.PutObject(i); err == nil {
if err == nil {
return nil return nil
} else { } else {
return fmt.Errorf("Failed to upload state: %v", err) return fmt.Errorf("Failed to upload state: %v", err)

View File

@ -29,6 +29,7 @@ func TestS3Factory(t *testing.T) {
config["bucket"] = "foo" config["bucket"] = "foo"
config["key"] = "bar" config["key"] = "bar"
config["encrypt"] = "1" config["encrypt"] = "1"
// For this test we'll provide the credentials as config. The // For this test we'll provide the credentials as config. The
// acceptance tests implicitly test passing credentials as // acceptance tests implicitly test passing credentials as
// environment variables. // environment variables.