@@ -249,30 +249,21 @@ func (a *Operator) ensureClusterRolesForCSV(csv *v1alpha1.ClusterServiceVersion,
249249 group := nameGroupPair [1 ]
250250 namePrefix := fmt .Sprintf ("%s-%s-" , owned .Name , owned .Version )
251251
252- if err := a .ensureProvidedAPIClusterRole (operatorGroup , csv , namePrefix , AdminSuffix , VerbsForSuffix [AdminSuffix ], group , plural , nil ); err != nil {
253- return err
254- }
255- if err := a .ensureProvidedAPIClusterRole (operatorGroup , csv , namePrefix , EditSuffix , VerbsForSuffix [EditSuffix ], group , plural , nil ); err != nil {
256- return err
257- }
258- if err := a .ensureProvidedAPIClusterRole (operatorGroup , csv , namePrefix , ViewSuffix , VerbsForSuffix [ViewSuffix ], group , plural , nil ); err != nil {
259- return err
252+ for suffix , verbs := range VerbsForSuffix {
253+ if err := a .ensureProvidedAPIClusterRole (operatorGroup , csv , namePrefix , suffix , verbs , group , plural , nil ); err != nil {
254+ return err
255+ }
260256 }
261- if err := a .ensureProvidedAPIClusterRole (operatorGroup , csv , namePrefix + "- crd" , ViewSuffix , []string {"get" }, "apiextensions.k8s.io" , "customresourcedefinitions" , []string {owned .Name }); err != nil {
257+ if err := a .ensureProvidedAPIClusterRole (operatorGroup , csv , namePrefix + "crd" , ViewSuffix , []string {"get" }, "apiextensions.k8s.io" , "customresourcedefinitions" , []string {owned .Name }); err != nil {
262258 return err
263259 }
264260 }
265261 for _ , owned := range csv .Spec .APIServiceDefinitions .Owned {
266262 namePrefix := fmt .Sprintf ("%s-%s-" , owned .Name , owned .Version )
267-
268- if err := a .ensureProvidedAPIClusterRole (operatorGroup , csv , namePrefix , AdminSuffix , VerbsForSuffix [AdminSuffix ], owned .Group , owned .Name , nil ); err != nil {
269- return err
270- }
271- if err := a .ensureProvidedAPIClusterRole (operatorGroup , csv , namePrefix , EditSuffix , VerbsForSuffix [EditSuffix ], owned .Group , owned .Name , nil ); err != nil {
272- return err
273- }
274- if err := a .ensureProvidedAPIClusterRole (operatorGroup , csv , namePrefix , ViewSuffix , VerbsForSuffix [ViewSuffix ], owned .Group , owned .Name , nil ); err != nil {
275- return err
263+ for suffix , verbs := range VerbsForSuffix {
264+ if err := a .ensureProvidedAPIClusterRole (operatorGroup , csv , namePrefix , suffix , verbs , owned .Group , owned .Name , nil ); err != nil {
265+ return err
266+ }
276267 }
277268 }
278269 return nil
@@ -351,6 +342,9 @@ func (a *Operator) ensureSingletonRBAC(operatorNamespace string, csv *v1alpha1.C
351342 if err != nil {
352343 return err
353344 }
345+ if len (ownedRoles ) == 0 {
346+ return fmt .Errorf ("no owned roles found" )
347+ }
354348
355349 for _ , r := range ownedRoles {
356350 a .Log .Debug ("processing role" )
@@ -363,7 +357,7 @@ func (a *Operator) ensureSingletonRBAC(operatorNamespace string, csv *v1alpha1.C
363357 },
364358 ObjectMeta : metav1.ObjectMeta {
365359 Name : r .GetName (),
366- Labels : ownerutil . OwnerLabel ( csv ),
360+ Labels : r . GetLabels ( ),
367361 },
368362 Rules : r .Rules ,
369363 }
@@ -378,6 +372,9 @@ func (a *Operator) ensureSingletonRBAC(operatorNamespace string, csv *v1alpha1.C
378372 if err != nil {
379373 return err
380374 }
375+ if len (ownedRoleBindings ) == 0 {
376+ return fmt .Errorf ("no owned rolebindings found" )
377+ }
381378
382379 for _ , r := range ownedRoleBindings {
383380 _ , err := a .lister .RbacV1 ().ClusterRoleBindingLister ().Get (r .GetName ())
@@ -389,7 +386,7 @@ func (a *Operator) ensureSingletonRBAC(operatorNamespace string, csv *v1alpha1.C
389386 },
390387 ObjectMeta : metav1.ObjectMeta {
391388 Name : r .GetName (),
392- Labels : ownerutil . OwnerLabel ( csv ),
389+ Labels : r . GetLabels ( ),
393390 },
394391 Subjects : r .Subjects ,
395392 RoleRef : rbacv1.RoleRef {
@@ -449,7 +446,9 @@ func (a *Operator) ensureTenantRBAC(operatorNamespace, targetNamespace string, c
449446 // TODO: we can work around error cases here; if there's an un-owned role with a matching name we should generate instead
450447 ownedRole .SetNamespace (targetNamespace )
451448 ownedRole .SetOwnerReferences ([]metav1.OwnerReference {ownerutil .NonBlockingOwner (targetCSV )})
452- ownerutil .AddOwnerLabels (ownedRole , targetCSV )
449+ if err := ownerutil .AddOwnerLabels (ownedRole , targetCSV ); err != nil {
450+ return err
451+ }
453452 ownedRole .SetLabels (utillabels .AddLabel (ownedRole .GetLabels (), v1alpha1 .CopiedLabelKey , operatorNamespace ))
454453 if _ , err := a .OpClient .CreateRole (ownedRole ); err != nil {
455454 return err
@@ -489,7 +488,9 @@ func (a *Operator) ensureTenantRBAC(operatorNamespace, targetNamespace string, c
489488 // TODO: we can work around error cases here; if there's an un-owned role with a matching name we should generate instead
490489 ownedRoleBinding .SetNamespace (targetNamespace )
491490 ownedRoleBinding .SetOwnerReferences ([]metav1.OwnerReference {ownerutil .NonBlockingOwner (targetCSV )})
492- ownerutil .AddOwnerLabels (ownedRoleBinding , targetCSV )
491+ if err := ownerutil .AddOwnerLabels (ownedRoleBinding , targetCSV ); err != nil {
492+ return err
493+ }
493494 ownedRoleBinding .SetLabels (utillabels .AddLabel (ownedRoleBinding .GetLabels (), v1alpha1 .CopiedLabelKey , operatorNamespace ))
494495 if _ , err := a .OpClient .CreateRoleBinding (ownedRoleBinding ); err != nil {
495496 return err
0 commit comments