Fully implement local and container MRVA
This commit is contained in:
38
pkg/common/minio.go
Normal file
38
pkg/common/minio.go
Normal file
@@ -0,0 +1,38 @@
|
||||
package common
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log/slog"
|
||||
|
||||
"github.com/minio/minio-go/v7"
|
||||
)
|
||||
|
||||
func CreateMinIOBucketIfNotExists(client *minio.Client, bucketName string) error {
|
||||
ctx := context.Background()
|
||||
|
||||
exists, err := client.BucketExists(ctx, bucketName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if !exists {
|
||||
slog.Info("Creating bucket", "name", bucketName)
|
||||
err = client.MakeBucket(ctx, bucketName, minio.MakeBucketOptions{})
|
||||
if err != nil {
|
||||
// The bucket might already exist at this stage if another component created it concurrently.
|
||||
// For example, the server might have attempted to create it at the same time as the agent.
|
||||
if err.(minio.ErrorResponse).Code == "BucketAlreadyOwnedByYou" {
|
||||
slog.Info("Failed to create bucket because it already exists", "name", bucketName)
|
||||
return nil
|
||||
} else {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
slog.Info("Bucket created successfully", "name", bucketName)
|
||||
}
|
||||
} else {
|
||||
slog.Info("Bucket already exists", "name", bucketName)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user