@@ -38,8 +38,11 @@ const (
38
38
NFSClusterRoleName = "storageos:nfs-provisioner"
39
39
NFSClusterBindingName = "storageos:nfs-provisioner"
40
40
41
- SchedulerClusterRoleName = "storageos:scheduler-extender"
42
- SchedulerClusterBindingName = "storageos:scheduler-extender"
41
+ SchedulerExtenderClusterRoleName = "storageos:scheduler-extender"
42
+ SchedulerExtenderClusterBindingName = "storageos:scheduler-extender"
43
+
44
+ SchedulerExtenderVolumeCheckerClusterRoleName = "storageos:scheduler-extender-vol-checker"
45
+ SchedulerExtenderVolumeCheckerClusterBindingName = "storageos:scheduler-extender-vol-checker"
43
46
44
47
InitClusterRoleName = "storageos:init"
45
48
InitClusterBindingName = "storageos:init"
@@ -339,9 +342,9 @@ func (s *Deployment) createClusterRoleForResizer() error {
339
342
return s .k8sResourceManager .ClusterRole (CSIResizerClusterRoleName , nil , rules ).Create ()
340
343
}
341
344
342
- // createClusterRoleForScheduler creates a ClusterRole resource for scheduler
345
+ // createClusterRoleForSchedulerExtender creates a ClusterRole resource for scheduler
343
346
// extender with all the permissions required by kube-scheduler.
344
- func (s * Deployment ) createClusterRoleForScheduler () error {
347
+ func (s * Deployment ) createClusterRoleForSchedulerExtender () error {
345
348
rules := []rbacv1.PolicyRule {
346
349
{
347
350
APIGroups : []string {"" },
@@ -386,7 +389,28 @@ func (s *Deployment) createClusterRoleForScheduler() error {
386
389
Verbs : []string {"get" , "create" , "update" },
387
390
},
388
391
}
389
- return s .k8sResourceManager .ClusterRole (SchedulerClusterRoleName , nil , rules ).Create ()
392
+ return s .k8sResourceManager .ClusterRole (SchedulerExtenderClusterRoleName , nil , rules ).Create ()
393
+ }
394
+
395
+ // createClusterRoleForSchedulerExtenderVolumeChecker creates a ClusterRole resource for scheduler
396
+ // extender with all the permissions required by custom scheduler extender.
397
+ func (s * Deployment ) createClusterRoleForSchedulerExtenderVolumeChecker () error {
398
+ rules := []rbacv1.PolicyRule {
399
+ {
400
+ APIGroups : []string {"" },
401
+ Resources : []string {
402
+ "persistentvolumes" ,
403
+ "persistentvolumeclaims" ,
404
+ },
405
+ Verbs : []string {"get" },
406
+ },
407
+ {
408
+ APIGroups : []string {"storage.k8s.io" },
409
+ Resources : []string {"storageclasses" },
410
+ Verbs : []string {"get" },
411
+ },
412
+ }
413
+ return s .k8sResourceManager .ClusterRole (SchedulerExtenderVolumeCheckerClusterRoleName , nil , rules ).Create ()
390
414
}
391
415
392
416
func (s * Deployment ) createClusterRoleBindingForKeyMgmt () error {
@@ -582,9 +606,9 @@ func (s *Deployment) createClusterRoleBindingForSCC() error {
582
606
return s .k8sResourceManager .ClusterRoleBinding (OpenShiftSCCClusterBindingName , nil , subjects , roleRef ).Create ()
583
607
}
584
608
585
- // createClusterRoleBindingForScheduler creates a cluster role binding for the
586
- // scheduler extender .
587
- func (s * Deployment ) createClusterRoleBindingForScheduler () error {
609
+ // createClusterRoleBindingForSchedulerExtender creates a cluster role binding for the
610
+ // kube- scheduler.
611
+ func (s * Deployment ) createClusterRoleBindingForSchedulerExtender () error {
588
612
subjects := []rbacv1.Subject {
589
613
{
590
614
Kind : "ServiceAccount" ,
@@ -594,10 +618,28 @@ func (s *Deployment) createClusterRoleBindingForScheduler() error {
594
618
}
595
619
roleRef := & rbacv1.RoleRef {
596
620
Kind : "ClusterRole" ,
597
- Name : SchedulerClusterRoleName ,
621
+ Name : SchedulerExtenderClusterRoleName ,
622
+ APIGroup : "rbac.authorization.k8s.io" ,
623
+ }
624
+ return s .k8sResourceManager .ClusterRoleBinding (SchedulerExtenderClusterBindingName , nil , subjects , roleRef ).Create ()
625
+ }
626
+
627
+ // createClusterRoleBindingForScheduler creates a cluster role binding for the
628
+ // custom scheduler extender.
629
+ func (s * Deployment ) createClusterRoleBindingForSchedulerExtenderVolumeChecker () error {
630
+ subjects := []rbacv1.Subject {
631
+ {
632
+ Kind : "ServiceAccount" ,
633
+ Name : DaemonsetSA ,
634
+ Namespace : s .stos .Spec .GetResourceNS (),
635
+ },
636
+ }
637
+ roleRef := & rbacv1.RoleRef {
638
+ Kind : "ClusterRole" ,
639
+ Name : SchedulerExtenderVolumeCheckerClusterRoleName ,
598
640
APIGroup : "rbac.authorization.k8s.io" ,
599
641
}
600
- return s .k8sResourceManager .ClusterRoleBinding (SchedulerClusterBindingName , nil , subjects , roleRef ).Create ()
642
+ return s .k8sResourceManager .ClusterRoleBinding (SchedulerExtenderVolumeCheckerClusterBindingName , nil , subjects , roleRef ).Create ()
601
643
}
602
644
603
645
// createClusterRoleForInit creates cluster role for the init container. This is
0 commit comments