@@ -2,18 +2,18 @@ package bucketrequest
22
33import (
44 "context"
5- "fmt"
65 "strings"
76
87 v1 "k8s.io/api/core/v1"
8+ "k8s.io/apimachinery/pkg/api/errors"
99 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
10+ "k8s.io/client-go/util/retry"
1011
1112 "github.com/kubernetes-sigs/container-object-storage-interface-api/apis/objectstorage.k8s.io/v1alpha1"
1213 bucketclientset "github.com/kubernetes-sigs/container-object-storage-interface-api/clientset"
1314 bucketcontroller "github.com/kubernetes-sigs/container-object-storage-interface-api/controller"
1415 "github.com/kubernetes-sigs/container-object-storage-interface-controller/pkg/util"
1516 kubeclientset "k8s.io/client-go/kubernetes"
16- "k8s.io/client-go/util/retry"
1717
1818 "github.com/golang/glog"
1919)
@@ -80,27 +80,33 @@ func (b *bucketRequestListener) provisionBucketRequestOperation(ctx context.Cont
8080 // Most code here is identical to that found in controller.go of kube's controller...
8181 bucketClassName := b .GetBucketClass (bucketRequest )
8282
83- // A previous doProvisionBucketRequest may just have finished while we were waiting for
84- // the locks. Check that bucket (with deterministic name) hasn't been provisioned
85- // yet.
86- bucket := b .FindBucket (ctx , bucketRequest )
87- if bucket != nil {
88- // bucket has been already provisioned, nothing to do.
89- glog .Info ("Bucket already exists" , bucket .Name )
90- return util .ErrBucketAlreadyExists
91- }
92-
9383 bucketClass , err := b .bucketClient .ObjectstorageV1alpha1 ().BucketClasses ().Get (ctx , bucketClassName , metav1.GetOptions {})
9484 if bucketClass == nil {
9585 // bucketclass does not exist in order to create a bucket
9686 return util .ErrInvalidBucketClass
9787 }
9888
99- glog .Infof ("Creating Bucket for BucketRequest %v" , bucketRequest .Name )
89+ name := bucketRequest .Spec .BucketPrefix
90+ if name != "" {
91+ name = name + "-"
92+ }
93+ name = name + string (bucketRequest .GetUID ())
94+
95+ bucket , err := b .bucketClient .ObjectstorageV1alpha1 ().Buckets ().Get (context .Background (), name , metav1.GetOptions {})
96+ if err != nil {
97+ // anything other than 404
98+ if ! errors .IsNotFound (err ) {
99+ glog .Errorf ("error fetching bucket: %v" , err )
100+ return err
101+ }
102+ } else { // if bucket found
103+ return nil
104+ }
100105
101106 // create bucket
102107 bucket = & v1alpha1.Bucket {}
103- bucket .Name = fmt .Sprintf ("%s%s" , bucketRequest .Spec .BucketPrefix , util .GetUUID ())
108+
109+ bucket .Name = name
104110 bucket .Spec .Provisioner = bucketClass .Provisioner
105111 bucket .Spec .RetentionPolicy = bucketClass .RetentionPolicy
106112 bucket .Spec .AnonymousAccessMode = bucketClass .AnonymousAccessMode
0 commit comments