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

Commit 75eee0e

Browse files
committed
Adding the flow for bucket creation
1 parent 3bcc551 commit 75eee0e

File tree

2 files changed

+34
-41
lines changed

2 files changed

+34
-41
lines changed

Diff for: container-object-storage-interface-provisioner-sidecar/cmd/objectstorage-sidecar/cmd.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ func run(ctx context.Context, args []string) error {
8484
return err
8585
}
8686

87-
info, err := cosiClient.ProvisionerGetInfo(ctx, &cosi.ProvisionerGetInfoRequest{})
87+
info, err := cosiClient.DriverGetInfo(ctx, &cosi.DriverGetInfoRequest{})
8888
if err != nil {
8989
return err
9090
}

Diff for: container-object-storage-interface-provisioner-sidecar/pkg/bucket/bucket_controller.go

+33-40
Original file line numberDiff line numberDiff line change
@@ -36,23 +36,23 @@ import (
3636
)
3737

3838
const (
39-
brFinalizer = "cosi.objectstorage.k8s.io/bucketrequest-protection"
39+
brFinalizer = "cosi.objectstorage.k8s.io/bucketclaim-protection"
4040
)
4141

4242
// BucketListener manages Bucket objects
4343
type BucketListener struct {
4444
provisionerClient cosi.ProvisionerClient
45-
provisionerName string
45+
driverName string
4646

4747
kubeClient kube.Interface
4848
bucketClient buckets.Interface
4949
kubeVersion *utilversion.Version
5050
}
5151

5252
// NewBucketListener returns a resource handler for Bucket objects
53-
func NewBucketListener(provisionerName string, client cosi.ProvisionerClient) *BucketListener {
53+
func NewBucketListener(driverName string, client cosi.ProvisionerClient) *BucketListener {
5454
bl := &BucketListener{
55-
provisionerName: provisionerName,
55+
driverName: driverName,
5656
provisionerClient: client,
5757
}
5858

@@ -71,37 +71,28 @@ func (b *BucketListener) Add(ctx context.Context, inputBucket *v1alpha1.Bucket)
7171
"bucketclass", bucket.Spec.BucketClassName,
7272
)
7373

74-
if !strings.EqualFold(bucket.Spec.Provisioner, b.provisionerName) {
75-
klog.V(5).InfoS("Skipping bucket for provisiner",
74+
if !strings.EqualFold(bucket.Spec.DriverName, b.driverName) {
75+
klog.V(5).InfoS("Skipping bucket for driver",
7676
"bucket", bucket.Name,
77-
"provisioner", bucket.Spec.Provisioner,
77+
"driver", bucket.Spec.DriverName,
7878
)
7979
return nil
8080
}
8181

8282
if bucket.Status.BucketAvailable {
8383
klog.V(5).InfoS("BucketExists",
8484
"bucket", bucket.Name,
85-
"provisioner", bucket.Spec.Provisioner,
85+
"driver", bucket.Spec.DriverName,
8686
)
8787
return nil
8888
}
8989

90-
proto, err := bucket.Spec.Protocol.ConvertToExternal()
91-
if err != nil {
92-
klog.ErrorS(err, "Invalid protocol",
93-
"bucket", bucket.Name)
94-
95-
return errors.Wrap(err, "Failed to parse protocol for API")
96-
}
97-
98-
req := &cosi.ProvisionerCreateBucketRequest{
90+
req := &cosi.DriverCreateBucketRequest{
9991
Parameters: bucket.Spec.Parameters,
100-
Protocol: proto,
10192
Name: bucket.Name,
10293
}
10394

104-
rsp, err := b.provisionerClient.ProvisionerCreateBucket(ctx, req)
95+
rsp, err := b.provisionerClient.DriverCreateBucket(ctx, req)
10596
if err != nil {
10697
if status.Code(err) != codes.AlreadyExists {
10798
klog.ErrorS(err, "Failed to create bucket",
@@ -111,7 +102,7 @@ func (b *BucketListener) Add(ctx context.Context, inputBucket *v1alpha1.Bucket)
111102

112103
}
113104
if rsp == nil {
114-
err := errors.New("ProvisionerCreateBucket returned a nil response")
105+
err := errors.New("DriverCreateBucket returned a nil response")
115106
klog.ErrorS(err, "Internal Error")
116107
return err
117108
}
@@ -120,8 +111,7 @@ func (b *BucketListener) Add(ctx context.Context, inputBucket *v1alpha1.Bucket)
120111
bucket.Status.BucketID = rsp.BucketId
121112
}
122113

123-
bucket.Status.Message = "Bucket Provisioned"
124-
bucket.Status.BucketAvailable = true
114+
bucket.Status.BucketReady = true
125115

126116
// if this step fails, then controller will retry with backoff
127117
if _, err := b.Buckets().UpdateStatus(ctx, bucket, metav1.UpdateOptions{}); err != nil {
@@ -156,30 +146,33 @@ func (b *BucketListener) Delete(ctx context.Context, inputBucket *v1alpha1.Bucke
156146
"bucketclass", bucket.Spec.BucketClassName,
157147
)
158148

159-
if !strings.EqualFold(bucket.Spec.Provisioner, b.provisionerName) {
149+
if !strings.EqualFold(bucket.Spec.DriverName, b.driverName) {
160150
klog.V(5).InfoS("Skipping bucket for provisiner",
161151
"bucket", bucket.Name,
162-
"provisioner", bucket.Spec.Provisioner,
152+
"driver", bucket.Spec.DriverName,
163153
)
164154
return nil
165155
}
166156

167-
req := &cosi.ProvisionerDeleteBucketRequest{
168-
BucketId: bucket.Status.BucketID,
169-
}
157+
// We ask the driver to clean up the bucket from the storage provider
158+
// only when the retain policy is set to Delete
159+
if bucket.Spec.DeletionPolicy == bucketapi.DeletionPolicyDelete {
160+
req := &cosi.DriverDeleteBucketRequest{
161+
BucketId: bucket.Status.BucketID,
162+
}
170163

171-
if _, err := b.provisionerClient.ProvisionerDeleteBucket(ctx, req); err != nil {
172-
if status.Code(err) != codes.NotFound {
173-
klog.ErrorS(err, "Failed to delete bucket",
174-
"bucket", bucket.Name,
175-
)
176-
return err
164+
if _, err := b.provisionerClient.DriverDeleteBucket(ctx, req); err != nil {
165+
if status.Code(err) != codes.NotFound {
166+
klog.ErrorS(err, "Failed to delete bucket",
167+
"bucket", bucket.Name,
168+
)
169+
return err
170+
}
177171
}
178172
}
179173

180-
// TODO, check bucket.Spec.DeletionPolicy
181-
182174
bucket.Status.BucketAvailable = false
175+
bucket.Status.BucketID = ""
183176

184177
// if this step fails, then controller will retry with backoff
185178
if _, err := b.Buckets().UpdateStatus(ctx, bucket, metav1.UpdateOptions{}); err != nil {
@@ -188,15 +181,15 @@ func (b *BucketListener) Delete(ctx context.Context, inputBucket *v1alpha1.Bucke
188181
return errors.Wrap(err, "Failed to update bucket")
189182
}
190183

191-
if bucket.Spec.BucketRequest != nil {
192-
ref := bucket.Spec.BucketRequest
193-
bucketRequest, err := b.bucketClient.ObjectstorageV1alpha1().BucketRequests(ref.Namespace).Get(ctx, ref.Name, metav1.GetOptions{})
184+
if bucket.Spec.BucketClaim != nil {
185+
ref := bucket.Spec.BucketClaim
186+
bucketClaim, err := b.bucketClient.ObjectstorageV1alpha1().BucketClaims(ref.Namespace).Get(ctx, ref.Name, metav1.GetOptions{})
194187
if err != nil {
195188
return err
196189
}
197190

198-
controllerutil.RemoveFinalizer(bucketRequest, brFinalizer)
199-
if _, err := b.bucketClient.ObjectstorageV1alpha1().BucketRequests(bucketRequest.Namespace).Update(ctx, bucketRequest, metav1.UpdateOptions{}); err != nil {
191+
controllerutil.RemoveFinalizer(bucketClaim, brFinalizer)
192+
if _, err := b.bucketClient.ObjectstorageV1alpha1().BucketClaims(bucketClaim.Namespace).Update(ctx, bucketClaim, metav1.UpdateOptions{}); err != nil {
200193
return err
201194
}
202195
}

0 commit comments

Comments
 (0)