173 lines
9.6 KiB
Go
173 lines
9.6 KiB
Go
/*
|
|
Copyright The Kubernetes Authors.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
// Code generated by applyconfiguration-gen. DO NOT EDIT.
|
|
|
|
package v1beta1
|
|
|
|
import (
|
|
v1 "k8s.io/api/admissionregistration/v1"
|
|
admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1"
|
|
)
|
|
|
|
// MutatingAdmissionPolicySpecApplyConfiguration represents a declarative configuration of the MutatingAdmissionPolicySpec type for use
|
|
// with apply.
|
|
//
|
|
// MutatingAdmissionPolicySpec is the specification of the desired behavior of the admission policy.
|
|
type MutatingAdmissionPolicySpecApplyConfiguration struct {
|
|
// paramKind specifies the kind of resources used to parameterize this policy.
|
|
// If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions.
|
|
// If paramKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied.
|
|
// If paramKind is specified but paramRef is unset in MutatingAdmissionPolicyBinding, the params variable will be null.
|
|
ParamKind *ParamKindApplyConfiguration `json:"paramKind,omitempty"`
|
|
// matchConstraints specifies what resources this policy is designed to validate.
|
|
// The MutatingAdmissionPolicy cares about a request if it matches _all_ Constraints.
|
|
// However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API
|
|
// MutatingAdmissionPolicy cannot match MutatingAdmissionPolicy and MutatingAdmissionPolicyBinding.
|
|
// The CREATE, UPDATE and CONNECT operations are allowed. The DELETE operation may not be matched.
|
|
// '*' matches CREATE, UPDATE and CONNECT.
|
|
// Required.
|
|
MatchConstraints *MatchResourcesApplyConfiguration `json:"matchConstraints,omitempty"`
|
|
// variables contain definitions of variables that can be used in composition of other expressions.
|
|
// Each variable is defined as a named CEL expression.
|
|
// The variables defined here will be available under `variables` in other expressions of the policy
|
|
// except matchConditions because matchConditions are evaluated before the rest of the policy.
|
|
//
|
|
// The expression of a variable can refer to other variables defined earlier in the list but not those after.
|
|
// Thus, variables must be sorted by the order of first appearance and acyclic.
|
|
Variables []VariableApplyConfiguration `json:"variables,omitempty"`
|
|
// mutations contain operations to perform on matching objects.
|
|
// mutations may not be empty; a minimum of one mutation is required.
|
|
// mutations are evaluated in order, and are reinvoked according to
|
|
// the reinvocationPolicy.
|
|
// The mutations of a policy are invoked for each binding of this policy
|
|
// and reinvocation of mutations occurs on a per binding basis.
|
|
Mutations []MutationApplyConfiguration `json:"mutations,omitempty"`
|
|
// failurePolicy defines how to handle failures for the admission policy. Failures can
|
|
// occur from CEL expression parse errors, type check errors, runtime errors and invalid
|
|
// or mis-configured policy definitions or bindings.
|
|
//
|
|
// A policy is invalid if paramKind refers to a non-existent Kind.
|
|
// A binding is invalid if paramRef.name refers to a non-existent resource.
|
|
//
|
|
// failurePolicy does not define how validations that evaluate to false are handled.
|
|
//
|
|
// Allowed values are Ignore or Fail. Defaults to Fail.
|
|
FailurePolicy *admissionregistrationv1beta1.FailurePolicyType `json:"failurePolicy,omitempty"`
|
|
// matchConditions is a list of conditions that must be met for a request to be validated.
|
|
// Match conditions filter requests that have already been matched by the matchConstraints.
|
|
// An empty list of matchConditions matches all requests.
|
|
// There are a maximum of 64 match conditions allowed.
|
|
//
|
|
// If a parameter object is provided, it can be accessed via the `params` handle in the same
|
|
// manner as validation expressions.
|
|
//
|
|
// The exact matching logic is (in order):
|
|
// 1. If ANY matchCondition evaluates to FALSE, the policy is skipped.
|
|
// 2. If ALL matchConditions evaluate to TRUE, the policy is evaluated.
|
|
// 3. If any matchCondition evaluates to an error (but none are FALSE):
|
|
// - If failurePolicy=Fail, reject the request
|
|
// - If failurePolicy=Ignore, the policy is skipped
|
|
MatchConditions []MatchConditionApplyConfiguration `json:"matchConditions,omitempty"`
|
|
// reinvocationPolicy indicates whether mutations may be called multiple times per MutatingAdmissionPolicyBinding
|
|
// as part of a single admission evaluation.
|
|
// Allowed values are "Never" and "IfNeeded".
|
|
//
|
|
// Never: These mutations will not be called more than once per binding in a single admission evaluation.
|
|
//
|
|
// IfNeeded: These mutations may be invoked more than once per binding for a single admission request and there is no guarantee of
|
|
// order with respect to other admission plugins, admission webhooks, bindings of this policy and admission policies. Mutations are only
|
|
// reinvoked when mutations change the object after this mutation is invoked.
|
|
// Required.
|
|
ReinvocationPolicy *v1.ReinvocationPolicyType `json:"reinvocationPolicy,omitempty"`
|
|
}
|
|
|
|
// MutatingAdmissionPolicySpecApplyConfiguration constructs a declarative configuration of the MutatingAdmissionPolicySpec type for use with
|
|
// apply.
|
|
func MutatingAdmissionPolicySpec() *MutatingAdmissionPolicySpecApplyConfiguration {
|
|
return &MutatingAdmissionPolicySpecApplyConfiguration{}
|
|
}
|
|
|
|
// WithParamKind sets the ParamKind field in the declarative configuration to the given value
|
|
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
|
|
// If called multiple times, the ParamKind field is set to the value of the last call.
|
|
func (b *MutatingAdmissionPolicySpecApplyConfiguration) WithParamKind(value *ParamKindApplyConfiguration) *MutatingAdmissionPolicySpecApplyConfiguration {
|
|
b.ParamKind = value
|
|
return b
|
|
}
|
|
|
|
// WithMatchConstraints sets the MatchConstraints field in the declarative configuration to the given value
|
|
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
|
|
// If called multiple times, the MatchConstraints field is set to the value of the last call.
|
|
func (b *MutatingAdmissionPolicySpecApplyConfiguration) WithMatchConstraints(value *MatchResourcesApplyConfiguration) *MutatingAdmissionPolicySpecApplyConfiguration {
|
|
b.MatchConstraints = value
|
|
return b
|
|
}
|
|
|
|
// WithVariables adds the given value to the Variables field in the declarative configuration
|
|
// and returns the receiver, so that objects can be build by chaining "With" function invocations.
|
|
// If called multiple times, values provided by each call will be appended to the Variables field.
|
|
func (b *MutatingAdmissionPolicySpecApplyConfiguration) WithVariables(values ...*VariableApplyConfiguration) *MutatingAdmissionPolicySpecApplyConfiguration {
|
|
for i := range values {
|
|
if values[i] == nil {
|
|
panic("nil value passed to WithVariables")
|
|
}
|
|
b.Variables = append(b.Variables, *values[i])
|
|
}
|
|
return b
|
|
}
|
|
|
|
// WithMutations adds the given value to the Mutations field in the declarative configuration
|
|
// and returns the receiver, so that objects can be build by chaining "With" function invocations.
|
|
// If called multiple times, values provided by each call will be appended to the Mutations field.
|
|
func (b *MutatingAdmissionPolicySpecApplyConfiguration) WithMutations(values ...*MutationApplyConfiguration) *MutatingAdmissionPolicySpecApplyConfiguration {
|
|
for i := range values {
|
|
if values[i] == nil {
|
|
panic("nil value passed to WithMutations")
|
|
}
|
|
b.Mutations = append(b.Mutations, *values[i])
|
|
}
|
|
return b
|
|
}
|
|
|
|
// WithFailurePolicy sets the FailurePolicy field in the declarative configuration to the given value
|
|
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
|
|
// If called multiple times, the FailurePolicy field is set to the value of the last call.
|
|
func (b *MutatingAdmissionPolicySpecApplyConfiguration) WithFailurePolicy(value admissionregistrationv1beta1.FailurePolicyType) *MutatingAdmissionPolicySpecApplyConfiguration {
|
|
b.FailurePolicy = &value
|
|
return b
|
|
}
|
|
|
|
// WithMatchConditions adds the given value to the MatchConditions field in the declarative configuration
|
|
// and returns the receiver, so that objects can be build by chaining "With" function invocations.
|
|
// If called multiple times, values provided by each call will be appended to the MatchConditions field.
|
|
func (b *MutatingAdmissionPolicySpecApplyConfiguration) WithMatchConditions(values ...*MatchConditionApplyConfiguration) *MutatingAdmissionPolicySpecApplyConfiguration {
|
|
for i := range values {
|
|
if values[i] == nil {
|
|
panic("nil value passed to WithMatchConditions")
|
|
}
|
|
b.MatchConditions = append(b.MatchConditions, *values[i])
|
|
}
|
|
return b
|
|
}
|
|
|
|
// WithReinvocationPolicy sets the ReinvocationPolicy field in the declarative configuration to the given value
|
|
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
|
|
// If called multiple times, the ReinvocationPolicy field is set to the value of the last call.
|
|
func (b *MutatingAdmissionPolicySpecApplyConfiguration) WithReinvocationPolicy(value v1.ReinvocationPolicyType) *MutatingAdmissionPolicySpecApplyConfiguration {
|
|
b.ReinvocationPolicy = &value
|
|
return b
|
|
}
|