S3 backend: include path prefix in removal requests.

DELETE requests, both for temporary files and no longer referenced
packages, lacked the configured path prefix and therefor were not
removed if a prefix is configured.
This commit is contained in:
Moritz Bechler
2017-11-13 14:48:25 +01:00
parent 9c018ce636
commit 308ea83cc0
2 changed files with 9 additions and 2 deletions

View File

@@ -183,12 +183,12 @@ func (storage *PublishedStorage) putFile(path string, source io.ReadSeeker) erro
func (storage *PublishedStorage) Remove(path string) error {
params := &s3.DeleteObjectInput{
Bucket: aws.String(storage.bucket),
Key: aws.String(path),
Key: aws.String(filepath.Join(storage.prefix,path)),
}
_, err := storage.s3.DeleteObject(params)
if err != nil {
return errors.Wrap(err, fmt.Sprintf("error deleting %s from %s", path, storage))
}
}
if storage.plusWorkaround && strings.Contains(path, "+") {
// try to remove workaround version, but don't care about result

View File

@@ -160,6 +160,13 @@ func (s *PublishedStorageSuite) TestRemove(c *C) {
c.Check(err, IsNil)
s.AssertNoFile(c, "a/b")
s.PutFile(c, "lala/xyz", []byte("test"))
errp := s.prefixedStorage.Remove("xyz")
c.Check(errp, IsNil)
s.AssertNoFile(c, "lala/xyz")
}
func (s *PublishedStorageSuite) TestRemovePlusWorkaround(c *C) {