Skip to content

Commit 600b028

Browse files
authored
Merge pull request kubernetes-retired#15 from brahmaroutu/controller_code_ba
Adding BucketAccess Add Functionality, Fix cmd controller and pass co…
2 parents 5d7ae6e + 94947cc commit 600b028

File tree

8 files changed

+605
-49
lines changed

8 files changed

+605
-49
lines changed

Diff for: container-object-storage-interface-controller/cmd/controller-manager/controller-manager.go

+8-6
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/spf13/viper"
1212

1313
bucketcontroller "github.com/kubernetes-sigs/container-object-storage-interface-api/controller"
14+
"github.com/kubernetes-sigs/container-object-storage-interface-controller/pkg/bucketaccessrequest"
1415
"github.com/kubernetes-sigs/container-object-storage-interface-controller/pkg/bucketrequest"
1516

1617
"github.com/golang/glog"
@@ -59,20 +60,20 @@ func init() {
5960
}
6061

6162
func main() {
62-
if err := cmd.Execute(); err != nil {
63-
glog.Fatal(err.Error())
64-
}
65-
66-
var cancel context.CancelFunc
63+
ctx, cancel := context.WithCancel(context.Background())
64+
defer cancel() // Just in case
6765

68-
_, cancel = context.WithCancel(cmd.Context())
6966
sigs := make(chan os.Signal, 1)
7067
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
7168

7269
go func() {
7370
<-sigs
7471
cancel()
7572
}()
73+
74+
if err := cmd.ExecuteContext(ctx); err != nil {
75+
glog.Fatal(err.Error())
76+
}
7677
}
7778

7879
func run(ctx context.Context, args []string) error {
@@ -81,5 +82,6 @@ func run(ctx context.Context, args []string) error {
8182
return err
8283
}
8384
ctrl.AddBucketRequestListener(bucketrequest.NewListener())
85+
ctrl.AddBucketAccessRequestListener(bucketaccessrequest.NewListener())
8486
return ctrl.Run(ctx)
8587
}

Diff for: container-object-storage-interface-controller/go.mod

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ go 1.15
44

55
require (
66
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
7-
github.com/kubernetes-sigs/container-object-storage-interface-api v0.0.0-20201204201926-43539346a903
7+
github.com/kubernetes-sigs/container-object-storage-interface-api v0.0.0-20201210173615-0c3244fa34b9
88
github.com/spf13/cobra v1.1.1
99
github.com/spf13/viper v1.7.1
1010
golang.org/x/time v0.0.0-20191024005414-555d28b269f0
11+
k8s.io/api v0.19.4
1112
k8s.io/apiextensions-apiserver v0.19.4
1213
k8s.io/apimachinery v0.19.4
1314
k8s.io/client-go v0.19.4

Diff for: container-object-storage-interface-controller/go.sum

+7-4
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,7 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO
257257
github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=
258258
github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
259259
github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
260+
github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
260261
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
261262
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
262263
github.com/imdario/mergo v0.3.5 h1:JboBksRwiiAJWvIYJVo46AfV+IAIKZpfrSzVKj42R4Q=
@@ -289,8 +290,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
289290
github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=
290291
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
291292
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
292-
github.com/kubernetes-sigs/container-object-storage-interface-api v0.0.0-20201204201926-43539346a903 h1:kBd9bCHv429J7Y8Mp2w1Xg3QtDiRAhittzYC/45/G2E=
293-
github.com/kubernetes-sigs/container-object-storage-interface-api v0.0.0-20201204201926-43539346a903/go.mod h1:C7tjzC+nLe7H7+3UM/Z6a7F24yxOO8FSK3ZaVZrKDPQ=
293+
github.com/kubernetes-sigs/container-object-storage-interface-api v0.0.0-20201210173615-0c3244fa34b9 h1:1Zmlu1GKd1iIv9fdc1mkaTuUtoNqet4NLYLE/8p9ylw=
294+
github.com/kubernetes-sigs/container-object-storage-interface-api v0.0.0-20201210173615-0c3244fa34b9/go.mod h1:C7tjzC+nLe7H7+3UM/Z6a7F24yxOO8FSK3ZaVZrKDPQ=
294295
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
295296
github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4=
296297
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
@@ -336,13 +337,15 @@ github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn
336337
github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
337338
github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
338339
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
340+
github.com/onsi/ginkgo v1.11.0 h1:JAKSXpt1YjtLA7YpPiqO9ss6sNXEsPfSGdwN0UHqzrw=
339341
github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
340342
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
341343
github.com/onsi/ginkgo v1.14.2 h1:8mVmC9kjFFmA8H4pKMUhcblgifdkOIXPvbhN1T36q1M=
342344
github.com/onsi/ginkgo v1.14.2/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
343345
github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
344346
github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
345347
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
348+
github.com/onsi/gomega v1.8.1 h1:C5Dqfs/LeauYDX0jJXIe2SWmwCbGzx9yF8C8xy3Lh34=
346349
github.com/onsi/gomega v1.8.1/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA=
347350
github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE=
348351
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
@@ -486,7 +489,6 @@ golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCc
486489
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
487490
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
488491
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
489-
golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ=
490492
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
491493
golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
492494
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
@@ -661,6 +663,7 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogR
661663
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
662664
gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
663665
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
666+
gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
664667
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
665668
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
666669
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
@@ -693,7 +696,6 @@ k8s.io/api v0.18.6/go.mod h1:eeyxr+cwCjMdLAmr2W3RyDI0VvTawSg/3RFFBEnmZGI=
693696
k8s.io/api v0.19.4 h1:I+1I4cgJYuCDgiLNjKx7SLmIbwgj9w7N7Zr5vSIdwpo=
694697
k8s.io/api v0.19.4/go.mod h1:SbtJ2aHCItirzdJ36YslycFNzWADYH3tgOhvBEFtZAk=
695698
k8s.io/apiextensions-apiserver v0.18.2/go.mod h1:q3faSnRGmYimiocj6cHQ1I3WpLqmDgJFlKL37fC4ZvY=
696-
k8s.io/apiextensions-apiserver v0.18.6 h1:vDlk7cyFsDyfwn2rNAO2DbmUbvXy5yT5GE3rrqOzaMo=
697699
k8s.io/apiextensions-apiserver v0.18.6/go.mod h1:lv89S7fUysXjLZO7ke783xOwVTm6lKizADfvUM/SS/M=
698700
k8s.io/apiextensions-apiserver v0.19.4 h1:D9ak9T012tb3vcGFWYmbQuj9SCC8YM4zhA4XZqsAQC4=
699701
k8s.io/apiextensions-apiserver v0.19.4/go.mod h1:B9rpH/nu4JBCtuUp3zTTk8DEjZUupZTBEec7/2zNRYw=
@@ -727,6 +729,7 @@ k8s.io/klog/v2 v2.2.0 h1:XRvcwJozkgZ1UQJmfMGpvRthQHOvihEhYtDfAaxMz/A=
727729
k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
728730
k8s.io/kube-openapi v0.0.0-20200121204235-bf4fb3bd569c/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E=
729731
k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E=
732+
k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6 h1:+WnxoVtG8TMiudHBSEtrVL1egv36TkkJm+bA8AxicmQ=
730733
k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o=
731734
k8s.io/kube-openapi v0.0.0-20200923155610-8b5066479488 h1:mNpvQf4lkIHNOXCoM+Veu/UXwA56Yx1J7hY1Tvcs/oM=
732735
k8s.io/kube-openapi v0.0.0-20200923155610-8b5066479488/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o=
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
package bucketaccessrequest
2+
3+
import (
4+
"context"
5+
6+
v1 "k8s.io/api/core/v1"
7+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
8+
9+
"github.com/kubernetes-sigs/container-object-storage-interface-api/apis/objectstorage.k8s.io/v1alpha1"
10+
bucketclientset "github.com/kubernetes-sigs/container-object-storage-interface-api/clientset"
11+
bucketcontroller "github.com/kubernetes-sigs/container-object-storage-interface-api/controller"
12+
"github.com/kubernetes-sigs/container-object-storage-interface-controller/pkg/util"
13+
kubeclientset "k8s.io/client-go/kubernetes"
14+
"k8s.io/client-go/util/retry"
15+
16+
"github.com/golang/glog"
17+
)
18+
19+
type bucketAccessRequestListener struct {
20+
kubeClient kubeclientset.Interface
21+
bucketClient bucketclientset.Interface
22+
}
23+
24+
func NewListener() bucketcontroller.BucketAccessRequestListener {
25+
return &bucketAccessRequestListener{}
26+
}
27+
28+
func (b *bucketAccessRequestListener) InitializeKubeClient(k kubeclientset.Interface) {
29+
b.kubeClient = k
30+
}
31+
32+
func (b *bucketAccessRequestListener) InitializeBucketClient(bc bucketclientset.Interface) {
33+
b.bucketClient = bc
34+
}
35+
36+
func (b *bucketAccessRequestListener) Add(ctx context.Context, obj *v1alpha1.BucketAccessRequest) error {
37+
glog.V(1).Infof("Add called for BucketAccessRequest %s", obj.Name)
38+
bucketAccessRequest := obj
39+
40+
err := b.provisionBucketAccess(ctx, bucketAccessRequest)
41+
if err != nil {
42+
// Provisioning is 100% finished / not in progress.
43+
switch err {
44+
case util.ErrInvalidBucketAccessClass:
45+
glog.V(1).Infof("BucketAccessClass specified does not exist while processing BucketAccessRequest %v.", bucketAccessRequest.Name)
46+
err = nil
47+
case util.ErrBucketAccessAlreadyExists:
48+
glog.V(1).Infof("BucketAccess already exist for this BucketAccessRequest %v.", bucketAccessRequest.Name)
49+
err = nil
50+
default:
51+
glog.V(1).Infof("Error occurred processing BucketAccessRequest %v: %v", bucketAccessRequest.Name, err)
52+
}
53+
return err
54+
}
55+
56+
glog.V(1).Infof("BucketAccessRequest %v is successfully processed.", bucketAccessRequest.Name)
57+
return nil
58+
}
59+
60+
func (b *bucketAccessRequestListener) Update(ctx context.Context, old, new *v1alpha1.BucketAccessRequest) error {
61+
glog.V(1).Infof("Update called for BucketAccessRequest %v", old.Name)
62+
return nil
63+
}
64+
65+
func (b *bucketAccessRequestListener) Delete(ctx context.Context, obj *v1alpha1.BucketAccessRequest) error {
66+
glog.V(1).Infof("Delete called for BucketAccessRequest %v", obj.Name)
67+
return nil
68+
}
69+
70+
// provisionBucketAccess attempts to provision a BucketAccess for the given bucketAccessRequest.
71+
// Returns nil error only when the bucketaccess was provisioned. An error is return if we cannot create bucket access.
72+
// A normal error is returned when bucket acess was not provisioned and provisioning should be retried (requeue the bucketAccessRequest),
73+
// or a special error errBucketAccessAlreadyExists, errInvalidBucketAccessClass is returned when provisioning was impossible and
74+
// no further attempts to provision should be tried.
75+
func (b *bucketAccessRequestListener) provisionBucketAccess(ctx context.Context, bucketAccessRequest *v1alpha1.BucketAccessRequest) error {
76+
bucketAccessClassName := bucketAccessRequest.Spec.BucketAccessClassName
77+
78+
bucketaccess := b.FindBucketAccess(ctx, bucketAccessRequest)
79+
if bucketaccess != nil {
80+
// bucketaccess has provisioned, nothing to do.
81+
return util.ErrBucketAccessAlreadyExists
82+
}
83+
84+
bucketAccessClass, err := b.bucketClient.ObjectstorageV1alpha1().BucketAccessClasses().Get(ctx, bucketAccessClassName, metav1.GetOptions{})
85+
if bucketAccessClass == nil {
86+
// bucket access class is invalid or not specified, cannot continue with provisioning.
87+
return util.ErrInvalidBucketAccessClass
88+
}
89+
90+
bucketRequest, err := b.bucketClient.ObjectstorageV1alpha1().BucketRequests(bucketAccessRequest.Namespace).Get(ctx, bucketAccessRequest.Spec.BucketRequestName, metav1.GetOptions{})
91+
if bucketRequest == nil {
92+
// bucket request does not exist, we have to reject this provision.
93+
return util.ErrInvalidBucketRequest
94+
}
95+
if err != nil {
96+
return err
97+
}
98+
99+
if bucketRequest.Spec.BucketInstanceName == "" {
100+
return util.ErrWaitForBucketProvisioning
101+
}
102+
103+
sa, err := b.kubeClient.CoreV1().ServiceAccounts(bucketAccessRequest.Namespace).Get(ctx, bucketAccessRequest.Spec.ServiceAccountName, metav1.GetOptions{})
104+
if err != nil {
105+
return err
106+
}
107+
108+
bucketaccess = &v1alpha1.BucketAccess{}
109+
bucketaccess.Name = util.GetUUID()
110+
111+
bucketaccess.Spec.BucketInstanceName = bucketRequest.Spec.BucketInstanceName
112+
bucketaccess.Spec.BucketAccessRequest = &v1.ObjectReference{
113+
Name: bucketAccessRequest.Name,
114+
Namespace: bucketAccessRequest.Namespace,
115+
UID: bucketAccessRequest.ObjectMeta.UID}
116+
bucketaccess.Spec.ServiceAccount = &v1.ObjectReference{
117+
Name: sa.Name,
118+
Namespace: sa.Namespace,
119+
UID: sa.ObjectMeta.UID}
120+
// bucketaccess.Spec.MintedSecretName - set by the driver
121+
bucketaccess.Spec.PolicyActionsConfigMapData, err = util.ReadConfigData(b.kubeClient, bucketAccessClass.PolicyActionsConfigMap)
122+
if err != nil {
123+
return err
124+
}
125+
// bucketaccess.Spec.Principal - set by the driver
126+
bucketaccess.Spec.Provisioner = bucketAccessClass.Provisioner
127+
bucketaccess.Spec.Parameters = util.CopySS(bucketAccessClass.Parameters)
128+
129+
bucketaccess, err = b.bucketClient.ObjectstorageV1alpha1().BucketAccesses().Create(context.Background(), bucketaccess, metav1.CreateOptions{})
130+
if err != nil {
131+
return err
132+
}
133+
134+
err = retry.RetryOnConflict(retry.DefaultRetry, func() error {
135+
bucketAccessRequest.Spec.BucketAccessName = bucketaccess.Name
136+
_, err := b.bucketClient.ObjectstorageV1alpha1().BucketAccessRequests(bucketAccessRequest.Namespace).Update(ctx, bucketAccessRequest, metav1.UpdateOptions{})
137+
if err != nil {
138+
return err
139+
}
140+
return nil
141+
})
142+
if err != nil {
143+
return err
144+
}
145+
glog.Infof("Finished creating BucketAccess %v", bucketaccess.Name)
146+
return nil
147+
}
148+
149+
func (b *bucketAccessRequestListener) FindBucketAccess(ctx context.Context, bar *v1alpha1.BucketAccessRequest) *v1alpha1.BucketAccess {
150+
bucketAccessList, err := b.bucketClient.ObjectstorageV1alpha1().BucketAccesses().List(ctx, metav1.ListOptions{})
151+
if err != nil || len(bucketAccessList.Items) <= 0 {
152+
return nil
153+
}
154+
for _, bucketaccess := range bucketAccessList.Items {
155+
if bucketaccess.Spec.BucketAccessRequest.Name == bar.Name &&
156+
bucketaccess.Spec.BucketAccessRequest.Namespace == bar.Namespace &&
157+
bucketaccess.Spec.BucketAccessRequest.UID == bar.UID {
158+
return &bucketaccess
159+
}
160+
}
161+
return nil
162+
}

0 commit comments

Comments
 (0)