• Paul Stack's avatar
    Adding Manta Storage Backend (#3720) · 71817490
    Paul Stack authored
    This PR adds a new Storage Backend for Triton's Object Storage - Manta
    
    ```
    make testacc TEST=./physical/manta
    ==> Checking that code complies with gofmt requirements...
    ==> Checking that build is using go version >= 1.9.1...
    go generate
    VAULT_ACC=1 go test -tags='vault' ./physical/manta -v  -timeout 45m
    === RUN   TestMantaBackend
    --- PASS: TestMantaBackend (61.18s)
    PASS
    ok  	github.com/hashicorp/vault/physical/manta	61.210s
    ```
    
    Manta behaves differently to how S3 works - it has no such concepts of Buckets - it is merely a filesystem style object store
    
    Therefore, we have chosen the approach of when writing a secret `foo` it will actually map (on disk) as foo/.vault_value
    
    The reason for this is because if we write the secret `foo/bar` and then try and Delete a key using the name `foo` then Manta
    will complain that the folder is not empty because `foo/bar` exists. Therefore, `foo/bar` is written as `foo/bar/.vault_value`
    
    The value of the key is *always* written to a directory tree of the name and put in a `.vault_value` file.
    71817490