Skip to content

Commit ea23faa

Browse files
committed
When combining PolicyRules, don't duplicate verbs
1 parent 5afc42d commit ea23faa

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

staging/src/k8s.io/kubectl/pkg/util/rbac/BUILD

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ go_library(
66
importmap = "k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/util/rbac",
77
importpath = "k8s.io/kubectl/pkg/util/rbac",
88
visibility = ["//visibility:public"],
9-
deps = ["//staging/src/k8s.io/api/rbac/v1:go_default_library"],
9+
deps = [
10+
"//staging/src/k8s.io/api/rbac/v1:go_default_library",
11+
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
12+
],
1013
)
1114

1215
filegroup(

staging/src/k8s.io/kubectl/pkg/util/rbac/rbac.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package rbac
1818

1919
import (
2020
rbacv1 "k8s.io/api/rbac/v1"
21+
"k8s.io/apimachinery/pkg/util/sets"
2122
"reflect"
2223
"strings"
2324
)
@@ -42,7 +43,13 @@ func CompactRules(rules []rbacv1.PolicyRule) ([]rbacv1.PolicyRule, error) {
4243
if existingRule.Verbs == nil {
4344
existingRule.Verbs = []string{}
4445
}
45-
existingRule.Verbs = append(existingRule.Verbs, rule.Verbs...)
46+
existingVerbs := sets.NewString(existingRule.Verbs...)
47+
for _, verb := range rule.Verbs {
48+
if !existingVerbs.Has(verb) {
49+
existingRule.Verbs = append(existingRule.Verbs, verb)
50+
}
51+
}
52+
4653
} else {
4754
// Copy the rule to accumulate matching simple resource rules into
4855
simpleRules[resource] = rule.DeepCopy()

0 commit comments

Comments
 (0)