Skip to content

Commit 17cbcd3

Browse files
authored
🐛 Handling Identical Kubebuilder Annotations in Different CRs with * Verbs (#1081)
* Handling Identical Kubebuilder Annotations in Different CRs with * Verbs Signed-off-by: Oded Viner <[email protected]> * add test and fix code Signed-off-by: Oded Viner <[email protected]> * add comment to new code Signed-off-by: Oded Viner <[email protected]> * add test for Role in namespace Signed-off-by: Oded Viner <[email protected]> --------- Signed-off-by: Oded Viner <[email protected]>
1 parent 23a31fd commit 17cbcd3

File tree

3 files changed

+33
-0
lines changed

3 files changed

+33
-0
lines changed

pkg/rbac/parser.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,15 @@ func GenerateRoles(ctx *genall.GenerationContext, roleName string) ([]interface{
304304
}
305305
sort.Sort(ruleKeys(keys))
306306

307+
// Normalize rule verbs to "*" if any verb in the rule is an asterisk
308+
for _, rule := range ruleMap {
309+
for _, verb := range rule.Verbs {
310+
if verb == "*" {
311+
rule.Verbs = []string{"*"}
312+
break
313+
}
314+
}
315+
}
307316
var policyRules []rbacv1.PolicyRule
308317
for _, key := range keys {
309318
policyRules = append(policyRules, ruleMap[key].ToRule())

pkg/rbac/testdata/controller.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ package controller
2323
// +kubebuilder:rbac:groups=deduplicate-all,resources=foo;bar,verbs=get;list
2424
// +kubebuilder:rbac:groups=deduplicate-all,resources=foo,verbs=get
2525
// +kubebuilder:rbac:groups=deduplicate-all,resources=bar,verbs=list
26+
// +kubebuilder:rbac:groups=deduplicate-groups4,resources=xyz,verbs=get;update;patch
27+
// +kubebuilder:rbac:groups=deduplicate-groups4,resources=xyz,verbs=*
2628
// +kubebuilder:rbac:groups=deduplicate-all-group,resources=foo;bar,verbs=get;list
2729
// +kubebuilder:rbac:groups=not-deduplicate-resources,resources=some,verbs=get
2830
// +kubebuilder:rbac:groups=not-deduplicate-resources,resources=another,verbs=list
@@ -33,3 +35,5 @@ package controller
3335
// +kubebuilder:rbac:groups=core,resources=deduplicate,verbs=list
3436
// +kubebuilder:rbac:groups="",resources=me,verbs=list
3537
// +kubebuilder:rbac:groups=core;"";some-other-to-deduplicate-with-core,resources=me,verbs=list;get
38+
// +kubebuilder:rbac:groups=deduplicate-groups5,resources=abc,verbs=get;update;patch;create,namespace=here
39+
// +kubebuilder:rbac:groups=deduplicate-groups5,resources=abc,verbs=*,namespace=here

pkg/rbac/testdata/role.yaml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,12 @@ rules:
8888
- foo
8989
verbs:
9090
- patch
91+
- apiGroups:
92+
- deduplicate-groups4
93+
resources:
94+
- xyz
95+
verbs:
96+
- '*'
9197
- apiGroups:
9298
- deduplicate-resources
9399
resources:
@@ -125,6 +131,19 @@ rules:
125131
---
126132
apiVersion: rbac.authorization.k8s.io/v1
127133
kind: Role
134+
metadata:
135+
name: manager-role
136+
namespace: here
137+
rules:
138+
- apiGroups:
139+
- deduplicate-groups5
140+
resources:
141+
- abc
142+
verbs:
143+
- '*'
144+
---
145+
apiVersion: rbac.authorization.k8s.io/v1
146+
kind: Role
128147
metadata:
129148
name: manager-role
130149
namespace: park
@@ -149,3 +168,4 @@ rules:
149168
- jobs
150169
verbs:
151170
- get
171+

0 commit comments

Comments
 (0)