@@ -2,18 +2,18 @@ package bucketrequest
2
2
3
3
import (
4
4
"context"
5
- "fmt"
6
5
"strings"
7
6
8
7
v1 "k8s.io/api/core/v1"
8
+ "k8s.io/apimachinery/pkg/api/errors"
9
9
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
10
+ "k8s.io/client-go/util/retry"
10
11
11
12
"github.com/kubernetes-sigs/container-object-storage-interface-api/apis/objectstorage.k8s.io/v1alpha1"
12
13
bucketclientset "github.com/kubernetes-sigs/container-object-storage-interface-api/clientset"
13
14
bucketcontroller "github.com/kubernetes-sigs/container-object-storage-interface-api/controller"
14
15
"github.com/kubernetes-sigs/container-object-storage-interface-controller/pkg/util"
15
16
kubeclientset "k8s.io/client-go/kubernetes"
16
- "k8s.io/client-go/util/retry"
17
17
18
18
"github.com/golang/glog"
19
19
)
@@ -80,27 +80,33 @@ func (b *bucketRequestListener) provisionBucketRequestOperation(ctx context.Cont
80
80
// Most code here is identical to that found in controller.go of kube's controller...
81
81
bucketClassName := b .GetBucketClass (bucketRequest )
82
82
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
-
93
83
bucketClass , err := b .bucketClient .ObjectstorageV1alpha1 ().BucketClasses ().Get (ctx , bucketClassName , metav1.GetOptions {})
94
84
if bucketClass == nil {
95
85
// bucketclass does not exist in order to create a bucket
96
86
return util .ErrInvalidBucketClass
97
87
}
98
88
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
+ }
100
105
101
106
// create bucket
102
107
bucket = & v1alpha1.Bucket {}
103
- bucket .Name = fmt .Sprintf ("%s%s" , bucketRequest .Spec .BucketPrefix , util .GetUUID ())
108
+
109
+ bucket .Name = name
104
110
bucket .Spec .Provisioner = bucketClass .Provisioner
105
111
bucket .Spec .RetentionPolicy = bucketClass .RetentionPolicy
106
112
bucket .Spec .AnonymousAccessMode = bucketClass .AnonymousAccessMode
0 commit comments