mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
fix golint error in pkg/apis/rbac
This commit is contained in:
parent
720e6de6b9
commit
fee0d43d23
@ -37,7 +37,6 @@ pkg/apis/flowcontrol/v1alpha1
|
|||||||
pkg/apis/networking/v1
|
pkg/apis/networking/v1
|
||||||
pkg/apis/node/v1alpha1
|
pkg/apis/node/v1alpha1
|
||||||
pkg/apis/policy/v1beta1
|
pkg/apis/policy/v1beta1
|
||||||
pkg/apis/rbac
|
|
||||||
pkg/apis/rbac/v1
|
pkg/apis/rbac/v1
|
||||||
pkg/apis/rbac/v1alpha1
|
pkg/apis/rbac/v1alpha1
|
||||||
pkg/apis/rbac/v1beta1
|
pkg/apis/rbac/v1beta1
|
||||||
|
@ -24,6 +24,7 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// ResourceMatches returns the result of the rule.Resaurces matching.
|
||||||
func ResourceMatches(rule *PolicyRule, combinedRequestedResource, requestedSubresource string) bool {
|
func ResourceMatches(rule *PolicyRule, combinedRequestedResource, requestedSubresource string) bool {
|
||||||
for _, ruleResource := range rule.Resources {
|
for _, ruleResource := range rule.Resources {
|
||||||
// if everything is allowed, we match
|
// if everything is allowed, we match
|
||||||
@ -52,7 +53,7 @@ func ResourceMatches(rule *PolicyRule, combinedRequestedResource, requestedSubre
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// subjectsStrings returns users, groups, serviceaccounts, unknown for display purposes.
|
// SubjectsStrings returns users, groups, serviceaccounts, unknown for display purposes.
|
||||||
func SubjectsStrings(subjects []Subject) ([]string, []string, []string, []string) {
|
func SubjectsStrings(subjects []Subject) ([]string, []string, []string, []string) {
|
||||||
users := []string{}
|
users := []string{}
|
||||||
groups := []string{}
|
groups := []string{}
|
||||||
@ -110,40 +111,46 @@ func (r PolicyRule) CompactString() string {
|
|||||||
return fmt.Sprintf(formatString, formatArgs...)
|
return fmt.Sprintf(formatString, formatArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// +k8s:deepcopy-gen=false
|
|
||||||
// PolicyRuleBuilder let's us attach methods. A no-no for API types.
|
// PolicyRuleBuilder let's us attach methods. A no-no for API types.
|
||||||
// We use it to construct rules in code. It's more compact than trying to write them
|
// We use it to construct rules in code. It's more compact than trying to write them
|
||||||
// out in a literal and allows us to perform some basic checking during construction
|
// out in a literal and allows us to perform some basic checking during construction
|
||||||
|
// +k8s:deepcopy-gen=false
|
||||||
type PolicyRuleBuilder struct {
|
type PolicyRuleBuilder struct {
|
||||||
PolicyRule PolicyRule
|
PolicyRule PolicyRule
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewRule returns new PolicyRule made by input verbs.
|
||||||
func NewRule(verbs ...string) *PolicyRuleBuilder {
|
func NewRule(verbs ...string) *PolicyRuleBuilder {
|
||||||
return &PolicyRuleBuilder{
|
return &PolicyRuleBuilder{
|
||||||
PolicyRule: PolicyRule{Verbs: sets.NewString(verbs...).List()},
|
PolicyRule: PolicyRule{Verbs: sets.NewString(verbs...).List()},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Groups combines the PolicyRule.APIGroups and input groups.
|
||||||
func (r *PolicyRuleBuilder) Groups(groups ...string) *PolicyRuleBuilder {
|
func (r *PolicyRuleBuilder) Groups(groups ...string) *PolicyRuleBuilder {
|
||||||
r.PolicyRule.APIGroups = combine(r.PolicyRule.APIGroups, groups)
|
r.PolicyRule.APIGroups = combine(r.PolicyRule.APIGroups, groups)
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Resources combines the PolicyRule.Rule and input resources.
|
||||||
func (r *PolicyRuleBuilder) Resources(resources ...string) *PolicyRuleBuilder {
|
func (r *PolicyRuleBuilder) Resources(resources ...string) *PolicyRuleBuilder {
|
||||||
r.PolicyRule.Resources = combine(r.PolicyRule.Resources, resources)
|
r.PolicyRule.Resources = combine(r.PolicyRule.Resources, resources)
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Names combines the PolicyRule.ResourceNames and input names.
|
||||||
func (r *PolicyRuleBuilder) Names(names ...string) *PolicyRuleBuilder {
|
func (r *PolicyRuleBuilder) Names(names ...string) *PolicyRuleBuilder {
|
||||||
r.PolicyRule.ResourceNames = combine(r.PolicyRule.ResourceNames, names)
|
r.PolicyRule.ResourceNames = combine(r.PolicyRule.ResourceNames, names)
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// URLs combines the PolicyRule.NonResourceURLs and input urls.
|
||||||
func (r *PolicyRuleBuilder) URLs(urls ...string) *PolicyRuleBuilder {
|
func (r *PolicyRuleBuilder) URLs(urls ...string) *PolicyRuleBuilder {
|
||||||
r.PolicyRule.NonResourceURLs = combine(r.PolicyRule.NonResourceURLs, urls)
|
r.PolicyRule.NonResourceURLs = combine(r.PolicyRule.NonResourceURLs, urls)
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RuleOrDie calls the binding method and panics if there is an error.
|
||||||
func (r *PolicyRuleBuilder) RuleOrDie() PolicyRule {
|
func (r *PolicyRuleBuilder) RuleOrDie() PolicyRule {
|
||||||
ret, err := r.Rule()
|
ret, err := r.Rule()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -158,6 +165,7 @@ func combine(s1, s2 []string) []string {
|
|||||||
return s.List()
|
return s.List()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Rule returns PolicyRule and error.
|
||||||
func (r *PolicyRuleBuilder) Rule() (PolicyRule, error) {
|
func (r *PolicyRuleBuilder) Rule() (PolicyRule, error) {
|
||||||
if len(r.PolicyRule.Verbs) == 0 {
|
if len(r.PolicyRule.Verbs) == 0 {
|
||||||
return PolicyRule{}, fmt.Errorf("verbs are required: %#v", r.PolicyRule)
|
return PolicyRule{}, fmt.Errorf("verbs are required: %#v", r.PolicyRule)
|
||||||
@ -198,14 +206,18 @@ func (r *PolicyRuleBuilder) Rule() (PolicyRule, error) {
|
|||||||
return r.PolicyRule, nil
|
return r.PolicyRule, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// +k8s:deepcopy-gen=false
|
|
||||||
// ClusterRoleBindingBuilder let's us attach methods. A no-no for API types.
|
// ClusterRoleBindingBuilder let's us attach methods. A no-no for API types.
|
||||||
// We use it to construct bindings in code. It's more compact than trying to write them
|
// We use it to construct bindings in code. It's more compact than trying to write them
|
||||||
// out in a literal.
|
// out in a literal.
|
||||||
|
// +k8s:deepcopy-gen=false
|
||||||
type ClusterRoleBindingBuilder struct {
|
type ClusterRoleBindingBuilder struct {
|
||||||
ClusterRoleBinding ClusterRoleBinding
|
ClusterRoleBinding ClusterRoleBinding
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewClusterBinding creates a ClusterRoleBinding builder that can be used
|
||||||
|
// to define the subjects of a cluster role binding. At least one of
|
||||||
|
// the `Groups`, `Users` or `SAs` method must be called before
|
||||||
|
// calling the `Binding*` methods.
|
||||||
func NewClusterBinding(clusterRoleName string) *ClusterRoleBindingBuilder {
|
func NewClusterBinding(clusterRoleName string) *ClusterRoleBindingBuilder {
|
||||||
return &ClusterRoleBindingBuilder{
|
return &ClusterRoleBindingBuilder{
|
||||||
ClusterRoleBinding: ClusterRoleBinding{
|
ClusterRoleBinding: ClusterRoleBinding{
|
||||||
@ -219,6 +231,7 @@ func NewClusterBinding(clusterRoleName string) *ClusterRoleBindingBuilder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Groups adds the specified groups as the subjects of the ClusterRoleBinding.
|
||||||
func (r *ClusterRoleBindingBuilder) Groups(groups ...string) *ClusterRoleBindingBuilder {
|
func (r *ClusterRoleBindingBuilder) Groups(groups ...string) *ClusterRoleBindingBuilder {
|
||||||
for _, group := range groups {
|
for _, group := range groups {
|
||||||
r.ClusterRoleBinding.Subjects = append(r.ClusterRoleBinding.Subjects, Subject{Kind: GroupKind, APIGroup: GroupName, Name: group})
|
r.ClusterRoleBinding.Subjects = append(r.ClusterRoleBinding.Subjects, Subject{Kind: GroupKind, APIGroup: GroupName, Name: group})
|
||||||
@ -226,6 +239,7 @@ func (r *ClusterRoleBindingBuilder) Groups(groups ...string) *ClusterRoleBinding
|
|||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Users adds the specified users as the subjects of the ClusterRoleBinding.
|
||||||
func (r *ClusterRoleBindingBuilder) Users(users ...string) *ClusterRoleBindingBuilder {
|
func (r *ClusterRoleBindingBuilder) Users(users ...string) *ClusterRoleBindingBuilder {
|
||||||
for _, user := range users {
|
for _, user := range users {
|
||||||
r.ClusterRoleBinding.Subjects = append(r.ClusterRoleBinding.Subjects, Subject{Kind: UserKind, APIGroup: GroupName, Name: user})
|
r.ClusterRoleBinding.Subjects = append(r.ClusterRoleBinding.Subjects, Subject{Kind: UserKind, APIGroup: GroupName, Name: user})
|
||||||
@ -233,6 +247,7 @@ func (r *ClusterRoleBindingBuilder) Users(users ...string) *ClusterRoleBindingBu
|
|||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SAs adds the specified sas as the subjects of the ClusterRoleBinding.
|
||||||
func (r *ClusterRoleBindingBuilder) SAs(namespace string, serviceAccountNames ...string) *ClusterRoleBindingBuilder {
|
func (r *ClusterRoleBindingBuilder) SAs(namespace string, serviceAccountNames ...string) *ClusterRoleBindingBuilder {
|
||||||
for _, saName := range serviceAccountNames {
|
for _, saName := range serviceAccountNames {
|
||||||
r.ClusterRoleBinding.Subjects = append(r.ClusterRoleBinding.Subjects, Subject{Kind: ServiceAccountKind, Namespace: namespace, Name: saName})
|
r.ClusterRoleBinding.Subjects = append(r.ClusterRoleBinding.Subjects, Subject{Kind: ServiceAccountKind, Namespace: namespace, Name: saName})
|
||||||
@ -240,6 +255,7 @@ func (r *ClusterRoleBindingBuilder) SAs(namespace string, serviceAccountNames ..
|
|||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// BindingOrDie calls the binding method and panics if there is an error.
|
||||||
func (r *ClusterRoleBindingBuilder) BindingOrDie() ClusterRoleBinding {
|
func (r *ClusterRoleBindingBuilder) BindingOrDie() ClusterRoleBinding {
|
||||||
ret, err := r.Binding()
|
ret, err := r.Binding()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -248,6 +264,8 @@ func (r *ClusterRoleBindingBuilder) BindingOrDie() ClusterRoleBinding {
|
|||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Binding builds and returns the ClusterRoleBinding API object from the builder
|
||||||
|
// object.
|
||||||
func (r *ClusterRoleBindingBuilder) Binding() (ClusterRoleBinding, error) {
|
func (r *ClusterRoleBindingBuilder) Binding() (ClusterRoleBinding, error) {
|
||||||
if len(r.ClusterRoleBinding.Subjects) == 0 {
|
if len(r.ClusterRoleBinding.Subjects) == 0 {
|
||||||
return ClusterRoleBinding{}, fmt.Errorf("subjects are required: %#v", r.ClusterRoleBinding)
|
return ClusterRoleBinding{}, fmt.Errorf("subjects are required: %#v", r.ClusterRoleBinding)
|
||||||
@ -256,9 +274,9 @@ func (r *ClusterRoleBindingBuilder) Binding() (ClusterRoleBinding, error) {
|
|||||||
return r.ClusterRoleBinding, nil
|
return r.ClusterRoleBinding, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// +k8s:deepcopy-gen=false
|
|
||||||
// RoleBindingBuilder let's us attach methods. It is similar to
|
// RoleBindingBuilder let's us attach methods. It is similar to
|
||||||
// ClusterRoleBindingBuilder above.
|
// ClusterRoleBindingBuilder above.
|
||||||
|
// +k8s:deepcopy-gen=false
|
||||||
type RoleBindingBuilder struct {
|
type RoleBindingBuilder struct {
|
||||||
RoleBinding RoleBinding
|
RoleBinding RoleBinding
|
||||||
}
|
}
|
||||||
@ -283,6 +301,10 @@ func NewRoleBinding(roleName, namespace string) *RoleBindingBuilder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewRoleBindingForClusterRole creates a RoleBinding builder that can be used
|
||||||
|
// to define the subjects of a cluster role binding. At least one of
|
||||||
|
// the `Groups`, `Users` or `SAs` method must be called before
|
||||||
|
// calling the `Binding*` methods.
|
||||||
func NewRoleBindingForClusterRole(roleName, namespace string) *RoleBindingBuilder {
|
func NewRoleBindingForClusterRole(roleName, namespace string) *RoleBindingBuilder {
|
||||||
return &RoleBindingBuilder{
|
return &RoleBindingBuilder{
|
||||||
RoleBinding: RoleBinding{
|
RoleBinding: RoleBinding{
|
||||||
@ -343,6 +365,7 @@ func (r *RoleBindingBuilder) Binding() (RoleBinding, error) {
|
|||||||
return r.RoleBinding, nil
|
return r.RoleBinding, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SortableRuleSlice is the slice of PolicyRule.
|
||||||
type SortableRuleSlice []PolicyRule
|
type SortableRuleSlice []PolicyRule
|
||||||
|
|
||||||
func (s SortableRuleSlice) Len() int { return len(s) }
|
func (s SortableRuleSlice) Len() int { return len(s) }
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// GroupName is the name of this API group.
|
||||||
const GroupName = "rbac.authorization.k8s.io"
|
const GroupName = "rbac.authorization.k8s.io"
|
||||||
|
|
||||||
// SchemeGroupVersion is group version used to register these objects
|
// SchemeGroupVersion is group version used to register these objects
|
||||||
@ -36,6 +37,7 @@ func Resource(resource string) schema.GroupResource {
|
|||||||
return SchemeGroupVersion.WithResource(resource).GroupResource()
|
return SchemeGroupVersion.WithResource(resource).GroupResource()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SchemeBuilder is a function that calls Register for you.
|
||||||
var (
|
var (
|
||||||
SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
|
SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
|
||||||
AddToScheme = SchemeBuilder.AddToScheme
|
AddToScheme = SchemeBuilder.AddToScheme
|
||||||
|
@ -25,6 +25,7 @@ import (
|
|||||||
// 2. evaluation of RoleBindings in the namespace requested - short circuit on match
|
// 2. evaluation of RoleBindings in the namespace requested - short circuit on match
|
||||||
// 3. deny by default
|
// 3. deny by default
|
||||||
|
|
||||||
|
// APIGroupAll and these consts are default values for rbac authorization.
|
||||||
const (
|
const (
|
||||||
APIGroupAll = "*"
|
APIGroupAll = "*"
|
||||||
ResourceAll = "*"
|
ResourceAll = "*"
|
||||||
|
Loading…
Reference in New Issue
Block a user