Skip to content

Commit fc06640

Browse files
committed
Code refactoring to make sure Buckets abd BucketAccess Add works correctly
1 parent bab4596 commit fc06640

File tree

2 files changed

+14
-57
lines changed

2 files changed

+14
-57
lines changed

container-object-storage-interface-controller/pkg/bucketaccessrequest/bucketaccessrequest.go

+6-37
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"k8s.io/apimachinery/pkg/api/errors"
88
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
99
kubeclientset "k8s.io/client-go/kubernetes"
10-
"k8s.io/client-go/util/retry"
1110

1211
"github.com/kubernetes-sigs/container-object-storage-interface-controller/pkg/util"
1312
"sigs.k8s.io/container-object-storage-interface-api/apis/objectstorage.k8s.io/v1alpha1"
@@ -78,15 +77,9 @@ func (b *bucketAccessRequestListener) provisionBucketAccess(ctx context.Context,
7877
coreClient := b.kubeClient.CoreV1()
7978

8079
name := string(bucketAccessRequest.GetUID())
81-
_, err := baClient.Get(ctx, name, metav1.GetOptions{})
82-
if err != nil {
83-
// anything other than 404
84-
if !errors.IsNotFound(err) {
85-
klog.Errorf("error fetching bucketaccess: %v", err)
86-
return err
87-
}
88-
} else { // if bucket found
89-
return nil
80+
81+
if bucketAccessRequest.Spec.BucketAccessName != "" {
82+
return util.ErrBucketAccessAlreadyExists
9083
}
9184

9285
bucketAccessClassName := bucketAccessRequest.Spec.BucketAccessClassName
@@ -145,39 +138,15 @@ func (b *bucketAccessRequestListener) provisionBucketAccess(ctx context.Context,
145138
bucketaccess.Spec.Parameters = util.CopySS(bucketAccessClass.Parameters)
146139

147140
bucketaccess, err = baClient.Create(context.Background(), bucketaccess, metav1.CreateOptions{})
148-
if err != nil {
149-
if errors.IsAlreadyExists(err) {
150-
return nil
151-
}
141+
if err != nil && !errors.IsAlreadyExists(err) {
152142
return err
153143
}
154144

155-
err = retry.RetryOnConflict(retry.DefaultRetry, func() error {
156-
bucketAccessRequest.Spec.BucketAccessName = bucketaccess.Name
157-
_, err := barClient(bucketAccessRequest.Namespace).Update(ctx, bucketAccessRequest, metav1.UpdateOptions{})
158-
if err != nil {
159-
return err
160-
}
161-
return nil
162-
})
145+
bucketAccessRequest.Spec.BucketAccessName = bucketaccess.Name
146+
_, err = barClient(bucketAccessRequest.Namespace).Update(ctx, bucketAccessRequest, metav1.UpdateOptions{})
163147
if err != nil {
164148
return err
165149
}
166150
klog.Infof("Finished creating BucketAccess %v", bucketaccess.Name)
167151
return nil
168152
}
169-
170-
func (b *bucketAccessRequestListener) FindBucketAccess(ctx context.Context, bar *v1alpha1.BucketAccessRequest) *v1alpha1.BucketAccess {
171-
bucketAccessList, err := b.bucketClient.ObjectstorageV1alpha1().BucketAccesses().List(ctx, metav1.ListOptions{})
172-
if err != nil || len(bucketAccessList.Items) <= 0 {
173-
return nil
174-
}
175-
for _, bucketaccess := range bucketAccessList.Items {
176-
if bucketaccess.Spec.BucketAccessRequest.Name == bar.Name &&
177-
bucketaccess.Spec.BucketAccessRequest.Namespace == bar.Namespace &&
178-
bucketaccess.Spec.BucketAccessRequest.UID == bar.UID {
179-
return &bucketaccess
180-
}
181-
}
182-
return nil
183-
}

container-object-storage-interface-controller/pkg/bucketrequest/bucketrequest.go

+8-20
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
v1 "k8s.io/api/core/v1"
77
"k8s.io/apimachinery/pkg/api/errors"
88
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
9-
"k8s.io/client-go/util/retry"
109

1110
"github.com/kubernetes-sigs/container-object-storage-interface-controller/pkg/util"
1211
kubeclientset "k8s.io/client-go/kubernetes"
@@ -101,16 +100,12 @@ func (b *bucketRequestListener) provisionBucketRequestOperation(ctx context.Cont
101100
}
102101
name = name + string(bucketRequest.GetUID())
103102

104-
bucket, err := b.Buckets().Get(ctx, name, metav1.GetOptions{})
105-
if err == nil {
103+
if bucketRequest.Spec.BucketInstanceName != "" {
106104
return util.ErrBucketAlreadyExists
107-
} else if !errors.IsNotFound(err) { // anything other than bucket not found error is an internal error
108-
klog.ErrorS(err, "name", name)
109-
return err
110105
}
111106

112107
// create bucket
113-
bucket = &v1alpha1.Bucket{}
108+
bucket := &v1alpha1.Bucket{}
114109

115110
bucket.Name = name
116111
bucket.Spec.Provisioner = bucketClass.Provisioner
@@ -127,24 +122,17 @@ func (b *bucketRequestListener) provisionBucketRequestOperation(ctx context.Cont
127122
bucket.Spec.Parameters = util.CopySS(bucketClass.Parameters)
128123

129124
bucket, err = b.Buckets().Create(ctx, bucket, metav1.CreateOptions{})
130-
if err != nil {
131-
if errors.IsAlreadyExists(err) {
132-
return util.ErrBucketAlreadyExists
133-
}
125+
if err != nil && !errors.IsAlreadyExists(err) {
134126
klog.ErrorS(err, "name", bucket.Name)
135127
return err
136128
}
137129

138-
updateBucketRequest := func() error {
139-
bucketRequest.Spec.BucketInstanceName = bucket.Name
140-
_, err := b.BucketRequests(bucketRequest.Namespace).Update(ctx, bucketRequest, metav1.UpdateOptions{})
141-
if err != nil {
142-
return err
143-
}
144-
return nil
130+
bucketRequest.Spec.BucketInstanceName = bucket.Name
131+
_, err = b.BucketRequests(bucketRequest.Namespace).Update(ctx, bucketRequest, metav1.UpdateOptions{})
132+
if err != nil {
133+
return err
145134
}
146-
147-
return retry.RetryOnConflict(retry.DefaultRetry, updateBucketRequest)
135+
return nil
148136
}
149137

150138
// getBucketClass returns BucketClassName. If no bucket class was in the request it returns empty

0 commit comments

Comments
 (0)