package main import ( "context" "fmt" "isle/bootstrap" "isle/daemon" "isle/garage" "dev.mediocregopher.com/mediocre-go-lib.git/mlog" ) func garageInitializeGlobalBucket( ctx context.Context, logger *mlog.Logger, hostBootstrap bootstrap.Bootstrap, daemonConfig daemon.Config, ) ( garage.S3APICredentials, error, ) { adminClient := daemon.NewGarageAdminClient( logger, hostBootstrap, daemonConfig, ) creds, err := adminClient.CreateS3APICredentials( ctx, garage.GlobalBucketS3APICredentialsName, ) if err != nil { return creds, fmt.Errorf("creating global bucket credentials: %w", err) } bucketID, err := adminClient.CreateBucket(ctx, garage.GlobalBucket) if err != nil { return creds, fmt.Errorf("creating global bucket: %w", err) } if err := adminClient.GrantBucketPermissions( ctx, bucketID, creds.ID, garage.BucketPermissionRead, garage.BucketPermissionWrite, ); err != nil { return creds, fmt.Errorf( "granting permissions to shared global bucket key: %w", err, ) } return creds, nil }