Skip to content
This repository has been archived by the owner on Dec 3, 2024. It is now read-only.

Commit

Permalink
Merge pull request #47 from brahmaroutu/code_refactor
Browse files Browse the repository at this point in the history
Code refactoring to make sure Buckets abd BucketAccess Add works corr…
  • Loading branch information
k8s-ci-robot authored Apr 14, 2021
2 parents 266ad28 + b3d45ee commit c784ac4
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 57 deletions.
43 changes: 6 additions & 37 deletions pkg/bucketaccessrequest/bucketaccessrequest.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
kubeclientset "k8s.io/client-go/kubernetes"
"k8s.io/client-go/util/retry"

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

name := string(bucketAccessRequest.GetUID())
_, err := baClient.Get(ctx, name, metav1.GetOptions{})
if err != nil {
// anything other than 404
if !errors.IsNotFound(err) {
klog.Errorf("error fetching bucketaccess: %v", err)
return err
}
} else { // if bucket found
return nil

if bucketAccessRequest.Spec.BucketAccessName != "" {
return util.ErrBucketAccessAlreadyExists
}

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

bucketaccess, err = baClient.Create(context.Background(), bucketaccess, metav1.CreateOptions{})
if err != nil {
if errors.IsAlreadyExists(err) {
return nil
}
if err != nil && !errors.IsAlreadyExists(err) {
return err
}

err = retry.RetryOnConflict(retry.DefaultRetry, func() error {
bucketAccessRequest.Spec.BucketAccessName = bucketaccess.Name
_, err := barClient(bucketAccessRequest.Namespace).Update(ctx, bucketAccessRequest, metav1.UpdateOptions{})
if err != nil {
return err
}
return nil
})
bucketAccessRequest.Spec.BucketAccessName = bucketaccess.Name
_, err = barClient(bucketAccessRequest.Namespace).Update(ctx, bucketAccessRequest, metav1.UpdateOptions{})
if err != nil {
return err
}
klog.Infof("Finished creating BucketAccess %v", bucketaccess.Name)
return nil
}

func (b *bucketAccessRequestListener) FindBucketAccess(ctx context.Context, bar *v1alpha1.BucketAccessRequest) *v1alpha1.BucketAccess {
bucketAccessList, err := b.bucketClient.ObjectstorageV1alpha1().BucketAccesses().List(ctx, metav1.ListOptions{})
if err != nil || len(bucketAccessList.Items) <= 0 {
return nil
}
for _, bucketaccess := range bucketAccessList.Items {
if bucketaccess.Spec.BucketAccessRequest.Name == bar.Name &&
bucketaccess.Spec.BucketAccessRequest.Namespace == bar.Namespace &&
bucketaccess.Spec.BucketAccessRequest.UID == bar.UID {
return &bucketaccess
}
}
return nil
}
28 changes: 8 additions & 20 deletions pkg/bucketrequest/bucketrequest.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/util/retry"

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

bucket, err := b.Buckets().Get(ctx, name, metav1.GetOptions{})
if err == nil {
if bucketRequest.Spec.BucketInstanceName != "" {
return util.ErrBucketAlreadyExists
} else if !errors.IsNotFound(err) { // anything other than bucket not found error is an internal error
klog.ErrorS(err, "name", name)
return err
}

// create bucket
bucket = &v1alpha1.Bucket{}
bucket := &v1alpha1.Bucket{}

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

bucket, err = b.Buckets().Create(ctx, bucket, metav1.CreateOptions{})
if err != nil {
if errors.IsAlreadyExists(err) {
return util.ErrBucketAlreadyExists
}
if err != nil && !errors.IsAlreadyExists(err) {
klog.ErrorS(err, "name", bucket.Name)
return err
}

updateBucketRequest := func() error {
bucketRequest.Spec.BucketInstanceName = bucket.Name
_, err := b.BucketRequests(bucketRequest.Namespace).Update(ctx, bucketRequest, metav1.UpdateOptions{})
if err != nil {
return err
}
return nil
bucketRequest.Spec.BucketInstanceName = bucket.Name
_, err = b.BucketRequests(bucketRequest.Namespace).Update(ctx, bucketRequest, metav1.UpdateOptions{})
if err != nil {
return err
}

return retry.RetryOnConflict(retry.DefaultRetry, updateBucketRequest)
return nil
}

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

0 comments on commit c784ac4

Please # to comment.