diff --git a/src/github.com/turt2live/matrix-media-repo/cmd/media_repo/main.go b/src/github.com/turt2live/matrix-media-repo/cmd/media_repo/main.go index f36f66289db9abe545e6e932d142da802f5c3cdf..2f4910e2ab6725caaff9659d49eebb21f22dbbbf 100644 --- a/src/github.com/turt2live/matrix-media-repo/cmd/media_repo/main.go +++ b/src/github.com/turt2live/matrix-media-repo/cmd/media_repo/main.go @@ -12,6 +12,7 @@ import ( "github.com/turt2live/matrix-media-repo/metrics" "github.com/turt2live/matrix-media-repo/storage" "github.com/turt2live/matrix-media-repo/storage/datastore" + "github.com/turt2live/matrix-media-repo/storage/datastore/ds_s3" ) func main() { @@ -55,7 +56,20 @@ func main() { logrus.Info(fmt.Sprintf("\t%s (%s): %s", ds.Type, ds.DatastoreId, ds.Uri)) if ds.Type == "s3" { + conf, err := datastore.GetDatastoreConfig(ds) + if err != nil { + continue + } + s3, err := ds_s3.GetOrCreateS3Datastore(ds.DatastoreId, conf) + if err != nil { + continue + } + + err = s3.EnsureBucketExists() + if err != nil { + logrus.Warn("\t\tBucket does not exist!") + } } } diff --git a/src/github.com/turt2live/matrix-media-repo/storage/datastore/ds_s3/s3_store.go b/src/github.com/turt2live/matrix-media-repo/storage/datastore/ds_s3/s3_store.go index 8690de717119f783cbfbe128bd14ee2a306757c0..f02ad753b44ce3927c8f476112bf5e2e40e2c569 100644 --- a/src/github.com/turt2live/matrix-media-repo/storage/datastore/ds_s3/s3_store.go +++ b/src/github.com/turt2live/matrix-media-repo/storage/datastore/ds_s3/s3_store.go @@ -57,6 +57,17 @@ func GetOrCreateS3Datastore(dsId string, conf config.DatastoreConfig) (*s3Datast return s3ds, nil } +func (s *s3Datastore) EnsureBucketExists() error { + found, err := s.client.BucketExists(s.bucket) + if err != nil { + return err + } + if !found { + return errors.New("bucket not found") + } + return nil +} + func (s *s3Datastore) UploadFile(file io.ReadCloser, ctx context.Context, log *logrus.Entry) (*types.ObjectInfo, error) { objectName, err := util.GenerateRandomString(512) if err != nil {