Merge pull request #112306 from tkashem/v1beta3
add v1beta3 for Priority And Fairness
This commit is contained in:
@@ -26,6 +26,7 @@ import (
|
||||
flowcontrolv1alpha1 "k8s.io/kubernetes/pkg/apis/flowcontrol/v1alpha1"
|
||||
flowcontrolv1beta1 "k8s.io/kubernetes/pkg/apis/flowcontrol/v1beta1"
|
||||
flowcontrolv1beta2 "k8s.io/kubernetes/pkg/apis/flowcontrol/v1beta2"
|
||||
flowcontrolv1beta3 "k8s.io/kubernetes/pkg/apis/flowcontrol/v1beta3"
|
||||
)
|
||||
|
||||
func init() {
|
||||
@@ -38,5 +39,10 @@ func Install(scheme *runtime.Scheme) {
|
||||
utilruntime.Must(flowcontrolv1alpha1.AddToScheme(scheme))
|
||||
utilruntime.Must(flowcontrolv1beta1.AddToScheme(scheme))
|
||||
utilruntime.Must(flowcontrolv1beta2.AddToScheme(scheme))
|
||||
utilruntime.Must(scheme.SetVersionPriority(flowcontrolv1beta1.SchemeGroupVersion, flowcontrolv1beta2.SchemeGroupVersion, flowcontrolv1alpha1.SchemeGroupVersion))
|
||||
utilruntime.Must(flowcontrolv1beta3.AddToScheme(scheme))
|
||||
// TODO(#112512): This controls serialization order, for 1.26, we can
|
||||
// set the serialization version to v1beta2 because vN-1 understands that
|
||||
// level. In 1.27, we should set the serialization version to v1beta3.
|
||||
utilruntime.Must(scheme.SetVersionPriority(flowcontrolv1beta2.SchemeGroupVersion, flowcontrolv1beta3.SchemeGroupVersion,
|
||||
flowcontrolv1beta1.SchemeGroupVersion, flowcontrolv1alpha1.SchemeGroupVersion))
|
||||
}
|
||||
|
@@ -17,7 +17,7 @@ limitations under the License.
|
||||
package internalbootstrap
|
||||
|
||||
import (
|
||||
flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
|
||||
flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apiserver/pkg/apis/flowcontrol/bootstrap"
|
||||
"k8s.io/kubernetes/pkg/apis/flowcontrol"
|
||||
@@ -46,7 +46,7 @@ func NewAPFScheme() *runtime.Scheme {
|
||||
return scheme
|
||||
}
|
||||
|
||||
func internalizeFSes(exts []*flowcontrolv1beta2.FlowSchema) map[string]*flowcontrol.FlowSchema {
|
||||
func internalizeFSes(exts []*flowcontrolv1beta3.FlowSchema) map[string]*flowcontrol.FlowSchema {
|
||||
ans := make(map[string]*flowcontrol.FlowSchema, len(exts))
|
||||
scheme := NewAPFScheme()
|
||||
for _, ext := range exts {
|
||||
@@ -59,7 +59,7 @@ func internalizeFSes(exts []*flowcontrolv1beta2.FlowSchema) map[string]*flowcont
|
||||
return ans
|
||||
}
|
||||
|
||||
func internalizePLs(exts []*flowcontrolv1beta2.PriorityLevelConfiguration) map[string]*flowcontrol.PriorityLevelConfiguration {
|
||||
func internalizePLs(exts []*flowcontrolv1beta3.PriorityLevelConfiguration) map[string]*flowcontrol.PriorityLevelConfiguration {
|
||||
ans := make(map[string]*flowcontrol.PriorityLevelConfiguration, len(exts))
|
||||
scheme := NewAPFScheme()
|
||||
for _, ext := range exts {
|
||||
|
@@ -19,7 +19,7 @@ package internalbootstrap
|
||||
import (
|
||||
"testing"
|
||||
|
||||
flowcontrol "k8s.io/api/flowcontrol/v1beta2"
|
||||
flowcontrol "k8s.io/api/flowcontrol/v1beta3"
|
||||
apiequality "k8s.io/apimachinery/pkg/api/equality"
|
||||
"k8s.io/apiserver/pkg/apis/flowcontrol/bootstrap"
|
||||
)
|
||||
|
@@ -298,6 +298,8 @@ type FlowSchemaStatus struct {
|
||||
// `conditions` is a list of the current states of FlowSchema.
|
||||
// +listType=map
|
||||
// +listMapKey=type
|
||||
// +patchMergeKey=type
|
||||
// +patchStrategy=merge
|
||||
// +optional
|
||||
Conditions []FlowSchemaCondition
|
||||
}
|
||||
@@ -394,23 +396,23 @@ const (
|
||||
// - How are requests for this priority level limited?
|
||||
// - What should be done with requests that exceed the limit?
|
||||
type LimitedPriorityLevelConfiguration struct {
|
||||
// `assuredConcurrencyShares` (ACS) configures the execution
|
||||
// limit, which is a limit on the number of requests of this
|
||||
// priority level that may be executing at a given time. ACS must
|
||||
// be a positive number. The server's concurrency limit (SCL) is
|
||||
// divided among the concurrency-controlled priority levels in
|
||||
// proportion to their assured concurrency shares. This produces
|
||||
// the assured concurrency value (ACV) --- the number of requests
|
||||
// that may be executing at a time --- for each such priority
|
||||
// level:
|
||||
// `nominalConcurrencyShares` (NCS) contributes to the computation of the
|
||||
// NominalConcurrencyLimit (NominalCL) of this level.
|
||||
// This is the number of execution seats available at this priority level.
|
||||
// This is used both for requests dispatched from this priority level
|
||||
// as well as requests dispatched from other priority levels
|
||||
// borrowing seats from this level.
|
||||
// The server's concurrency limit (ServerCL) is divided among the
|
||||
// Limited priority levels in proportion to their NCS values:
|
||||
//
|
||||
// ACV(l) = ceil( SCL * ACS(l) / ( sum[priority levels k] ACS(k) ) )
|
||||
// NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs )
|
||||
// sum_ncs = sum[limited priority level k] NCS(k)
|
||||
//
|
||||
// bigger numbers of ACS mean more reserved concurrent requests (at the
|
||||
// expense of every other PL).
|
||||
// Bigger numbers mean a larger nominal concurrency limit,
|
||||
// at the expense of every other Limited priority level.
|
||||
// This field has a default value of 30.
|
||||
// +optional
|
||||
AssuredConcurrencyShares int32
|
||||
NominalConcurrencyShares int32
|
||||
|
||||
// `limitResponse` indicates what to do with requests that can not be executed right now
|
||||
LimitResponse LimitResponse
|
||||
@@ -488,6 +490,8 @@ type PriorityLevelConfigurationStatus struct {
|
||||
// `conditions` is the current state of "request-priority".
|
||||
// +listType=map
|
||||
// +listMapKey=type
|
||||
// +patchMergeKey=type
|
||||
// +patchStrategy=merge
|
||||
// +optional
|
||||
Conditions []PriorityLevelConfigurationCondition
|
||||
}
|
||||
|
45
pkg/apis/flowcontrol/v1alpha1/conversion.go
Normal file
45
pkg/apis/flowcontrol/v1alpha1/conversion.go
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
Copyright 2022 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.
|
||||
*/
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import (
|
||||
"k8s.io/api/flowcontrol/v1alpha1"
|
||||
"k8s.io/apimachinery/pkg/conversion"
|
||||
"k8s.io/kubernetes/pkg/apis/flowcontrol"
|
||||
)
|
||||
|
||||
// LimitedPriorityLevelConfiguration.AssuredConcurrencyShares has been
|
||||
// renamed to NominalConcurrencyShares in v1beta3.
|
||||
func Convert_v1alpha1_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(in *v1alpha1.LimitedPriorityLevelConfiguration, out *flowcontrol.LimitedPriorityLevelConfiguration, s conversion.Scope) error {
|
||||
if err := autoConvert_v1alpha1_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(in, out, nil); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
out.NominalConcurrencyShares = in.AssuredConcurrencyShares
|
||||
return nil
|
||||
}
|
||||
|
||||
// LimitedPriorityLevelConfiguration.AssuredConcurrencyShares has been
|
||||
// renamed to NominalConcurrencyShares in v1beta3.
|
||||
func Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1alpha1_LimitedPriorityLevelConfiguration(in *flowcontrol.LimitedPriorityLevelConfiguration, out *v1alpha1.LimitedPriorityLevelConfiguration, s conversion.Scope) error {
|
||||
if err := autoConvert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1alpha1_LimitedPriorityLevelConfiguration(in, out, nil); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
out.AssuredConcurrencyShares = in.NominalConcurrencyShares
|
||||
return nil
|
||||
}
|
97
pkg/apis/flowcontrol/v1alpha1/conversion_test.go
Normal file
97
pkg/apis/flowcontrol/v1alpha1/conversion_test.go
Normal file
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Copyright 2022 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.
|
||||
*/
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"k8s.io/api/flowcontrol/v1alpha1"
|
||||
"k8s.io/kubernetes/pkg/apis/flowcontrol"
|
||||
)
|
||||
|
||||
func TestConvert_v1alpha1_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
in *v1alpha1.LimitedPriorityLevelConfiguration
|
||||
expected *flowcontrol.LimitedPriorityLevelConfiguration
|
||||
}{
|
||||
{
|
||||
name: "nominal concurrency shares is set as expected",
|
||||
in: &v1alpha1.LimitedPriorityLevelConfiguration{
|
||||
AssuredConcurrencyShares: 100,
|
||||
LimitResponse: v1alpha1.LimitResponse{
|
||||
Type: v1alpha1.LimitResponseTypeReject,
|
||||
},
|
||||
},
|
||||
expected: &flowcontrol.LimitedPriorityLevelConfiguration{
|
||||
NominalConcurrencyShares: 100,
|
||||
LimitResponse: flowcontrol.LimitResponse{
|
||||
Type: flowcontrol.LimitResponseTypeReject,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
out := &flowcontrol.LimitedPriorityLevelConfiguration{}
|
||||
if err := Convert_v1alpha1_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(test.in, out, nil); err != nil {
|
||||
t.Errorf("Expected no error, but got: %v", err)
|
||||
}
|
||||
if !cmp.Equal(test.expected, out) {
|
||||
t.Errorf("Expected a match, diff: %s", cmp.Diff(test.expected, out))
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestConvert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1alpha1_LimitedPriorityLevelConfiguration(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
in *flowcontrol.LimitedPriorityLevelConfiguration
|
||||
expected *v1alpha1.LimitedPriorityLevelConfiguration
|
||||
}{
|
||||
{
|
||||
name: "assured concurrency shares is set as expected",
|
||||
in: &flowcontrol.LimitedPriorityLevelConfiguration{
|
||||
NominalConcurrencyShares: 100,
|
||||
LimitResponse: flowcontrol.LimitResponse{
|
||||
Type: flowcontrol.LimitResponseTypeReject,
|
||||
},
|
||||
},
|
||||
expected: &v1alpha1.LimitedPriorityLevelConfiguration{
|
||||
AssuredConcurrencyShares: 100,
|
||||
LimitResponse: v1alpha1.LimitResponse{
|
||||
Type: v1alpha1.LimitResponseTypeReject,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
out := &v1alpha1.LimitedPriorityLevelConfiguration{}
|
||||
if err := Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1alpha1_LimitedPriorityLevelConfiguration(test.in, out, nil); err != nil {
|
||||
t.Errorf("Expected no error, but got: %v", err)
|
||||
}
|
||||
if !cmp.Equal(test.expected, out) {
|
||||
t.Errorf("Expected a match, diff: %s", cmp.Diff(test.expected, out))
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
@@ -117,16 +117,6 @@ func RegisterConversions(s *runtime.Scheme) error {
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1alpha1.LimitedPriorityLevelConfiguration)(nil), (*flowcontrol.LimitedPriorityLevelConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1alpha1_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(a.(*v1alpha1.LimitedPriorityLevelConfiguration), b.(*flowcontrol.LimitedPriorityLevelConfiguration), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.LimitedPriorityLevelConfiguration)(nil), (*v1alpha1.LimitedPriorityLevelConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1alpha1_LimitedPriorityLevelConfiguration(a.(*flowcontrol.LimitedPriorityLevelConfiguration), b.(*v1alpha1.LimitedPriorityLevelConfiguration), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1alpha1.NonResourcePolicyRule)(nil), (*flowcontrol.NonResourcePolicyRule)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1alpha1_NonResourcePolicyRule_To_flowcontrol_NonResourcePolicyRule(a.(*v1alpha1.NonResourcePolicyRule), b.(*flowcontrol.NonResourcePolicyRule), scope)
|
||||
}); err != nil {
|
||||
@@ -257,6 +247,16 @@ func RegisterConversions(s *runtime.Scheme) error {
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddConversionFunc((*flowcontrol.LimitedPriorityLevelConfiguration)(nil), (*v1alpha1.LimitedPriorityLevelConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1alpha1_LimitedPriorityLevelConfiguration(a.(*flowcontrol.LimitedPriorityLevelConfiguration), b.(*v1alpha1.LimitedPriorityLevelConfiguration), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddConversionFunc((*v1alpha1.LimitedPriorityLevelConfiguration)(nil), (*flowcontrol.LimitedPriorityLevelConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1alpha1_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(a.(*v1alpha1.LimitedPriorityLevelConfiguration), b.(*flowcontrol.LimitedPriorityLevelConfiguration), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -455,31 +455,21 @@ func Convert_flowcontrol_LimitResponse_To_v1alpha1_LimitResponse(in *flowcontrol
|
||||
}
|
||||
|
||||
func autoConvert_v1alpha1_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(in *v1alpha1.LimitedPriorityLevelConfiguration, out *flowcontrol.LimitedPriorityLevelConfiguration, s conversion.Scope) error {
|
||||
out.AssuredConcurrencyShares = in.AssuredConcurrencyShares
|
||||
// WARNING: in.AssuredConcurrencyShares requires manual conversion: does not exist in peer-type
|
||||
if err := Convert_v1alpha1_LimitResponse_To_flowcontrol_LimitResponse(&in.LimitResponse, &out.LimitResponse, s); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1alpha1_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration is an autogenerated conversion function.
|
||||
func Convert_v1alpha1_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(in *v1alpha1.LimitedPriorityLevelConfiguration, out *flowcontrol.LimitedPriorityLevelConfiguration, s conversion.Scope) error {
|
||||
return autoConvert_v1alpha1_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1alpha1_LimitedPriorityLevelConfiguration(in *flowcontrol.LimitedPriorityLevelConfiguration, out *v1alpha1.LimitedPriorityLevelConfiguration, s conversion.Scope) error {
|
||||
out.AssuredConcurrencyShares = in.AssuredConcurrencyShares
|
||||
// WARNING: in.NominalConcurrencyShares requires manual conversion: does not exist in peer-type
|
||||
if err := Convert_flowcontrol_LimitResponse_To_v1alpha1_LimitResponse(&in.LimitResponse, &out.LimitResponse, s); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1alpha1_LimitedPriorityLevelConfiguration is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1alpha1_LimitedPriorityLevelConfiguration(in *flowcontrol.LimitedPriorityLevelConfiguration, out *v1alpha1.LimitedPriorityLevelConfiguration, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1alpha1_LimitedPriorityLevelConfiguration(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1alpha1_NonResourcePolicyRule_To_flowcontrol_NonResourcePolicyRule(in *v1alpha1.NonResourcePolicyRule, out *flowcontrol.NonResourcePolicyRule, s conversion.Scope) error {
|
||||
out.Verbs = *(*[]string)(unsafe.Pointer(&in.Verbs))
|
||||
out.NonResourceURLs = *(*[]string)(unsafe.Pointer(&in.NonResourceURLs))
|
||||
@@ -588,7 +578,17 @@ func Convert_flowcontrol_PriorityLevelConfigurationCondition_To_v1alpha1_Priorit
|
||||
|
||||
func autoConvert_v1alpha1_PriorityLevelConfigurationList_To_flowcontrol_PriorityLevelConfigurationList(in *v1alpha1.PriorityLevelConfigurationList, out *flowcontrol.PriorityLevelConfigurationList, s conversion.Scope) error {
|
||||
out.ListMeta = in.ListMeta
|
||||
out.Items = *(*[]flowcontrol.PriorityLevelConfiguration)(unsafe.Pointer(&in.Items))
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]flowcontrol.PriorityLevelConfiguration, len(*in))
|
||||
for i := range *in {
|
||||
if err := Convert_v1alpha1_PriorityLevelConfiguration_To_flowcontrol_PriorityLevelConfiguration(&(*in)[i], &(*out)[i], s); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else {
|
||||
out.Items = nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -599,7 +599,17 @@ func Convert_v1alpha1_PriorityLevelConfigurationList_To_flowcontrol_PriorityLeve
|
||||
|
||||
func autoConvert_flowcontrol_PriorityLevelConfigurationList_To_v1alpha1_PriorityLevelConfigurationList(in *flowcontrol.PriorityLevelConfigurationList, out *v1alpha1.PriorityLevelConfigurationList, s conversion.Scope) error {
|
||||
out.ListMeta = in.ListMeta
|
||||
out.Items = *(*[]v1alpha1.PriorityLevelConfiguration)(unsafe.Pointer(&in.Items))
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]v1alpha1.PriorityLevelConfiguration, len(*in))
|
||||
for i := range *in {
|
||||
if err := Convert_flowcontrol_PriorityLevelConfiguration_To_v1alpha1_PriorityLevelConfiguration(&(*in)[i], &(*out)[i], s); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else {
|
||||
out.Items = nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -630,7 +640,15 @@ func Convert_flowcontrol_PriorityLevelConfigurationReference_To_v1alpha1_Priorit
|
||||
|
||||
func autoConvert_v1alpha1_PriorityLevelConfigurationSpec_To_flowcontrol_PriorityLevelConfigurationSpec(in *v1alpha1.PriorityLevelConfigurationSpec, out *flowcontrol.PriorityLevelConfigurationSpec, s conversion.Scope) error {
|
||||
out.Type = flowcontrol.PriorityLevelEnablement(in.Type)
|
||||
out.Limited = (*flowcontrol.LimitedPriorityLevelConfiguration)(unsafe.Pointer(in.Limited))
|
||||
if in.Limited != nil {
|
||||
in, out := &in.Limited, &out.Limited
|
||||
*out = new(flowcontrol.LimitedPriorityLevelConfiguration)
|
||||
if err := Convert_v1alpha1_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(*in, *out, s); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
out.Limited = nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -641,7 +659,15 @@ func Convert_v1alpha1_PriorityLevelConfigurationSpec_To_flowcontrol_PriorityLeve
|
||||
|
||||
func autoConvert_flowcontrol_PriorityLevelConfigurationSpec_To_v1alpha1_PriorityLevelConfigurationSpec(in *flowcontrol.PriorityLevelConfigurationSpec, out *v1alpha1.PriorityLevelConfigurationSpec, s conversion.Scope) error {
|
||||
out.Type = v1alpha1.PriorityLevelEnablement(in.Type)
|
||||
out.Limited = (*v1alpha1.LimitedPriorityLevelConfiguration)(unsafe.Pointer(in.Limited))
|
||||
if in.Limited != nil {
|
||||
in, out := &in.Limited, &out.Limited
|
||||
*out = new(v1alpha1.LimitedPriorityLevelConfiguration)
|
||||
if err := Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1alpha1_LimitedPriorityLevelConfiguration(*in, *out, s); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
out.Limited = nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
45
pkg/apis/flowcontrol/v1beta1/conversion.go
Normal file
45
pkg/apis/flowcontrol/v1beta1/conversion.go
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
Copyright 2022 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.
|
||||
*/
|
||||
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
"k8s.io/api/flowcontrol/v1beta1"
|
||||
"k8s.io/apimachinery/pkg/conversion"
|
||||
"k8s.io/kubernetes/pkg/apis/flowcontrol"
|
||||
)
|
||||
|
||||
// LimitedPriorityLevelConfiguration.AssuredConcurrencyShares has been
|
||||
// renamed to NominalConcurrencyShares in v1beta3.
|
||||
func Convert_v1beta1_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(in *v1beta1.LimitedPriorityLevelConfiguration, out *flowcontrol.LimitedPriorityLevelConfiguration, s conversion.Scope) error {
|
||||
if err := autoConvert_v1beta1_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(in, out, nil); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
out.NominalConcurrencyShares = in.AssuredConcurrencyShares
|
||||
return nil
|
||||
}
|
||||
|
||||
// LimitedPriorityLevelConfiguration.AssuredConcurrencyShares has been
|
||||
// renamed to NominalConcurrencyShares in v1beta3.
|
||||
func Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta1_LimitedPriorityLevelConfiguration(in *flowcontrol.LimitedPriorityLevelConfiguration, out *v1beta1.LimitedPriorityLevelConfiguration, s conversion.Scope) error {
|
||||
if err := autoConvert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta1_LimitedPriorityLevelConfiguration(in, out, nil); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
out.AssuredConcurrencyShares = in.NominalConcurrencyShares
|
||||
return nil
|
||||
}
|
97
pkg/apis/flowcontrol/v1beta1/conversion_test.go
Normal file
97
pkg/apis/flowcontrol/v1beta1/conversion_test.go
Normal file
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Copyright 2022 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.
|
||||
*/
|
||||
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"k8s.io/api/flowcontrol/v1beta1"
|
||||
"k8s.io/kubernetes/pkg/apis/flowcontrol"
|
||||
)
|
||||
|
||||
func TestConvert_v1beta1_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
in *v1beta1.LimitedPriorityLevelConfiguration
|
||||
expected *flowcontrol.LimitedPriorityLevelConfiguration
|
||||
}{
|
||||
{
|
||||
name: "nominal concurrency shares is set as expected",
|
||||
in: &v1beta1.LimitedPriorityLevelConfiguration{
|
||||
AssuredConcurrencyShares: 100,
|
||||
LimitResponse: v1beta1.LimitResponse{
|
||||
Type: v1beta1.LimitResponseTypeReject,
|
||||
},
|
||||
},
|
||||
expected: &flowcontrol.LimitedPriorityLevelConfiguration{
|
||||
NominalConcurrencyShares: 100,
|
||||
LimitResponse: flowcontrol.LimitResponse{
|
||||
Type: flowcontrol.LimitResponseTypeReject,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
out := &flowcontrol.LimitedPriorityLevelConfiguration{}
|
||||
if err := Convert_v1beta1_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(test.in, out, nil); err != nil {
|
||||
t.Errorf("Expected no error, but got: %v", err)
|
||||
}
|
||||
if !cmp.Equal(test.expected, out) {
|
||||
t.Errorf("Expected a match, diff: %s", cmp.Diff(test.expected, out))
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestConvert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta1_LimitedPriorityLevelConfiguration(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
in *flowcontrol.LimitedPriorityLevelConfiguration
|
||||
expected *v1beta1.LimitedPriorityLevelConfiguration
|
||||
}{
|
||||
{
|
||||
name: "assured concurrency shares is set as expected",
|
||||
in: &flowcontrol.LimitedPriorityLevelConfiguration{
|
||||
NominalConcurrencyShares: 100,
|
||||
LimitResponse: flowcontrol.LimitResponse{
|
||||
Type: flowcontrol.LimitResponseTypeReject,
|
||||
},
|
||||
},
|
||||
expected: &v1beta1.LimitedPriorityLevelConfiguration{
|
||||
AssuredConcurrencyShares: 100,
|
||||
LimitResponse: v1beta1.LimitResponse{
|
||||
Type: v1beta1.LimitResponseTypeReject,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
out := &v1beta1.LimitedPriorityLevelConfiguration{}
|
||||
if err := Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta1_LimitedPriorityLevelConfiguration(test.in, out, nil); err != nil {
|
||||
t.Errorf("Expected no error, but got: %v", err)
|
||||
}
|
||||
if !cmp.Equal(test.expected, out) {
|
||||
t.Errorf("Expected a match, diff: %s", cmp.Diff(test.expected, out))
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
@@ -117,16 +117,6 @@ func RegisterConversions(s *runtime.Scheme) error {
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta1.LimitedPriorityLevelConfiguration)(nil), (*flowcontrol.LimitedPriorityLevelConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta1_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(a.(*v1beta1.LimitedPriorityLevelConfiguration), b.(*flowcontrol.LimitedPriorityLevelConfiguration), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.LimitedPriorityLevelConfiguration)(nil), (*v1beta1.LimitedPriorityLevelConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta1_LimitedPriorityLevelConfiguration(a.(*flowcontrol.LimitedPriorityLevelConfiguration), b.(*v1beta1.LimitedPriorityLevelConfiguration), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta1.NonResourcePolicyRule)(nil), (*flowcontrol.NonResourcePolicyRule)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta1_NonResourcePolicyRule_To_flowcontrol_NonResourcePolicyRule(a.(*v1beta1.NonResourcePolicyRule), b.(*flowcontrol.NonResourcePolicyRule), scope)
|
||||
}); err != nil {
|
||||
@@ -257,6 +247,16 @@ func RegisterConversions(s *runtime.Scheme) error {
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddConversionFunc((*flowcontrol.LimitedPriorityLevelConfiguration)(nil), (*v1beta1.LimitedPriorityLevelConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta1_LimitedPriorityLevelConfiguration(a.(*flowcontrol.LimitedPriorityLevelConfiguration), b.(*v1beta1.LimitedPriorityLevelConfiguration), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddConversionFunc((*v1beta1.LimitedPriorityLevelConfiguration)(nil), (*flowcontrol.LimitedPriorityLevelConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta1_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(a.(*v1beta1.LimitedPriorityLevelConfiguration), b.(*flowcontrol.LimitedPriorityLevelConfiguration), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -455,31 +455,21 @@ func Convert_flowcontrol_LimitResponse_To_v1beta1_LimitResponse(in *flowcontrol.
|
||||
}
|
||||
|
||||
func autoConvert_v1beta1_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(in *v1beta1.LimitedPriorityLevelConfiguration, out *flowcontrol.LimitedPriorityLevelConfiguration, s conversion.Scope) error {
|
||||
out.AssuredConcurrencyShares = in.AssuredConcurrencyShares
|
||||
// WARNING: in.AssuredConcurrencyShares requires manual conversion: does not exist in peer-type
|
||||
if err := Convert_v1beta1_LimitResponse_To_flowcontrol_LimitResponse(&in.LimitResponse, &out.LimitResponse, s); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta1_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration is an autogenerated conversion function.
|
||||
func Convert_v1beta1_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(in *v1beta1.LimitedPriorityLevelConfiguration, out *flowcontrol.LimitedPriorityLevelConfiguration, s conversion.Scope) error {
|
||||
return autoConvert_v1beta1_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta1_LimitedPriorityLevelConfiguration(in *flowcontrol.LimitedPriorityLevelConfiguration, out *v1beta1.LimitedPriorityLevelConfiguration, s conversion.Scope) error {
|
||||
out.AssuredConcurrencyShares = in.AssuredConcurrencyShares
|
||||
// WARNING: in.NominalConcurrencyShares requires manual conversion: does not exist in peer-type
|
||||
if err := Convert_flowcontrol_LimitResponse_To_v1beta1_LimitResponse(&in.LimitResponse, &out.LimitResponse, s); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta1_LimitedPriorityLevelConfiguration is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta1_LimitedPriorityLevelConfiguration(in *flowcontrol.LimitedPriorityLevelConfiguration, out *v1beta1.LimitedPriorityLevelConfiguration, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta1_LimitedPriorityLevelConfiguration(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta1_NonResourcePolicyRule_To_flowcontrol_NonResourcePolicyRule(in *v1beta1.NonResourcePolicyRule, out *flowcontrol.NonResourcePolicyRule, s conversion.Scope) error {
|
||||
out.Verbs = *(*[]string)(unsafe.Pointer(&in.Verbs))
|
||||
out.NonResourceURLs = *(*[]string)(unsafe.Pointer(&in.NonResourceURLs))
|
||||
@@ -588,7 +578,17 @@ func Convert_flowcontrol_PriorityLevelConfigurationCondition_To_v1beta1_Priority
|
||||
|
||||
func autoConvert_v1beta1_PriorityLevelConfigurationList_To_flowcontrol_PriorityLevelConfigurationList(in *v1beta1.PriorityLevelConfigurationList, out *flowcontrol.PriorityLevelConfigurationList, s conversion.Scope) error {
|
||||
out.ListMeta = in.ListMeta
|
||||
out.Items = *(*[]flowcontrol.PriorityLevelConfiguration)(unsafe.Pointer(&in.Items))
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]flowcontrol.PriorityLevelConfiguration, len(*in))
|
||||
for i := range *in {
|
||||
if err := Convert_v1beta1_PriorityLevelConfiguration_To_flowcontrol_PriorityLevelConfiguration(&(*in)[i], &(*out)[i], s); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else {
|
||||
out.Items = nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -599,7 +599,17 @@ func Convert_v1beta1_PriorityLevelConfigurationList_To_flowcontrol_PriorityLevel
|
||||
|
||||
func autoConvert_flowcontrol_PriorityLevelConfigurationList_To_v1beta1_PriorityLevelConfigurationList(in *flowcontrol.PriorityLevelConfigurationList, out *v1beta1.PriorityLevelConfigurationList, s conversion.Scope) error {
|
||||
out.ListMeta = in.ListMeta
|
||||
out.Items = *(*[]v1beta1.PriorityLevelConfiguration)(unsafe.Pointer(&in.Items))
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]v1beta1.PriorityLevelConfiguration, len(*in))
|
||||
for i := range *in {
|
||||
if err := Convert_flowcontrol_PriorityLevelConfiguration_To_v1beta1_PriorityLevelConfiguration(&(*in)[i], &(*out)[i], s); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else {
|
||||
out.Items = nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -630,7 +640,15 @@ func Convert_flowcontrol_PriorityLevelConfigurationReference_To_v1beta1_Priority
|
||||
|
||||
func autoConvert_v1beta1_PriorityLevelConfigurationSpec_To_flowcontrol_PriorityLevelConfigurationSpec(in *v1beta1.PriorityLevelConfigurationSpec, out *flowcontrol.PriorityLevelConfigurationSpec, s conversion.Scope) error {
|
||||
out.Type = flowcontrol.PriorityLevelEnablement(in.Type)
|
||||
out.Limited = (*flowcontrol.LimitedPriorityLevelConfiguration)(unsafe.Pointer(in.Limited))
|
||||
if in.Limited != nil {
|
||||
in, out := &in.Limited, &out.Limited
|
||||
*out = new(flowcontrol.LimitedPriorityLevelConfiguration)
|
||||
if err := Convert_v1beta1_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(*in, *out, s); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
out.Limited = nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -641,7 +659,15 @@ func Convert_v1beta1_PriorityLevelConfigurationSpec_To_flowcontrol_PriorityLevel
|
||||
|
||||
func autoConvert_flowcontrol_PriorityLevelConfigurationSpec_To_v1beta1_PriorityLevelConfigurationSpec(in *flowcontrol.PriorityLevelConfigurationSpec, out *v1beta1.PriorityLevelConfigurationSpec, s conversion.Scope) error {
|
||||
out.Type = v1beta1.PriorityLevelEnablement(in.Type)
|
||||
out.Limited = (*v1beta1.LimitedPriorityLevelConfiguration)(unsafe.Pointer(in.Limited))
|
||||
if in.Limited != nil {
|
||||
in, out := &in.Limited, &out.Limited
|
||||
*out = new(v1beta1.LimitedPriorityLevelConfiguration)
|
||||
if err := Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta1_LimitedPriorityLevelConfiguration(*in, *out, s); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
out.Limited = nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
45
pkg/apis/flowcontrol/v1beta2/conversion.go
Normal file
45
pkg/apis/flowcontrol/v1beta2/conversion.go
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
Copyright 2022 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.
|
||||
*/
|
||||
|
||||
package v1beta2
|
||||
|
||||
import (
|
||||
"k8s.io/api/flowcontrol/v1beta2"
|
||||
"k8s.io/apimachinery/pkg/conversion"
|
||||
"k8s.io/kubernetes/pkg/apis/flowcontrol"
|
||||
)
|
||||
|
||||
// LimitedPriorityLevelConfiguration.AssuredConcurrencyShares has been
|
||||
// renamed to NominalConcurrencyShares in v1beta3.
|
||||
func Convert_v1beta2_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(in *v1beta2.LimitedPriorityLevelConfiguration, out *flowcontrol.LimitedPriorityLevelConfiguration, s conversion.Scope) error {
|
||||
if err := autoConvert_v1beta2_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(in, out, nil); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
out.NominalConcurrencyShares = in.AssuredConcurrencyShares
|
||||
return nil
|
||||
}
|
||||
|
||||
// LimitedPriorityLevelConfiguration.AssuredConcurrencyShares has been
|
||||
// renamed to NominalConcurrencyShares in v1beta3.
|
||||
func Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta2_LimitedPriorityLevelConfiguration(in *flowcontrol.LimitedPriorityLevelConfiguration, out *v1beta2.LimitedPriorityLevelConfiguration, s conversion.Scope) error {
|
||||
if err := autoConvert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta2_LimitedPriorityLevelConfiguration(in, out, nil); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
out.AssuredConcurrencyShares = in.NominalConcurrencyShares
|
||||
return nil
|
||||
}
|
97
pkg/apis/flowcontrol/v1beta2/conversion_test.go
Normal file
97
pkg/apis/flowcontrol/v1beta2/conversion_test.go
Normal file
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
Copyright 2022 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.
|
||||
*/
|
||||
|
||||
package v1beta2
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"k8s.io/api/flowcontrol/v1beta2"
|
||||
"k8s.io/kubernetes/pkg/apis/flowcontrol"
|
||||
)
|
||||
|
||||
func TestConvert_v1beta2_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
in *v1beta2.LimitedPriorityLevelConfiguration
|
||||
expected *flowcontrol.LimitedPriorityLevelConfiguration
|
||||
}{
|
||||
{
|
||||
name: "nominal concurrency shares is set as expected",
|
||||
in: &v1beta2.LimitedPriorityLevelConfiguration{
|
||||
AssuredConcurrencyShares: 100,
|
||||
LimitResponse: v1beta2.LimitResponse{
|
||||
Type: v1beta2.LimitResponseTypeReject,
|
||||
},
|
||||
},
|
||||
expected: &flowcontrol.LimitedPriorityLevelConfiguration{
|
||||
NominalConcurrencyShares: 100,
|
||||
LimitResponse: flowcontrol.LimitResponse{
|
||||
Type: flowcontrol.LimitResponseTypeReject,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
out := &flowcontrol.LimitedPriorityLevelConfiguration{}
|
||||
if err := Convert_v1beta2_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(test.in, out, nil); err != nil {
|
||||
t.Errorf("Expected no error, but got: %v", err)
|
||||
}
|
||||
if !cmp.Equal(test.expected, out) {
|
||||
t.Errorf("Expected a match, diff: %s", cmp.Diff(test.expected, out))
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestConvert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta2_LimitedPriorityLevelConfiguration(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
in *flowcontrol.LimitedPriorityLevelConfiguration
|
||||
expected *v1beta2.LimitedPriorityLevelConfiguration
|
||||
}{
|
||||
{
|
||||
name: "assured concurrency shares is set as expected",
|
||||
in: &flowcontrol.LimitedPriorityLevelConfiguration{
|
||||
NominalConcurrencyShares: 100,
|
||||
LimitResponse: flowcontrol.LimitResponse{
|
||||
Type: flowcontrol.LimitResponseTypeReject,
|
||||
},
|
||||
},
|
||||
expected: &v1beta2.LimitedPriorityLevelConfiguration{
|
||||
AssuredConcurrencyShares: 100,
|
||||
LimitResponse: v1beta2.LimitResponse{
|
||||
Type: v1beta2.LimitResponseTypeReject,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
out := &v1beta2.LimitedPriorityLevelConfiguration{}
|
||||
if err := Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta2_LimitedPriorityLevelConfiguration(test.in, out, nil); err != nil {
|
||||
t.Errorf("Expected no error, but got: %v", err)
|
||||
}
|
||||
if !cmp.Equal(test.expected, out) {
|
||||
t.Errorf("Expected a match, diff: %s", cmp.Diff(test.expected, out))
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
@@ -117,16 +117,6 @@ func RegisterConversions(s *runtime.Scheme) error {
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta2.LimitedPriorityLevelConfiguration)(nil), (*flowcontrol.LimitedPriorityLevelConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta2_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(a.(*v1beta2.LimitedPriorityLevelConfiguration), b.(*flowcontrol.LimitedPriorityLevelConfiguration), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.LimitedPriorityLevelConfiguration)(nil), (*v1beta2.LimitedPriorityLevelConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta2_LimitedPriorityLevelConfiguration(a.(*flowcontrol.LimitedPriorityLevelConfiguration), b.(*v1beta2.LimitedPriorityLevelConfiguration), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta2.NonResourcePolicyRule)(nil), (*flowcontrol.NonResourcePolicyRule)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta2_NonResourcePolicyRule_To_flowcontrol_NonResourcePolicyRule(a.(*v1beta2.NonResourcePolicyRule), b.(*flowcontrol.NonResourcePolicyRule), scope)
|
||||
}); err != nil {
|
||||
@@ -257,6 +247,16 @@ func RegisterConversions(s *runtime.Scheme) error {
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddConversionFunc((*flowcontrol.LimitedPriorityLevelConfiguration)(nil), (*v1beta2.LimitedPriorityLevelConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta2_LimitedPriorityLevelConfiguration(a.(*flowcontrol.LimitedPriorityLevelConfiguration), b.(*v1beta2.LimitedPriorityLevelConfiguration), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddConversionFunc((*v1beta2.LimitedPriorityLevelConfiguration)(nil), (*flowcontrol.LimitedPriorityLevelConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta2_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(a.(*v1beta2.LimitedPriorityLevelConfiguration), b.(*flowcontrol.LimitedPriorityLevelConfiguration), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -455,31 +455,21 @@ func Convert_flowcontrol_LimitResponse_To_v1beta2_LimitResponse(in *flowcontrol.
|
||||
}
|
||||
|
||||
func autoConvert_v1beta2_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(in *v1beta2.LimitedPriorityLevelConfiguration, out *flowcontrol.LimitedPriorityLevelConfiguration, s conversion.Scope) error {
|
||||
out.AssuredConcurrencyShares = in.AssuredConcurrencyShares
|
||||
// WARNING: in.AssuredConcurrencyShares requires manual conversion: does not exist in peer-type
|
||||
if err := Convert_v1beta2_LimitResponse_To_flowcontrol_LimitResponse(&in.LimitResponse, &out.LimitResponse, s); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta2_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration is an autogenerated conversion function.
|
||||
func Convert_v1beta2_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(in *v1beta2.LimitedPriorityLevelConfiguration, out *flowcontrol.LimitedPriorityLevelConfiguration, s conversion.Scope) error {
|
||||
return autoConvert_v1beta2_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta2_LimitedPriorityLevelConfiguration(in *flowcontrol.LimitedPriorityLevelConfiguration, out *v1beta2.LimitedPriorityLevelConfiguration, s conversion.Scope) error {
|
||||
out.AssuredConcurrencyShares = in.AssuredConcurrencyShares
|
||||
// WARNING: in.NominalConcurrencyShares requires manual conversion: does not exist in peer-type
|
||||
if err := Convert_flowcontrol_LimitResponse_To_v1beta2_LimitResponse(&in.LimitResponse, &out.LimitResponse, s); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta2_LimitedPriorityLevelConfiguration is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta2_LimitedPriorityLevelConfiguration(in *flowcontrol.LimitedPriorityLevelConfiguration, out *v1beta2.LimitedPriorityLevelConfiguration, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta2_LimitedPriorityLevelConfiguration(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta2_NonResourcePolicyRule_To_flowcontrol_NonResourcePolicyRule(in *v1beta2.NonResourcePolicyRule, out *flowcontrol.NonResourcePolicyRule, s conversion.Scope) error {
|
||||
out.Verbs = *(*[]string)(unsafe.Pointer(&in.Verbs))
|
||||
out.NonResourceURLs = *(*[]string)(unsafe.Pointer(&in.NonResourceURLs))
|
||||
@@ -588,7 +578,17 @@ func Convert_flowcontrol_PriorityLevelConfigurationCondition_To_v1beta2_Priority
|
||||
|
||||
func autoConvert_v1beta2_PriorityLevelConfigurationList_To_flowcontrol_PriorityLevelConfigurationList(in *v1beta2.PriorityLevelConfigurationList, out *flowcontrol.PriorityLevelConfigurationList, s conversion.Scope) error {
|
||||
out.ListMeta = in.ListMeta
|
||||
out.Items = *(*[]flowcontrol.PriorityLevelConfiguration)(unsafe.Pointer(&in.Items))
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]flowcontrol.PriorityLevelConfiguration, len(*in))
|
||||
for i := range *in {
|
||||
if err := Convert_v1beta2_PriorityLevelConfiguration_To_flowcontrol_PriorityLevelConfiguration(&(*in)[i], &(*out)[i], s); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else {
|
||||
out.Items = nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -599,7 +599,17 @@ func Convert_v1beta2_PriorityLevelConfigurationList_To_flowcontrol_PriorityLevel
|
||||
|
||||
func autoConvert_flowcontrol_PriorityLevelConfigurationList_To_v1beta2_PriorityLevelConfigurationList(in *flowcontrol.PriorityLevelConfigurationList, out *v1beta2.PriorityLevelConfigurationList, s conversion.Scope) error {
|
||||
out.ListMeta = in.ListMeta
|
||||
out.Items = *(*[]v1beta2.PriorityLevelConfiguration)(unsafe.Pointer(&in.Items))
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]v1beta2.PriorityLevelConfiguration, len(*in))
|
||||
for i := range *in {
|
||||
if err := Convert_flowcontrol_PriorityLevelConfiguration_To_v1beta2_PriorityLevelConfiguration(&(*in)[i], &(*out)[i], s); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else {
|
||||
out.Items = nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -630,7 +640,15 @@ func Convert_flowcontrol_PriorityLevelConfigurationReference_To_v1beta2_Priority
|
||||
|
||||
func autoConvert_v1beta2_PriorityLevelConfigurationSpec_To_flowcontrol_PriorityLevelConfigurationSpec(in *v1beta2.PriorityLevelConfigurationSpec, out *flowcontrol.PriorityLevelConfigurationSpec, s conversion.Scope) error {
|
||||
out.Type = flowcontrol.PriorityLevelEnablement(in.Type)
|
||||
out.Limited = (*flowcontrol.LimitedPriorityLevelConfiguration)(unsafe.Pointer(in.Limited))
|
||||
if in.Limited != nil {
|
||||
in, out := &in.Limited, &out.Limited
|
||||
*out = new(flowcontrol.LimitedPriorityLevelConfiguration)
|
||||
if err := Convert_v1beta2_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(*in, *out, s); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
out.Limited = nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -641,7 +659,15 @@ func Convert_v1beta2_PriorityLevelConfigurationSpec_To_flowcontrol_PriorityLevel
|
||||
|
||||
func autoConvert_flowcontrol_PriorityLevelConfigurationSpec_To_v1beta2_PriorityLevelConfigurationSpec(in *flowcontrol.PriorityLevelConfigurationSpec, out *v1beta2.PriorityLevelConfigurationSpec, s conversion.Scope) error {
|
||||
out.Type = v1beta2.PriorityLevelEnablement(in.Type)
|
||||
out.Limited = (*v1beta2.LimitedPriorityLevelConfiguration)(unsafe.Pointer(in.Limited))
|
||||
if in.Limited != nil {
|
||||
in, out := &in.Limited, &out.Limited
|
||||
*out = new(v1beta2.LimitedPriorityLevelConfiguration)
|
||||
if err := Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta2_LimitedPriorityLevelConfiguration(*in, *out, s); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
out.Limited = nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
60
pkg/apis/flowcontrol/v1beta3/defaults.go
Normal file
60
pkg/apis/flowcontrol/v1beta3/defaults.go
Normal file
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
Copyright 2022 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.
|
||||
*/
|
||||
|
||||
package v1beta3
|
||||
|
||||
import (
|
||||
"k8s.io/api/flowcontrol/v1beta3"
|
||||
)
|
||||
|
||||
// Default settings for flow-schema
|
||||
const (
|
||||
FlowSchemaDefaultMatchingPrecedence int32 = 1000
|
||||
)
|
||||
|
||||
// Default settings for priority-level-configuration
|
||||
const (
|
||||
PriorityLevelConfigurationDefaultHandSize int32 = 8
|
||||
PriorityLevelConfigurationDefaultQueues int32 = 64
|
||||
PriorityLevelConfigurationDefaultQueueLengthLimit int32 = 50
|
||||
PriorityLevelConfigurationDefaultNominalConcurrencyShares int32 = 30
|
||||
)
|
||||
|
||||
// SetDefaults_FlowSchema sets default values for flow schema
|
||||
func SetDefaults_FlowSchemaSpec(spec *v1beta3.FlowSchemaSpec) {
|
||||
if spec.MatchingPrecedence == 0 {
|
||||
spec.MatchingPrecedence = FlowSchemaDefaultMatchingPrecedence
|
||||
}
|
||||
}
|
||||
|
||||
func SetDefaults_LimitedPriorityLevelConfiguration(lplc *v1beta3.LimitedPriorityLevelConfiguration) {
|
||||
if lplc.NominalConcurrencyShares == 0 {
|
||||
lplc.NominalConcurrencyShares = PriorityLevelConfigurationDefaultNominalConcurrencyShares
|
||||
}
|
||||
}
|
||||
|
||||
// SetDefaults_FlowSchema sets default values for flow schema
|
||||
func SetDefaults_QueuingConfiguration(cfg *v1beta3.QueuingConfiguration) {
|
||||
if cfg.HandSize == 0 {
|
||||
cfg.HandSize = PriorityLevelConfigurationDefaultHandSize
|
||||
}
|
||||
if cfg.Queues == 0 {
|
||||
cfg.Queues = PriorityLevelConfigurationDefaultQueues
|
||||
}
|
||||
if cfg.QueueLengthLimit == 0 {
|
||||
cfg.QueueLengthLimit = PriorityLevelConfigurationDefaultQueueLengthLimit
|
||||
}
|
||||
}
|
24
pkg/apis/flowcontrol/v1beta3/doc.go
Normal file
24
pkg/apis/flowcontrol/v1beta3/doc.go
Normal file
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
Copyright 2022 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.
|
||||
*/
|
||||
|
||||
// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/flowcontrol
|
||||
// +k8s:conversion-gen-external-types=k8s.io/api/flowcontrol/v1beta3
|
||||
// +k8s:defaulter-gen=TypeMeta
|
||||
// +k8s:defaulter-gen-input=k8s.io/api/flowcontrol/v1beta3
|
||||
|
||||
// +groupName=flowcontrol.apiserver.k8s.io
|
||||
|
||||
package v1beta3 // import "k8s.io/kubernetes/pkg/apis/flowcontrol/v1beta3"
|
46
pkg/apis/flowcontrol/v1beta3/register.go
Normal file
46
pkg/apis/flowcontrol/v1beta3/register.go
Normal file
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
Copyright 2022 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.
|
||||
*/
|
||||
|
||||
package v1beta3
|
||||
|
||||
import (
|
||||
flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
)
|
||||
|
||||
// GroupName is the group name use in this package
|
||||
const GroupName = "flowcontrol.apiserver.k8s.io"
|
||||
|
||||
// SchemeGroupVersion is group version used to register these objects
|
||||
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta3"}
|
||||
|
||||
// Resource takes an unqualified resource and returns a Group qualified GroupResource
|
||||
func Resource(resource string) schema.GroupResource {
|
||||
return SchemeGroupVersion.WithResource(resource).GroupResource()
|
||||
}
|
||||
|
||||
var (
|
||||
localSchemeBuilder = &flowcontrolv1beta3.SchemeBuilder
|
||||
// AddToScheme adds api to a scheme
|
||||
AddToScheme = localSchemeBuilder.AddToScheme
|
||||
)
|
||||
|
||||
func init() {
|
||||
// We only register manually written functions here. The registration of the
|
||||
// generated functions takes place in the generated files. The separation
|
||||
// makes the code compile even when the generated files are missing.
|
||||
localSchemeBuilder.Register(RegisterDefaults)
|
||||
}
|
791
pkg/apis/flowcontrol/v1beta3/zz_generated.conversion.go
generated
Normal file
791
pkg/apis/flowcontrol/v1beta3/zz_generated.conversion.go
generated
Normal file
@@ -0,0 +1,791 @@
|
||||
//go:build !ignore_autogenerated
|
||||
// +build !ignore_autogenerated
|
||||
|
||||
/*
|
||||
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 conversion-gen. DO NOT EDIT.
|
||||
|
||||
package v1beta3
|
||||
|
||||
import (
|
||||
unsafe "unsafe"
|
||||
|
||||
v1beta3 "k8s.io/api/flowcontrol/v1beta3"
|
||||
conversion "k8s.io/apimachinery/pkg/conversion"
|
||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||
flowcontrol "k8s.io/kubernetes/pkg/apis/flowcontrol"
|
||||
)
|
||||
|
||||
func init() {
|
||||
localSchemeBuilder.Register(RegisterConversions)
|
||||
}
|
||||
|
||||
// RegisterConversions adds conversion functions to the given scheme.
|
||||
// Public to allow building arbitrary schemes.
|
||||
func RegisterConversions(s *runtime.Scheme) error {
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta3.FlowDistinguisherMethod)(nil), (*flowcontrol.FlowDistinguisherMethod)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta3_FlowDistinguisherMethod_To_flowcontrol_FlowDistinguisherMethod(a.(*v1beta3.FlowDistinguisherMethod), b.(*flowcontrol.FlowDistinguisherMethod), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.FlowDistinguisherMethod)(nil), (*v1beta3.FlowDistinguisherMethod)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_FlowDistinguisherMethod_To_v1beta3_FlowDistinguisherMethod(a.(*flowcontrol.FlowDistinguisherMethod), b.(*v1beta3.FlowDistinguisherMethod), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta3.FlowSchema)(nil), (*flowcontrol.FlowSchema)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta3_FlowSchema_To_flowcontrol_FlowSchema(a.(*v1beta3.FlowSchema), b.(*flowcontrol.FlowSchema), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.FlowSchema)(nil), (*v1beta3.FlowSchema)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_FlowSchema_To_v1beta3_FlowSchema(a.(*flowcontrol.FlowSchema), b.(*v1beta3.FlowSchema), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta3.FlowSchemaCondition)(nil), (*flowcontrol.FlowSchemaCondition)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta3_FlowSchemaCondition_To_flowcontrol_FlowSchemaCondition(a.(*v1beta3.FlowSchemaCondition), b.(*flowcontrol.FlowSchemaCondition), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.FlowSchemaCondition)(nil), (*v1beta3.FlowSchemaCondition)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_FlowSchemaCondition_To_v1beta3_FlowSchemaCondition(a.(*flowcontrol.FlowSchemaCondition), b.(*v1beta3.FlowSchemaCondition), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta3.FlowSchemaList)(nil), (*flowcontrol.FlowSchemaList)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta3_FlowSchemaList_To_flowcontrol_FlowSchemaList(a.(*v1beta3.FlowSchemaList), b.(*flowcontrol.FlowSchemaList), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.FlowSchemaList)(nil), (*v1beta3.FlowSchemaList)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_FlowSchemaList_To_v1beta3_FlowSchemaList(a.(*flowcontrol.FlowSchemaList), b.(*v1beta3.FlowSchemaList), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta3.FlowSchemaSpec)(nil), (*flowcontrol.FlowSchemaSpec)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta3_FlowSchemaSpec_To_flowcontrol_FlowSchemaSpec(a.(*v1beta3.FlowSchemaSpec), b.(*flowcontrol.FlowSchemaSpec), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.FlowSchemaSpec)(nil), (*v1beta3.FlowSchemaSpec)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_FlowSchemaSpec_To_v1beta3_FlowSchemaSpec(a.(*flowcontrol.FlowSchemaSpec), b.(*v1beta3.FlowSchemaSpec), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta3.FlowSchemaStatus)(nil), (*flowcontrol.FlowSchemaStatus)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta3_FlowSchemaStatus_To_flowcontrol_FlowSchemaStatus(a.(*v1beta3.FlowSchemaStatus), b.(*flowcontrol.FlowSchemaStatus), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.FlowSchemaStatus)(nil), (*v1beta3.FlowSchemaStatus)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_FlowSchemaStatus_To_v1beta3_FlowSchemaStatus(a.(*flowcontrol.FlowSchemaStatus), b.(*v1beta3.FlowSchemaStatus), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta3.GroupSubject)(nil), (*flowcontrol.GroupSubject)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta3_GroupSubject_To_flowcontrol_GroupSubject(a.(*v1beta3.GroupSubject), b.(*flowcontrol.GroupSubject), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.GroupSubject)(nil), (*v1beta3.GroupSubject)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_GroupSubject_To_v1beta3_GroupSubject(a.(*flowcontrol.GroupSubject), b.(*v1beta3.GroupSubject), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta3.LimitResponse)(nil), (*flowcontrol.LimitResponse)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta3_LimitResponse_To_flowcontrol_LimitResponse(a.(*v1beta3.LimitResponse), b.(*flowcontrol.LimitResponse), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.LimitResponse)(nil), (*v1beta3.LimitResponse)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_LimitResponse_To_v1beta3_LimitResponse(a.(*flowcontrol.LimitResponse), b.(*v1beta3.LimitResponse), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta3.LimitedPriorityLevelConfiguration)(nil), (*flowcontrol.LimitedPriorityLevelConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta3_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(a.(*v1beta3.LimitedPriorityLevelConfiguration), b.(*flowcontrol.LimitedPriorityLevelConfiguration), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.LimitedPriorityLevelConfiguration)(nil), (*v1beta3.LimitedPriorityLevelConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta3_LimitedPriorityLevelConfiguration(a.(*flowcontrol.LimitedPriorityLevelConfiguration), b.(*v1beta3.LimitedPriorityLevelConfiguration), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta3.NonResourcePolicyRule)(nil), (*flowcontrol.NonResourcePolicyRule)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta3_NonResourcePolicyRule_To_flowcontrol_NonResourcePolicyRule(a.(*v1beta3.NonResourcePolicyRule), b.(*flowcontrol.NonResourcePolicyRule), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.NonResourcePolicyRule)(nil), (*v1beta3.NonResourcePolicyRule)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_NonResourcePolicyRule_To_v1beta3_NonResourcePolicyRule(a.(*flowcontrol.NonResourcePolicyRule), b.(*v1beta3.NonResourcePolicyRule), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta3.PolicyRulesWithSubjects)(nil), (*flowcontrol.PolicyRulesWithSubjects)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta3_PolicyRulesWithSubjects_To_flowcontrol_PolicyRulesWithSubjects(a.(*v1beta3.PolicyRulesWithSubjects), b.(*flowcontrol.PolicyRulesWithSubjects), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.PolicyRulesWithSubjects)(nil), (*v1beta3.PolicyRulesWithSubjects)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_PolicyRulesWithSubjects_To_v1beta3_PolicyRulesWithSubjects(a.(*flowcontrol.PolicyRulesWithSubjects), b.(*v1beta3.PolicyRulesWithSubjects), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta3.PriorityLevelConfiguration)(nil), (*flowcontrol.PriorityLevelConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta3_PriorityLevelConfiguration_To_flowcontrol_PriorityLevelConfiguration(a.(*v1beta3.PriorityLevelConfiguration), b.(*flowcontrol.PriorityLevelConfiguration), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.PriorityLevelConfiguration)(nil), (*v1beta3.PriorityLevelConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_PriorityLevelConfiguration_To_v1beta3_PriorityLevelConfiguration(a.(*flowcontrol.PriorityLevelConfiguration), b.(*v1beta3.PriorityLevelConfiguration), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta3.PriorityLevelConfigurationCondition)(nil), (*flowcontrol.PriorityLevelConfigurationCondition)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta3_PriorityLevelConfigurationCondition_To_flowcontrol_PriorityLevelConfigurationCondition(a.(*v1beta3.PriorityLevelConfigurationCondition), b.(*flowcontrol.PriorityLevelConfigurationCondition), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.PriorityLevelConfigurationCondition)(nil), (*v1beta3.PriorityLevelConfigurationCondition)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_PriorityLevelConfigurationCondition_To_v1beta3_PriorityLevelConfigurationCondition(a.(*flowcontrol.PriorityLevelConfigurationCondition), b.(*v1beta3.PriorityLevelConfigurationCondition), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta3.PriorityLevelConfigurationList)(nil), (*flowcontrol.PriorityLevelConfigurationList)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta3_PriorityLevelConfigurationList_To_flowcontrol_PriorityLevelConfigurationList(a.(*v1beta3.PriorityLevelConfigurationList), b.(*flowcontrol.PriorityLevelConfigurationList), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.PriorityLevelConfigurationList)(nil), (*v1beta3.PriorityLevelConfigurationList)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_PriorityLevelConfigurationList_To_v1beta3_PriorityLevelConfigurationList(a.(*flowcontrol.PriorityLevelConfigurationList), b.(*v1beta3.PriorityLevelConfigurationList), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta3.PriorityLevelConfigurationReference)(nil), (*flowcontrol.PriorityLevelConfigurationReference)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta3_PriorityLevelConfigurationReference_To_flowcontrol_PriorityLevelConfigurationReference(a.(*v1beta3.PriorityLevelConfigurationReference), b.(*flowcontrol.PriorityLevelConfigurationReference), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.PriorityLevelConfigurationReference)(nil), (*v1beta3.PriorityLevelConfigurationReference)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_PriorityLevelConfigurationReference_To_v1beta3_PriorityLevelConfigurationReference(a.(*flowcontrol.PriorityLevelConfigurationReference), b.(*v1beta3.PriorityLevelConfigurationReference), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta3.PriorityLevelConfigurationSpec)(nil), (*flowcontrol.PriorityLevelConfigurationSpec)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta3_PriorityLevelConfigurationSpec_To_flowcontrol_PriorityLevelConfigurationSpec(a.(*v1beta3.PriorityLevelConfigurationSpec), b.(*flowcontrol.PriorityLevelConfigurationSpec), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.PriorityLevelConfigurationSpec)(nil), (*v1beta3.PriorityLevelConfigurationSpec)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_PriorityLevelConfigurationSpec_To_v1beta3_PriorityLevelConfigurationSpec(a.(*flowcontrol.PriorityLevelConfigurationSpec), b.(*v1beta3.PriorityLevelConfigurationSpec), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta3.PriorityLevelConfigurationStatus)(nil), (*flowcontrol.PriorityLevelConfigurationStatus)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta3_PriorityLevelConfigurationStatus_To_flowcontrol_PriorityLevelConfigurationStatus(a.(*v1beta3.PriorityLevelConfigurationStatus), b.(*flowcontrol.PriorityLevelConfigurationStatus), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.PriorityLevelConfigurationStatus)(nil), (*v1beta3.PriorityLevelConfigurationStatus)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_PriorityLevelConfigurationStatus_To_v1beta3_PriorityLevelConfigurationStatus(a.(*flowcontrol.PriorityLevelConfigurationStatus), b.(*v1beta3.PriorityLevelConfigurationStatus), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta3.QueuingConfiguration)(nil), (*flowcontrol.QueuingConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta3_QueuingConfiguration_To_flowcontrol_QueuingConfiguration(a.(*v1beta3.QueuingConfiguration), b.(*flowcontrol.QueuingConfiguration), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.QueuingConfiguration)(nil), (*v1beta3.QueuingConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_QueuingConfiguration_To_v1beta3_QueuingConfiguration(a.(*flowcontrol.QueuingConfiguration), b.(*v1beta3.QueuingConfiguration), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta3.ResourcePolicyRule)(nil), (*flowcontrol.ResourcePolicyRule)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta3_ResourcePolicyRule_To_flowcontrol_ResourcePolicyRule(a.(*v1beta3.ResourcePolicyRule), b.(*flowcontrol.ResourcePolicyRule), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.ResourcePolicyRule)(nil), (*v1beta3.ResourcePolicyRule)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_ResourcePolicyRule_To_v1beta3_ResourcePolicyRule(a.(*flowcontrol.ResourcePolicyRule), b.(*v1beta3.ResourcePolicyRule), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta3.ServiceAccountSubject)(nil), (*flowcontrol.ServiceAccountSubject)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta3_ServiceAccountSubject_To_flowcontrol_ServiceAccountSubject(a.(*v1beta3.ServiceAccountSubject), b.(*flowcontrol.ServiceAccountSubject), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.ServiceAccountSubject)(nil), (*v1beta3.ServiceAccountSubject)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_ServiceAccountSubject_To_v1beta3_ServiceAccountSubject(a.(*flowcontrol.ServiceAccountSubject), b.(*v1beta3.ServiceAccountSubject), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta3.Subject)(nil), (*flowcontrol.Subject)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta3_Subject_To_flowcontrol_Subject(a.(*v1beta3.Subject), b.(*flowcontrol.Subject), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.Subject)(nil), (*v1beta3.Subject)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_Subject_To_v1beta3_Subject(a.(*flowcontrol.Subject), b.(*v1beta3.Subject), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*v1beta3.UserSubject)(nil), (*flowcontrol.UserSubject)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_v1beta3_UserSubject_To_flowcontrol_UserSubject(a.(*v1beta3.UserSubject), b.(*flowcontrol.UserSubject), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*flowcontrol.UserSubject)(nil), (*v1beta3.UserSubject)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_flowcontrol_UserSubject_To_v1beta3_UserSubject(a.(*flowcontrol.UserSubject), b.(*v1beta3.UserSubject), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func autoConvert_v1beta3_FlowDistinguisherMethod_To_flowcontrol_FlowDistinguisherMethod(in *v1beta3.FlowDistinguisherMethod, out *flowcontrol.FlowDistinguisherMethod, s conversion.Scope) error {
|
||||
out.Type = flowcontrol.FlowDistinguisherMethodType(in.Type)
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta3_FlowDistinguisherMethod_To_flowcontrol_FlowDistinguisherMethod is an autogenerated conversion function.
|
||||
func Convert_v1beta3_FlowDistinguisherMethod_To_flowcontrol_FlowDistinguisherMethod(in *v1beta3.FlowDistinguisherMethod, out *flowcontrol.FlowDistinguisherMethod, s conversion.Scope) error {
|
||||
return autoConvert_v1beta3_FlowDistinguisherMethod_To_flowcontrol_FlowDistinguisherMethod(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_FlowDistinguisherMethod_To_v1beta3_FlowDistinguisherMethod(in *flowcontrol.FlowDistinguisherMethod, out *v1beta3.FlowDistinguisherMethod, s conversion.Scope) error {
|
||||
out.Type = v1beta3.FlowDistinguisherMethodType(in.Type)
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_FlowDistinguisherMethod_To_v1beta3_FlowDistinguisherMethod is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_FlowDistinguisherMethod_To_v1beta3_FlowDistinguisherMethod(in *flowcontrol.FlowDistinguisherMethod, out *v1beta3.FlowDistinguisherMethod, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_FlowDistinguisherMethod_To_v1beta3_FlowDistinguisherMethod(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta3_FlowSchema_To_flowcontrol_FlowSchema(in *v1beta3.FlowSchema, out *flowcontrol.FlowSchema, s conversion.Scope) error {
|
||||
out.ObjectMeta = in.ObjectMeta
|
||||
if err := Convert_v1beta3_FlowSchemaSpec_To_flowcontrol_FlowSchemaSpec(&in.Spec, &out.Spec, s); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := Convert_v1beta3_FlowSchemaStatus_To_flowcontrol_FlowSchemaStatus(&in.Status, &out.Status, s); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta3_FlowSchema_To_flowcontrol_FlowSchema is an autogenerated conversion function.
|
||||
func Convert_v1beta3_FlowSchema_To_flowcontrol_FlowSchema(in *v1beta3.FlowSchema, out *flowcontrol.FlowSchema, s conversion.Scope) error {
|
||||
return autoConvert_v1beta3_FlowSchema_To_flowcontrol_FlowSchema(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_FlowSchema_To_v1beta3_FlowSchema(in *flowcontrol.FlowSchema, out *v1beta3.FlowSchema, s conversion.Scope) error {
|
||||
out.ObjectMeta = in.ObjectMeta
|
||||
if err := Convert_flowcontrol_FlowSchemaSpec_To_v1beta3_FlowSchemaSpec(&in.Spec, &out.Spec, s); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := Convert_flowcontrol_FlowSchemaStatus_To_v1beta3_FlowSchemaStatus(&in.Status, &out.Status, s); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_FlowSchema_To_v1beta3_FlowSchema is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_FlowSchema_To_v1beta3_FlowSchema(in *flowcontrol.FlowSchema, out *v1beta3.FlowSchema, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_FlowSchema_To_v1beta3_FlowSchema(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta3_FlowSchemaCondition_To_flowcontrol_FlowSchemaCondition(in *v1beta3.FlowSchemaCondition, out *flowcontrol.FlowSchemaCondition, s conversion.Scope) error {
|
||||
out.Type = flowcontrol.FlowSchemaConditionType(in.Type)
|
||||
out.Status = flowcontrol.ConditionStatus(in.Status)
|
||||
out.LastTransitionTime = in.LastTransitionTime
|
||||
out.Reason = in.Reason
|
||||
out.Message = in.Message
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta3_FlowSchemaCondition_To_flowcontrol_FlowSchemaCondition is an autogenerated conversion function.
|
||||
func Convert_v1beta3_FlowSchemaCondition_To_flowcontrol_FlowSchemaCondition(in *v1beta3.FlowSchemaCondition, out *flowcontrol.FlowSchemaCondition, s conversion.Scope) error {
|
||||
return autoConvert_v1beta3_FlowSchemaCondition_To_flowcontrol_FlowSchemaCondition(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_FlowSchemaCondition_To_v1beta3_FlowSchemaCondition(in *flowcontrol.FlowSchemaCondition, out *v1beta3.FlowSchemaCondition, s conversion.Scope) error {
|
||||
out.Type = v1beta3.FlowSchemaConditionType(in.Type)
|
||||
out.Status = v1beta3.ConditionStatus(in.Status)
|
||||
out.LastTransitionTime = in.LastTransitionTime
|
||||
out.Reason = in.Reason
|
||||
out.Message = in.Message
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_FlowSchemaCondition_To_v1beta3_FlowSchemaCondition is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_FlowSchemaCondition_To_v1beta3_FlowSchemaCondition(in *flowcontrol.FlowSchemaCondition, out *v1beta3.FlowSchemaCondition, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_FlowSchemaCondition_To_v1beta3_FlowSchemaCondition(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta3_FlowSchemaList_To_flowcontrol_FlowSchemaList(in *v1beta3.FlowSchemaList, out *flowcontrol.FlowSchemaList, s conversion.Scope) error {
|
||||
out.ListMeta = in.ListMeta
|
||||
out.Items = *(*[]flowcontrol.FlowSchema)(unsafe.Pointer(&in.Items))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta3_FlowSchemaList_To_flowcontrol_FlowSchemaList is an autogenerated conversion function.
|
||||
func Convert_v1beta3_FlowSchemaList_To_flowcontrol_FlowSchemaList(in *v1beta3.FlowSchemaList, out *flowcontrol.FlowSchemaList, s conversion.Scope) error {
|
||||
return autoConvert_v1beta3_FlowSchemaList_To_flowcontrol_FlowSchemaList(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_FlowSchemaList_To_v1beta3_FlowSchemaList(in *flowcontrol.FlowSchemaList, out *v1beta3.FlowSchemaList, s conversion.Scope) error {
|
||||
out.ListMeta = in.ListMeta
|
||||
out.Items = *(*[]v1beta3.FlowSchema)(unsafe.Pointer(&in.Items))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_FlowSchemaList_To_v1beta3_FlowSchemaList is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_FlowSchemaList_To_v1beta3_FlowSchemaList(in *flowcontrol.FlowSchemaList, out *v1beta3.FlowSchemaList, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_FlowSchemaList_To_v1beta3_FlowSchemaList(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta3_FlowSchemaSpec_To_flowcontrol_FlowSchemaSpec(in *v1beta3.FlowSchemaSpec, out *flowcontrol.FlowSchemaSpec, s conversion.Scope) error {
|
||||
if err := Convert_v1beta3_PriorityLevelConfigurationReference_To_flowcontrol_PriorityLevelConfigurationReference(&in.PriorityLevelConfiguration, &out.PriorityLevelConfiguration, s); err != nil {
|
||||
return err
|
||||
}
|
||||
out.MatchingPrecedence = in.MatchingPrecedence
|
||||
out.DistinguisherMethod = (*flowcontrol.FlowDistinguisherMethod)(unsafe.Pointer(in.DistinguisherMethod))
|
||||
out.Rules = *(*[]flowcontrol.PolicyRulesWithSubjects)(unsafe.Pointer(&in.Rules))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta3_FlowSchemaSpec_To_flowcontrol_FlowSchemaSpec is an autogenerated conversion function.
|
||||
func Convert_v1beta3_FlowSchemaSpec_To_flowcontrol_FlowSchemaSpec(in *v1beta3.FlowSchemaSpec, out *flowcontrol.FlowSchemaSpec, s conversion.Scope) error {
|
||||
return autoConvert_v1beta3_FlowSchemaSpec_To_flowcontrol_FlowSchemaSpec(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_FlowSchemaSpec_To_v1beta3_FlowSchemaSpec(in *flowcontrol.FlowSchemaSpec, out *v1beta3.FlowSchemaSpec, s conversion.Scope) error {
|
||||
if err := Convert_flowcontrol_PriorityLevelConfigurationReference_To_v1beta3_PriorityLevelConfigurationReference(&in.PriorityLevelConfiguration, &out.PriorityLevelConfiguration, s); err != nil {
|
||||
return err
|
||||
}
|
||||
out.MatchingPrecedence = in.MatchingPrecedence
|
||||
out.DistinguisherMethod = (*v1beta3.FlowDistinguisherMethod)(unsafe.Pointer(in.DistinguisherMethod))
|
||||
out.Rules = *(*[]v1beta3.PolicyRulesWithSubjects)(unsafe.Pointer(&in.Rules))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_FlowSchemaSpec_To_v1beta3_FlowSchemaSpec is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_FlowSchemaSpec_To_v1beta3_FlowSchemaSpec(in *flowcontrol.FlowSchemaSpec, out *v1beta3.FlowSchemaSpec, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_FlowSchemaSpec_To_v1beta3_FlowSchemaSpec(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta3_FlowSchemaStatus_To_flowcontrol_FlowSchemaStatus(in *v1beta3.FlowSchemaStatus, out *flowcontrol.FlowSchemaStatus, s conversion.Scope) error {
|
||||
out.Conditions = *(*[]flowcontrol.FlowSchemaCondition)(unsafe.Pointer(&in.Conditions))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta3_FlowSchemaStatus_To_flowcontrol_FlowSchemaStatus is an autogenerated conversion function.
|
||||
func Convert_v1beta3_FlowSchemaStatus_To_flowcontrol_FlowSchemaStatus(in *v1beta3.FlowSchemaStatus, out *flowcontrol.FlowSchemaStatus, s conversion.Scope) error {
|
||||
return autoConvert_v1beta3_FlowSchemaStatus_To_flowcontrol_FlowSchemaStatus(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_FlowSchemaStatus_To_v1beta3_FlowSchemaStatus(in *flowcontrol.FlowSchemaStatus, out *v1beta3.FlowSchemaStatus, s conversion.Scope) error {
|
||||
out.Conditions = *(*[]v1beta3.FlowSchemaCondition)(unsafe.Pointer(&in.Conditions))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_FlowSchemaStatus_To_v1beta3_FlowSchemaStatus is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_FlowSchemaStatus_To_v1beta3_FlowSchemaStatus(in *flowcontrol.FlowSchemaStatus, out *v1beta3.FlowSchemaStatus, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_FlowSchemaStatus_To_v1beta3_FlowSchemaStatus(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta3_GroupSubject_To_flowcontrol_GroupSubject(in *v1beta3.GroupSubject, out *flowcontrol.GroupSubject, s conversion.Scope) error {
|
||||
out.Name = in.Name
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta3_GroupSubject_To_flowcontrol_GroupSubject is an autogenerated conversion function.
|
||||
func Convert_v1beta3_GroupSubject_To_flowcontrol_GroupSubject(in *v1beta3.GroupSubject, out *flowcontrol.GroupSubject, s conversion.Scope) error {
|
||||
return autoConvert_v1beta3_GroupSubject_To_flowcontrol_GroupSubject(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_GroupSubject_To_v1beta3_GroupSubject(in *flowcontrol.GroupSubject, out *v1beta3.GroupSubject, s conversion.Scope) error {
|
||||
out.Name = in.Name
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_GroupSubject_To_v1beta3_GroupSubject is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_GroupSubject_To_v1beta3_GroupSubject(in *flowcontrol.GroupSubject, out *v1beta3.GroupSubject, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_GroupSubject_To_v1beta3_GroupSubject(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta3_LimitResponse_To_flowcontrol_LimitResponse(in *v1beta3.LimitResponse, out *flowcontrol.LimitResponse, s conversion.Scope) error {
|
||||
out.Type = flowcontrol.LimitResponseType(in.Type)
|
||||
out.Queuing = (*flowcontrol.QueuingConfiguration)(unsafe.Pointer(in.Queuing))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta3_LimitResponse_To_flowcontrol_LimitResponse is an autogenerated conversion function.
|
||||
func Convert_v1beta3_LimitResponse_To_flowcontrol_LimitResponse(in *v1beta3.LimitResponse, out *flowcontrol.LimitResponse, s conversion.Scope) error {
|
||||
return autoConvert_v1beta3_LimitResponse_To_flowcontrol_LimitResponse(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_LimitResponse_To_v1beta3_LimitResponse(in *flowcontrol.LimitResponse, out *v1beta3.LimitResponse, s conversion.Scope) error {
|
||||
out.Type = v1beta3.LimitResponseType(in.Type)
|
||||
out.Queuing = (*v1beta3.QueuingConfiguration)(unsafe.Pointer(in.Queuing))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_LimitResponse_To_v1beta3_LimitResponse is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_LimitResponse_To_v1beta3_LimitResponse(in *flowcontrol.LimitResponse, out *v1beta3.LimitResponse, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_LimitResponse_To_v1beta3_LimitResponse(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta3_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(in *v1beta3.LimitedPriorityLevelConfiguration, out *flowcontrol.LimitedPriorityLevelConfiguration, s conversion.Scope) error {
|
||||
out.NominalConcurrencyShares = in.NominalConcurrencyShares
|
||||
if err := Convert_v1beta3_LimitResponse_To_flowcontrol_LimitResponse(&in.LimitResponse, &out.LimitResponse, s); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta3_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration is an autogenerated conversion function.
|
||||
func Convert_v1beta3_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(in *v1beta3.LimitedPriorityLevelConfiguration, out *flowcontrol.LimitedPriorityLevelConfiguration, s conversion.Scope) error {
|
||||
return autoConvert_v1beta3_LimitedPriorityLevelConfiguration_To_flowcontrol_LimitedPriorityLevelConfiguration(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta3_LimitedPriorityLevelConfiguration(in *flowcontrol.LimitedPriorityLevelConfiguration, out *v1beta3.LimitedPriorityLevelConfiguration, s conversion.Scope) error {
|
||||
out.NominalConcurrencyShares = in.NominalConcurrencyShares
|
||||
if err := Convert_flowcontrol_LimitResponse_To_v1beta3_LimitResponse(&in.LimitResponse, &out.LimitResponse, s); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta3_LimitedPriorityLevelConfiguration is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta3_LimitedPriorityLevelConfiguration(in *flowcontrol.LimitedPriorityLevelConfiguration, out *v1beta3.LimitedPriorityLevelConfiguration, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_LimitedPriorityLevelConfiguration_To_v1beta3_LimitedPriorityLevelConfiguration(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta3_NonResourcePolicyRule_To_flowcontrol_NonResourcePolicyRule(in *v1beta3.NonResourcePolicyRule, out *flowcontrol.NonResourcePolicyRule, s conversion.Scope) error {
|
||||
out.Verbs = *(*[]string)(unsafe.Pointer(&in.Verbs))
|
||||
out.NonResourceURLs = *(*[]string)(unsafe.Pointer(&in.NonResourceURLs))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta3_NonResourcePolicyRule_To_flowcontrol_NonResourcePolicyRule is an autogenerated conversion function.
|
||||
func Convert_v1beta3_NonResourcePolicyRule_To_flowcontrol_NonResourcePolicyRule(in *v1beta3.NonResourcePolicyRule, out *flowcontrol.NonResourcePolicyRule, s conversion.Scope) error {
|
||||
return autoConvert_v1beta3_NonResourcePolicyRule_To_flowcontrol_NonResourcePolicyRule(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_NonResourcePolicyRule_To_v1beta3_NonResourcePolicyRule(in *flowcontrol.NonResourcePolicyRule, out *v1beta3.NonResourcePolicyRule, s conversion.Scope) error {
|
||||
out.Verbs = *(*[]string)(unsafe.Pointer(&in.Verbs))
|
||||
out.NonResourceURLs = *(*[]string)(unsafe.Pointer(&in.NonResourceURLs))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_NonResourcePolicyRule_To_v1beta3_NonResourcePolicyRule is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_NonResourcePolicyRule_To_v1beta3_NonResourcePolicyRule(in *flowcontrol.NonResourcePolicyRule, out *v1beta3.NonResourcePolicyRule, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_NonResourcePolicyRule_To_v1beta3_NonResourcePolicyRule(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta3_PolicyRulesWithSubjects_To_flowcontrol_PolicyRulesWithSubjects(in *v1beta3.PolicyRulesWithSubjects, out *flowcontrol.PolicyRulesWithSubjects, s conversion.Scope) error {
|
||||
out.Subjects = *(*[]flowcontrol.Subject)(unsafe.Pointer(&in.Subjects))
|
||||
out.ResourceRules = *(*[]flowcontrol.ResourcePolicyRule)(unsafe.Pointer(&in.ResourceRules))
|
||||
out.NonResourceRules = *(*[]flowcontrol.NonResourcePolicyRule)(unsafe.Pointer(&in.NonResourceRules))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta3_PolicyRulesWithSubjects_To_flowcontrol_PolicyRulesWithSubjects is an autogenerated conversion function.
|
||||
func Convert_v1beta3_PolicyRulesWithSubjects_To_flowcontrol_PolicyRulesWithSubjects(in *v1beta3.PolicyRulesWithSubjects, out *flowcontrol.PolicyRulesWithSubjects, s conversion.Scope) error {
|
||||
return autoConvert_v1beta3_PolicyRulesWithSubjects_To_flowcontrol_PolicyRulesWithSubjects(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_PolicyRulesWithSubjects_To_v1beta3_PolicyRulesWithSubjects(in *flowcontrol.PolicyRulesWithSubjects, out *v1beta3.PolicyRulesWithSubjects, s conversion.Scope) error {
|
||||
out.Subjects = *(*[]v1beta3.Subject)(unsafe.Pointer(&in.Subjects))
|
||||
out.ResourceRules = *(*[]v1beta3.ResourcePolicyRule)(unsafe.Pointer(&in.ResourceRules))
|
||||
out.NonResourceRules = *(*[]v1beta3.NonResourcePolicyRule)(unsafe.Pointer(&in.NonResourceRules))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_PolicyRulesWithSubjects_To_v1beta3_PolicyRulesWithSubjects is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_PolicyRulesWithSubjects_To_v1beta3_PolicyRulesWithSubjects(in *flowcontrol.PolicyRulesWithSubjects, out *v1beta3.PolicyRulesWithSubjects, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_PolicyRulesWithSubjects_To_v1beta3_PolicyRulesWithSubjects(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta3_PriorityLevelConfiguration_To_flowcontrol_PriorityLevelConfiguration(in *v1beta3.PriorityLevelConfiguration, out *flowcontrol.PriorityLevelConfiguration, s conversion.Scope) error {
|
||||
out.ObjectMeta = in.ObjectMeta
|
||||
if err := Convert_v1beta3_PriorityLevelConfigurationSpec_To_flowcontrol_PriorityLevelConfigurationSpec(&in.Spec, &out.Spec, s); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := Convert_v1beta3_PriorityLevelConfigurationStatus_To_flowcontrol_PriorityLevelConfigurationStatus(&in.Status, &out.Status, s); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta3_PriorityLevelConfiguration_To_flowcontrol_PriorityLevelConfiguration is an autogenerated conversion function.
|
||||
func Convert_v1beta3_PriorityLevelConfiguration_To_flowcontrol_PriorityLevelConfiguration(in *v1beta3.PriorityLevelConfiguration, out *flowcontrol.PriorityLevelConfiguration, s conversion.Scope) error {
|
||||
return autoConvert_v1beta3_PriorityLevelConfiguration_To_flowcontrol_PriorityLevelConfiguration(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_PriorityLevelConfiguration_To_v1beta3_PriorityLevelConfiguration(in *flowcontrol.PriorityLevelConfiguration, out *v1beta3.PriorityLevelConfiguration, s conversion.Scope) error {
|
||||
out.ObjectMeta = in.ObjectMeta
|
||||
if err := Convert_flowcontrol_PriorityLevelConfigurationSpec_To_v1beta3_PriorityLevelConfigurationSpec(&in.Spec, &out.Spec, s); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := Convert_flowcontrol_PriorityLevelConfigurationStatus_To_v1beta3_PriorityLevelConfigurationStatus(&in.Status, &out.Status, s); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_PriorityLevelConfiguration_To_v1beta3_PriorityLevelConfiguration is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_PriorityLevelConfiguration_To_v1beta3_PriorityLevelConfiguration(in *flowcontrol.PriorityLevelConfiguration, out *v1beta3.PriorityLevelConfiguration, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_PriorityLevelConfiguration_To_v1beta3_PriorityLevelConfiguration(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta3_PriorityLevelConfigurationCondition_To_flowcontrol_PriorityLevelConfigurationCondition(in *v1beta3.PriorityLevelConfigurationCondition, out *flowcontrol.PriorityLevelConfigurationCondition, s conversion.Scope) error {
|
||||
out.Type = flowcontrol.PriorityLevelConfigurationConditionType(in.Type)
|
||||
out.Status = flowcontrol.ConditionStatus(in.Status)
|
||||
out.LastTransitionTime = in.LastTransitionTime
|
||||
out.Reason = in.Reason
|
||||
out.Message = in.Message
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta3_PriorityLevelConfigurationCondition_To_flowcontrol_PriorityLevelConfigurationCondition is an autogenerated conversion function.
|
||||
func Convert_v1beta3_PriorityLevelConfigurationCondition_To_flowcontrol_PriorityLevelConfigurationCondition(in *v1beta3.PriorityLevelConfigurationCondition, out *flowcontrol.PriorityLevelConfigurationCondition, s conversion.Scope) error {
|
||||
return autoConvert_v1beta3_PriorityLevelConfigurationCondition_To_flowcontrol_PriorityLevelConfigurationCondition(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_PriorityLevelConfigurationCondition_To_v1beta3_PriorityLevelConfigurationCondition(in *flowcontrol.PriorityLevelConfigurationCondition, out *v1beta3.PriorityLevelConfigurationCondition, s conversion.Scope) error {
|
||||
out.Type = v1beta3.PriorityLevelConfigurationConditionType(in.Type)
|
||||
out.Status = v1beta3.ConditionStatus(in.Status)
|
||||
out.LastTransitionTime = in.LastTransitionTime
|
||||
out.Reason = in.Reason
|
||||
out.Message = in.Message
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_PriorityLevelConfigurationCondition_To_v1beta3_PriorityLevelConfigurationCondition is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_PriorityLevelConfigurationCondition_To_v1beta3_PriorityLevelConfigurationCondition(in *flowcontrol.PriorityLevelConfigurationCondition, out *v1beta3.PriorityLevelConfigurationCondition, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_PriorityLevelConfigurationCondition_To_v1beta3_PriorityLevelConfigurationCondition(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta3_PriorityLevelConfigurationList_To_flowcontrol_PriorityLevelConfigurationList(in *v1beta3.PriorityLevelConfigurationList, out *flowcontrol.PriorityLevelConfigurationList, s conversion.Scope) error {
|
||||
out.ListMeta = in.ListMeta
|
||||
out.Items = *(*[]flowcontrol.PriorityLevelConfiguration)(unsafe.Pointer(&in.Items))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta3_PriorityLevelConfigurationList_To_flowcontrol_PriorityLevelConfigurationList is an autogenerated conversion function.
|
||||
func Convert_v1beta3_PriorityLevelConfigurationList_To_flowcontrol_PriorityLevelConfigurationList(in *v1beta3.PriorityLevelConfigurationList, out *flowcontrol.PriorityLevelConfigurationList, s conversion.Scope) error {
|
||||
return autoConvert_v1beta3_PriorityLevelConfigurationList_To_flowcontrol_PriorityLevelConfigurationList(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_PriorityLevelConfigurationList_To_v1beta3_PriorityLevelConfigurationList(in *flowcontrol.PriorityLevelConfigurationList, out *v1beta3.PriorityLevelConfigurationList, s conversion.Scope) error {
|
||||
out.ListMeta = in.ListMeta
|
||||
out.Items = *(*[]v1beta3.PriorityLevelConfiguration)(unsafe.Pointer(&in.Items))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_PriorityLevelConfigurationList_To_v1beta3_PriorityLevelConfigurationList is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_PriorityLevelConfigurationList_To_v1beta3_PriorityLevelConfigurationList(in *flowcontrol.PriorityLevelConfigurationList, out *v1beta3.PriorityLevelConfigurationList, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_PriorityLevelConfigurationList_To_v1beta3_PriorityLevelConfigurationList(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta3_PriorityLevelConfigurationReference_To_flowcontrol_PriorityLevelConfigurationReference(in *v1beta3.PriorityLevelConfigurationReference, out *flowcontrol.PriorityLevelConfigurationReference, s conversion.Scope) error {
|
||||
out.Name = in.Name
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta3_PriorityLevelConfigurationReference_To_flowcontrol_PriorityLevelConfigurationReference is an autogenerated conversion function.
|
||||
func Convert_v1beta3_PriorityLevelConfigurationReference_To_flowcontrol_PriorityLevelConfigurationReference(in *v1beta3.PriorityLevelConfigurationReference, out *flowcontrol.PriorityLevelConfigurationReference, s conversion.Scope) error {
|
||||
return autoConvert_v1beta3_PriorityLevelConfigurationReference_To_flowcontrol_PriorityLevelConfigurationReference(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_PriorityLevelConfigurationReference_To_v1beta3_PriorityLevelConfigurationReference(in *flowcontrol.PriorityLevelConfigurationReference, out *v1beta3.PriorityLevelConfigurationReference, s conversion.Scope) error {
|
||||
out.Name = in.Name
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_PriorityLevelConfigurationReference_To_v1beta3_PriorityLevelConfigurationReference is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_PriorityLevelConfigurationReference_To_v1beta3_PriorityLevelConfigurationReference(in *flowcontrol.PriorityLevelConfigurationReference, out *v1beta3.PriorityLevelConfigurationReference, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_PriorityLevelConfigurationReference_To_v1beta3_PriorityLevelConfigurationReference(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta3_PriorityLevelConfigurationSpec_To_flowcontrol_PriorityLevelConfigurationSpec(in *v1beta3.PriorityLevelConfigurationSpec, out *flowcontrol.PriorityLevelConfigurationSpec, s conversion.Scope) error {
|
||||
out.Type = flowcontrol.PriorityLevelEnablement(in.Type)
|
||||
out.Limited = (*flowcontrol.LimitedPriorityLevelConfiguration)(unsafe.Pointer(in.Limited))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta3_PriorityLevelConfigurationSpec_To_flowcontrol_PriorityLevelConfigurationSpec is an autogenerated conversion function.
|
||||
func Convert_v1beta3_PriorityLevelConfigurationSpec_To_flowcontrol_PriorityLevelConfigurationSpec(in *v1beta3.PriorityLevelConfigurationSpec, out *flowcontrol.PriorityLevelConfigurationSpec, s conversion.Scope) error {
|
||||
return autoConvert_v1beta3_PriorityLevelConfigurationSpec_To_flowcontrol_PriorityLevelConfigurationSpec(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_PriorityLevelConfigurationSpec_To_v1beta3_PriorityLevelConfigurationSpec(in *flowcontrol.PriorityLevelConfigurationSpec, out *v1beta3.PriorityLevelConfigurationSpec, s conversion.Scope) error {
|
||||
out.Type = v1beta3.PriorityLevelEnablement(in.Type)
|
||||
out.Limited = (*v1beta3.LimitedPriorityLevelConfiguration)(unsafe.Pointer(in.Limited))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_PriorityLevelConfigurationSpec_To_v1beta3_PriorityLevelConfigurationSpec is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_PriorityLevelConfigurationSpec_To_v1beta3_PriorityLevelConfigurationSpec(in *flowcontrol.PriorityLevelConfigurationSpec, out *v1beta3.PriorityLevelConfigurationSpec, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_PriorityLevelConfigurationSpec_To_v1beta3_PriorityLevelConfigurationSpec(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta3_PriorityLevelConfigurationStatus_To_flowcontrol_PriorityLevelConfigurationStatus(in *v1beta3.PriorityLevelConfigurationStatus, out *flowcontrol.PriorityLevelConfigurationStatus, s conversion.Scope) error {
|
||||
out.Conditions = *(*[]flowcontrol.PriorityLevelConfigurationCondition)(unsafe.Pointer(&in.Conditions))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta3_PriorityLevelConfigurationStatus_To_flowcontrol_PriorityLevelConfigurationStatus is an autogenerated conversion function.
|
||||
func Convert_v1beta3_PriorityLevelConfigurationStatus_To_flowcontrol_PriorityLevelConfigurationStatus(in *v1beta3.PriorityLevelConfigurationStatus, out *flowcontrol.PriorityLevelConfigurationStatus, s conversion.Scope) error {
|
||||
return autoConvert_v1beta3_PriorityLevelConfigurationStatus_To_flowcontrol_PriorityLevelConfigurationStatus(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_PriorityLevelConfigurationStatus_To_v1beta3_PriorityLevelConfigurationStatus(in *flowcontrol.PriorityLevelConfigurationStatus, out *v1beta3.PriorityLevelConfigurationStatus, s conversion.Scope) error {
|
||||
out.Conditions = *(*[]v1beta3.PriorityLevelConfigurationCondition)(unsafe.Pointer(&in.Conditions))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_PriorityLevelConfigurationStatus_To_v1beta3_PriorityLevelConfigurationStatus is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_PriorityLevelConfigurationStatus_To_v1beta3_PriorityLevelConfigurationStatus(in *flowcontrol.PriorityLevelConfigurationStatus, out *v1beta3.PriorityLevelConfigurationStatus, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_PriorityLevelConfigurationStatus_To_v1beta3_PriorityLevelConfigurationStatus(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta3_QueuingConfiguration_To_flowcontrol_QueuingConfiguration(in *v1beta3.QueuingConfiguration, out *flowcontrol.QueuingConfiguration, s conversion.Scope) error {
|
||||
out.Queues = in.Queues
|
||||
out.HandSize = in.HandSize
|
||||
out.QueueLengthLimit = in.QueueLengthLimit
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta3_QueuingConfiguration_To_flowcontrol_QueuingConfiguration is an autogenerated conversion function.
|
||||
func Convert_v1beta3_QueuingConfiguration_To_flowcontrol_QueuingConfiguration(in *v1beta3.QueuingConfiguration, out *flowcontrol.QueuingConfiguration, s conversion.Scope) error {
|
||||
return autoConvert_v1beta3_QueuingConfiguration_To_flowcontrol_QueuingConfiguration(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_QueuingConfiguration_To_v1beta3_QueuingConfiguration(in *flowcontrol.QueuingConfiguration, out *v1beta3.QueuingConfiguration, s conversion.Scope) error {
|
||||
out.Queues = in.Queues
|
||||
out.HandSize = in.HandSize
|
||||
out.QueueLengthLimit = in.QueueLengthLimit
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_QueuingConfiguration_To_v1beta3_QueuingConfiguration is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_QueuingConfiguration_To_v1beta3_QueuingConfiguration(in *flowcontrol.QueuingConfiguration, out *v1beta3.QueuingConfiguration, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_QueuingConfiguration_To_v1beta3_QueuingConfiguration(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta3_ResourcePolicyRule_To_flowcontrol_ResourcePolicyRule(in *v1beta3.ResourcePolicyRule, out *flowcontrol.ResourcePolicyRule, s conversion.Scope) error {
|
||||
out.Verbs = *(*[]string)(unsafe.Pointer(&in.Verbs))
|
||||
out.APIGroups = *(*[]string)(unsafe.Pointer(&in.APIGroups))
|
||||
out.Resources = *(*[]string)(unsafe.Pointer(&in.Resources))
|
||||
out.ClusterScope = in.ClusterScope
|
||||
out.Namespaces = *(*[]string)(unsafe.Pointer(&in.Namespaces))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta3_ResourcePolicyRule_To_flowcontrol_ResourcePolicyRule is an autogenerated conversion function.
|
||||
func Convert_v1beta3_ResourcePolicyRule_To_flowcontrol_ResourcePolicyRule(in *v1beta3.ResourcePolicyRule, out *flowcontrol.ResourcePolicyRule, s conversion.Scope) error {
|
||||
return autoConvert_v1beta3_ResourcePolicyRule_To_flowcontrol_ResourcePolicyRule(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_ResourcePolicyRule_To_v1beta3_ResourcePolicyRule(in *flowcontrol.ResourcePolicyRule, out *v1beta3.ResourcePolicyRule, s conversion.Scope) error {
|
||||
out.Verbs = *(*[]string)(unsafe.Pointer(&in.Verbs))
|
||||
out.APIGroups = *(*[]string)(unsafe.Pointer(&in.APIGroups))
|
||||
out.Resources = *(*[]string)(unsafe.Pointer(&in.Resources))
|
||||
out.ClusterScope = in.ClusterScope
|
||||
out.Namespaces = *(*[]string)(unsafe.Pointer(&in.Namespaces))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_ResourcePolicyRule_To_v1beta3_ResourcePolicyRule is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_ResourcePolicyRule_To_v1beta3_ResourcePolicyRule(in *flowcontrol.ResourcePolicyRule, out *v1beta3.ResourcePolicyRule, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_ResourcePolicyRule_To_v1beta3_ResourcePolicyRule(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta3_ServiceAccountSubject_To_flowcontrol_ServiceAccountSubject(in *v1beta3.ServiceAccountSubject, out *flowcontrol.ServiceAccountSubject, s conversion.Scope) error {
|
||||
out.Namespace = in.Namespace
|
||||
out.Name = in.Name
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta3_ServiceAccountSubject_To_flowcontrol_ServiceAccountSubject is an autogenerated conversion function.
|
||||
func Convert_v1beta3_ServiceAccountSubject_To_flowcontrol_ServiceAccountSubject(in *v1beta3.ServiceAccountSubject, out *flowcontrol.ServiceAccountSubject, s conversion.Scope) error {
|
||||
return autoConvert_v1beta3_ServiceAccountSubject_To_flowcontrol_ServiceAccountSubject(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_ServiceAccountSubject_To_v1beta3_ServiceAccountSubject(in *flowcontrol.ServiceAccountSubject, out *v1beta3.ServiceAccountSubject, s conversion.Scope) error {
|
||||
out.Namespace = in.Namespace
|
||||
out.Name = in.Name
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_ServiceAccountSubject_To_v1beta3_ServiceAccountSubject is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_ServiceAccountSubject_To_v1beta3_ServiceAccountSubject(in *flowcontrol.ServiceAccountSubject, out *v1beta3.ServiceAccountSubject, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_ServiceAccountSubject_To_v1beta3_ServiceAccountSubject(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta3_Subject_To_flowcontrol_Subject(in *v1beta3.Subject, out *flowcontrol.Subject, s conversion.Scope) error {
|
||||
out.Kind = flowcontrol.SubjectKind(in.Kind)
|
||||
out.User = (*flowcontrol.UserSubject)(unsafe.Pointer(in.User))
|
||||
out.Group = (*flowcontrol.GroupSubject)(unsafe.Pointer(in.Group))
|
||||
out.ServiceAccount = (*flowcontrol.ServiceAccountSubject)(unsafe.Pointer(in.ServiceAccount))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta3_Subject_To_flowcontrol_Subject is an autogenerated conversion function.
|
||||
func Convert_v1beta3_Subject_To_flowcontrol_Subject(in *v1beta3.Subject, out *flowcontrol.Subject, s conversion.Scope) error {
|
||||
return autoConvert_v1beta3_Subject_To_flowcontrol_Subject(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_Subject_To_v1beta3_Subject(in *flowcontrol.Subject, out *v1beta3.Subject, s conversion.Scope) error {
|
||||
out.Kind = v1beta3.SubjectKind(in.Kind)
|
||||
out.User = (*v1beta3.UserSubject)(unsafe.Pointer(in.User))
|
||||
out.Group = (*v1beta3.GroupSubject)(unsafe.Pointer(in.Group))
|
||||
out.ServiceAccount = (*v1beta3.ServiceAccountSubject)(unsafe.Pointer(in.ServiceAccount))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_Subject_To_v1beta3_Subject is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_Subject_To_v1beta3_Subject(in *flowcontrol.Subject, out *v1beta3.Subject, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_Subject_To_v1beta3_Subject(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta3_UserSubject_To_flowcontrol_UserSubject(in *v1beta3.UserSubject, out *flowcontrol.UserSubject, s conversion.Scope) error {
|
||||
out.Name = in.Name
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_v1beta3_UserSubject_To_flowcontrol_UserSubject is an autogenerated conversion function.
|
||||
func Convert_v1beta3_UserSubject_To_flowcontrol_UserSubject(in *v1beta3.UserSubject, out *flowcontrol.UserSubject, s conversion.Scope) error {
|
||||
return autoConvert_v1beta3_UserSubject_To_flowcontrol_UserSubject(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_flowcontrol_UserSubject_To_v1beta3_UserSubject(in *flowcontrol.UserSubject, out *v1beta3.UserSubject, s conversion.Scope) error {
|
||||
out.Name = in.Name
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_flowcontrol_UserSubject_To_v1beta3_UserSubject is an autogenerated conversion function.
|
||||
func Convert_flowcontrol_UserSubject_To_v1beta3_UserSubject(in *flowcontrol.UserSubject, out *v1beta3.UserSubject, s conversion.Scope) error {
|
||||
return autoConvert_flowcontrol_UserSubject_To_v1beta3_UserSubject(in, out, s)
|
||||
}
|
69
pkg/apis/flowcontrol/v1beta3/zz_generated.defaults.go
generated
Normal file
69
pkg/apis/flowcontrol/v1beta3/zz_generated.defaults.go
generated
Normal file
@@ -0,0 +1,69 @@
|
||||
//go:build !ignore_autogenerated
|
||||
// +build !ignore_autogenerated
|
||||
|
||||
/*
|
||||
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 defaulter-gen. DO NOT EDIT.
|
||||
|
||||
package v1beta3
|
||||
|
||||
import (
|
||||
v1beta3 "k8s.io/api/flowcontrol/v1beta3"
|
||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||
)
|
||||
|
||||
// RegisterDefaults adds defaulters functions to the given scheme.
|
||||
// Public to allow building arbitrary schemes.
|
||||
// All generated defaulters are covering - they call all nested defaulters.
|
||||
func RegisterDefaults(scheme *runtime.Scheme) error {
|
||||
scheme.AddTypeDefaultingFunc(&v1beta3.FlowSchema{}, func(obj interface{}) { SetObjectDefaults_FlowSchema(obj.(*v1beta3.FlowSchema)) })
|
||||
scheme.AddTypeDefaultingFunc(&v1beta3.FlowSchemaList{}, func(obj interface{}) { SetObjectDefaults_FlowSchemaList(obj.(*v1beta3.FlowSchemaList)) })
|
||||
scheme.AddTypeDefaultingFunc(&v1beta3.PriorityLevelConfiguration{}, func(obj interface{}) {
|
||||
SetObjectDefaults_PriorityLevelConfiguration(obj.(*v1beta3.PriorityLevelConfiguration))
|
||||
})
|
||||
scheme.AddTypeDefaultingFunc(&v1beta3.PriorityLevelConfigurationList{}, func(obj interface{}) {
|
||||
SetObjectDefaults_PriorityLevelConfigurationList(obj.(*v1beta3.PriorityLevelConfigurationList))
|
||||
})
|
||||
return nil
|
||||
}
|
||||
|
||||
func SetObjectDefaults_FlowSchema(in *v1beta3.FlowSchema) {
|
||||
SetDefaults_FlowSchemaSpec(&in.Spec)
|
||||
}
|
||||
|
||||
func SetObjectDefaults_FlowSchemaList(in *v1beta3.FlowSchemaList) {
|
||||
for i := range in.Items {
|
||||
a := &in.Items[i]
|
||||
SetObjectDefaults_FlowSchema(a)
|
||||
}
|
||||
}
|
||||
|
||||
func SetObjectDefaults_PriorityLevelConfiguration(in *v1beta3.PriorityLevelConfiguration) {
|
||||
if in.Spec.Limited != nil {
|
||||
SetDefaults_LimitedPriorityLevelConfiguration(in.Spec.Limited)
|
||||
if in.Spec.Limited.LimitResponse.Queuing != nil {
|
||||
SetDefaults_QueuingConfiguration(in.Spec.Limited.LimitResponse.Queuing)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func SetObjectDefaults_PriorityLevelConfigurationList(in *v1beta3.PriorityLevelConfigurationList) {
|
||||
for i := range in.Items {
|
||||
a := &in.Items[i]
|
||||
SetObjectDefaults_PriorityLevelConfiguration(a)
|
||||
}
|
||||
}
|
@@ -20,8 +20,12 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
flowcontrolv1alpha1 "k8s.io/api/flowcontrol/v1alpha1"
|
||||
flowcontrolv1beta1 "k8s.io/api/flowcontrol/v1beta1"
|
||||
flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
|
||||
apiequality "k8s.io/apimachinery/pkg/api/equality"
|
||||
apimachineryvalidation "k8s.io/apimachinery/pkg/api/validation"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apimachinery/pkg/util/sets"
|
||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||
"k8s.io/apiserver/pkg/util/shufflesharding"
|
||||
@@ -337,10 +341,10 @@ func ValidateFlowSchemaCondition(condition *flowcontrol.FlowSchemaCondition, fld
|
||||
}
|
||||
|
||||
// ValidatePriorityLevelConfiguration validates priority-level-configuration.
|
||||
func ValidatePriorityLevelConfiguration(pl *flowcontrol.PriorityLevelConfiguration) field.ErrorList {
|
||||
func ValidatePriorityLevelConfiguration(pl *flowcontrol.PriorityLevelConfiguration, requestGV schema.GroupVersion) field.ErrorList {
|
||||
allErrs := apivalidation.ValidateObjectMeta(&pl.ObjectMeta, false, ValidatePriorityLevelConfigurationName, field.NewPath("metadata"))
|
||||
specPath := field.NewPath("spec")
|
||||
allErrs = append(allErrs, ValidatePriorityLevelConfigurationSpec(&pl.Spec, pl.Name, specPath)...)
|
||||
allErrs = append(allErrs, ValidatePriorityLevelConfigurationSpec(&pl.Spec, requestGV, pl.Name, specPath)...)
|
||||
if mand, ok := internalbootstrap.MandatoryPriorityLevelConfigurations[pl.Name]; ok {
|
||||
// Check for almost exact equality. This is a pretty
|
||||
// strict test, and it is OK in this context because both
|
||||
@@ -354,13 +358,8 @@ func ValidatePriorityLevelConfiguration(pl *flowcontrol.PriorityLevelConfigurati
|
||||
return allErrs
|
||||
}
|
||||
|
||||
// ValidatePriorityLevelConfigurationUpdate validates the update of priority-level-configuration.
|
||||
func ValidatePriorityLevelConfigurationUpdate(old, pl *flowcontrol.PriorityLevelConfiguration) field.ErrorList {
|
||||
return ValidatePriorityLevelConfiguration(pl)
|
||||
}
|
||||
|
||||
// ValidatePriorityLevelConfigurationSpec validates priority-level-configuration's spec.
|
||||
func ValidatePriorityLevelConfigurationSpec(spec *flowcontrol.PriorityLevelConfigurationSpec, name string, fldPath *field.Path) field.ErrorList {
|
||||
func ValidatePriorityLevelConfigurationSpec(spec *flowcontrol.PriorityLevelConfigurationSpec, requestGV schema.GroupVersion, name string, fldPath *field.Path) field.ErrorList {
|
||||
var allErrs field.ErrorList
|
||||
if (name == flowcontrol.PriorityLevelConfigurationNameExempt) != (spec.Type == flowcontrol.PriorityLevelEnablementExempt) {
|
||||
allErrs = append(allErrs, field.Invalid(fldPath.Child("type"), spec.Type, "type must be 'Exempt' if and only if name is 'exempt'"))
|
||||
@@ -374,7 +373,7 @@ func ValidatePriorityLevelConfigurationSpec(spec *flowcontrol.PriorityLevelConfi
|
||||
if spec.Limited == nil {
|
||||
allErrs = append(allErrs, field.Required(fldPath.Child("limited"), "must not be empty when type is Limited"))
|
||||
} else {
|
||||
allErrs = append(allErrs, ValidateLimitedPriorityLevelConfiguration(spec.Limited, fldPath.Child("limited"))...)
|
||||
allErrs = append(allErrs, ValidateLimitedPriorityLevelConfiguration(spec.Limited, requestGV, fldPath.Child("limited"))...)
|
||||
}
|
||||
default:
|
||||
allErrs = append(allErrs, field.NotSupported(fldPath.Child("type"), spec.Type, supportedPriorityLevelEnablement.List()))
|
||||
@@ -383,15 +382,26 @@ func ValidatePriorityLevelConfigurationSpec(spec *flowcontrol.PriorityLevelConfi
|
||||
}
|
||||
|
||||
// ValidateLimitedPriorityLevelConfiguration validates the configuration for an execution-limited priority level
|
||||
func ValidateLimitedPriorityLevelConfiguration(lplc *flowcontrol.LimitedPriorityLevelConfiguration, fldPath *field.Path) field.ErrorList {
|
||||
func ValidateLimitedPriorityLevelConfiguration(lplc *flowcontrol.LimitedPriorityLevelConfiguration, requestGV schema.GroupVersion, fldPath *field.Path) field.ErrorList {
|
||||
var allErrs field.ErrorList
|
||||
if lplc.AssuredConcurrencyShares <= 0 {
|
||||
allErrs = append(allErrs, field.Invalid(fldPath.Child("assuredConcurrencyShares"), lplc.AssuredConcurrencyShares, "must be positive"))
|
||||
if lplc.NominalConcurrencyShares <= 0 {
|
||||
allErrs = append(allErrs, field.Invalid(fldPath.Child(getVersionedFieldNameForConcurrencyShares(requestGV)), lplc.NominalConcurrencyShares, "must be positive"))
|
||||
}
|
||||
allErrs = append(allErrs, ValidateLimitResponse(lplc.LimitResponse, fldPath.Child("limitResponse"))...)
|
||||
return allErrs
|
||||
}
|
||||
|
||||
func getVersionedFieldNameForConcurrencyShares(requestGV schema.GroupVersion) string {
|
||||
switch {
|
||||
case requestGV == flowcontrolv1alpha1.SchemeGroupVersion ||
|
||||
requestGV == flowcontrolv1beta1.SchemeGroupVersion ||
|
||||
requestGV == flowcontrolv1beta2.SchemeGroupVersion:
|
||||
return "assuredConcurrencyShares"
|
||||
default:
|
||||
return "nominalConcurrencyShares"
|
||||
}
|
||||
}
|
||||
|
||||
// ValidateLimitResponse validates a LimitResponse
|
||||
func ValidateLimitResponse(lr flowcontrol.LimitResponse, fldPath *field.Path) field.ErrorList {
|
||||
var allErrs field.ErrorList
|
||||
|
@@ -22,7 +22,12 @@ import (
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/stretchr/testify/assert"
|
||||
flowcontrolv1alpha1 "k8s.io/api/flowcontrol/v1alpha1"
|
||||
flowcontrolv1beta1 "k8s.io/api/flowcontrol/v1beta1"
|
||||
flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
|
||||
flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||
"k8s.io/apiserver/pkg/authentication/user"
|
||||
"k8s.io/kubernetes/pkg/apis/flowcontrol"
|
||||
@@ -910,7 +915,7 @@ func TestPriorityLevelConfigurationValidation(t *testing.T) {
|
||||
badSpec := flowcontrol.PriorityLevelConfigurationSpec{
|
||||
Type: flowcontrol.PriorityLevelEnablementLimited,
|
||||
Limited: &flowcontrol.LimitedPriorityLevelConfiguration{
|
||||
AssuredConcurrencyShares: 42,
|
||||
NominalConcurrencyShares: 42,
|
||||
LimitResponse: flowcontrol.LimitResponse{
|
||||
Type: flowcontrol.LimitResponseTypeReject},
|
||||
},
|
||||
@@ -966,7 +971,7 @@ func TestPriorityLevelConfigurationValidation(t *testing.T) {
|
||||
Spec: flowcontrol.PriorityLevelConfigurationSpec{
|
||||
Type: flowcontrol.PriorityLevelEnablementLimited,
|
||||
Limited: &flowcontrol.LimitedPriorityLevelConfiguration{
|
||||
AssuredConcurrencyShares: 42,
|
||||
NominalConcurrencyShares: 42,
|
||||
LimitResponse: flowcontrol.LimitResponse{
|
||||
Type: flowcontrol.LimitResponseTypeReject},
|
||||
},
|
||||
@@ -983,7 +988,7 @@ func TestPriorityLevelConfigurationValidation(t *testing.T) {
|
||||
Spec: flowcontrol.PriorityLevelConfigurationSpec{
|
||||
Type: flowcontrol.PriorityLevelEnablementLimited,
|
||||
Limited: &flowcontrol.LimitedPriorityLevelConfiguration{
|
||||
AssuredConcurrencyShares: 100,
|
||||
NominalConcurrencyShares: 100,
|
||||
LimitResponse: flowcontrol.LimitResponse{
|
||||
Type: flowcontrol.LimitResponseTypeReject,
|
||||
Queuing: &flowcontrol.QueuingConfiguration{
|
||||
@@ -1013,7 +1018,7 @@ func TestPriorityLevelConfigurationValidation(t *testing.T) {
|
||||
Spec: flowcontrol.PriorityLevelConfigurationSpec{
|
||||
Type: flowcontrol.PriorityLevelEnablementLimited,
|
||||
Limited: &flowcontrol.LimitedPriorityLevelConfiguration{
|
||||
AssuredConcurrencyShares: 5,
|
||||
NominalConcurrencyShares: 5,
|
||||
LimitResponse: flowcontrol.LimitResponse{
|
||||
Type: flowcontrol.LimitResponseTypeReject,
|
||||
}}},
|
||||
@@ -1029,7 +1034,7 @@ func TestPriorityLevelConfigurationValidation(t *testing.T) {
|
||||
Spec: flowcontrol.PriorityLevelConfigurationSpec{
|
||||
Type: flowcontrol.PriorityLevelEnablementLimited,
|
||||
Limited: &flowcontrol.LimitedPriorityLevelConfiguration{
|
||||
AssuredConcurrencyShares: 100,
|
||||
NominalConcurrencyShares: 100,
|
||||
LimitResponse: flowcontrol.LimitResponse{
|
||||
Type: flowcontrol.LimitResponseTypeQueue,
|
||||
}}},
|
||||
@@ -1045,7 +1050,7 @@ func TestPriorityLevelConfigurationValidation(t *testing.T) {
|
||||
Spec: flowcontrol.PriorityLevelConfigurationSpec{
|
||||
Type: flowcontrol.PriorityLevelEnablementLimited,
|
||||
Limited: &flowcontrol.LimitedPriorityLevelConfiguration{
|
||||
AssuredConcurrencyShares: 100,
|
||||
NominalConcurrencyShares: 100,
|
||||
LimitResponse: flowcontrol.LimitResponse{
|
||||
Type: flowcontrol.LimitResponseTypeQueue,
|
||||
Queuing: &flowcontrol.QueuingConfiguration{
|
||||
@@ -1065,7 +1070,7 @@ func TestPriorityLevelConfigurationValidation(t *testing.T) {
|
||||
Spec: flowcontrol.PriorityLevelConfigurationSpec{
|
||||
Type: flowcontrol.PriorityLevelEnablementLimited,
|
||||
Limited: &flowcontrol.LimitedPriorityLevelConfiguration{
|
||||
AssuredConcurrencyShares: 100,
|
||||
NominalConcurrencyShares: 100,
|
||||
LimitResponse: flowcontrol.LimitResponse{
|
||||
Type: flowcontrol.LimitResponseTypeQueue,
|
||||
Queuing: &flowcontrol.QueuingConfiguration{
|
||||
@@ -1087,7 +1092,7 @@ func TestPriorityLevelConfigurationValidation(t *testing.T) {
|
||||
Spec: flowcontrol.PriorityLevelConfigurationSpec{
|
||||
Type: flowcontrol.PriorityLevelEnablementLimited,
|
||||
Limited: &flowcontrol.LimitedPriorityLevelConfiguration{
|
||||
AssuredConcurrencyShares: 100,
|
||||
NominalConcurrencyShares: 100,
|
||||
LimitResponse: flowcontrol.LimitResponse{
|
||||
Type: flowcontrol.LimitResponseTypeQueue,
|
||||
Queuing: &flowcontrol.QueuingConfiguration{
|
||||
@@ -1109,7 +1114,7 @@ func TestPriorityLevelConfigurationValidation(t *testing.T) {
|
||||
Spec: flowcontrol.PriorityLevelConfigurationSpec{
|
||||
Type: flowcontrol.PriorityLevelEnablementLimited,
|
||||
Limited: &flowcontrol.LimitedPriorityLevelConfiguration{
|
||||
AssuredConcurrencyShares: 100,
|
||||
NominalConcurrencyShares: 100,
|
||||
LimitResponse: flowcontrol.LimitResponse{
|
||||
Type: flowcontrol.LimitResponseTypeQueue,
|
||||
Queuing: &flowcontrol.QueuingConfiguration{
|
||||
@@ -1132,7 +1137,7 @@ func TestPriorityLevelConfigurationValidation(t *testing.T) {
|
||||
Spec: flowcontrol.PriorityLevelConfigurationSpec{
|
||||
Type: flowcontrol.PriorityLevelEnablementLimited,
|
||||
Limited: &flowcontrol.LimitedPriorityLevelConfiguration{
|
||||
AssuredConcurrencyShares: 100,
|
||||
NominalConcurrencyShares: 100,
|
||||
LimitResponse: flowcontrol.LimitResponse{
|
||||
Type: flowcontrol.LimitResponseTypeQueue,
|
||||
Queuing: &flowcontrol.QueuingConfiguration{
|
||||
@@ -1152,7 +1157,7 @@ func TestPriorityLevelConfigurationValidation(t *testing.T) {
|
||||
Spec: flowcontrol.PriorityLevelConfigurationSpec{
|
||||
Type: flowcontrol.PriorityLevelEnablementLimited,
|
||||
Limited: &flowcontrol.LimitedPriorityLevelConfiguration{
|
||||
AssuredConcurrencyShares: 100,
|
||||
NominalConcurrencyShares: 100,
|
||||
LimitResponse: flowcontrol.LimitResponse{
|
||||
Type: flowcontrol.LimitResponseTypeQueue,
|
||||
Queuing: &flowcontrol.QueuingConfiguration{
|
||||
@@ -1168,7 +1173,7 @@ func TestPriorityLevelConfigurationValidation(t *testing.T) {
|
||||
}
|
||||
for _, testCase := range testCases {
|
||||
t.Run(testCase.name, func(t *testing.T) {
|
||||
errs := ValidatePriorityLevelConfiguration(testCase.priorityLevelConfiguration)
|
||||
errs := ValidatePriorityLevelConfiguration(testCase.priorityLevelConfiguration, flowcontrolv1beta3.SchemeGroupVersion)
|
||||
if !assert.ElementsMatch(t, testCase.expectedErrors, errs) {
|
||||
t.Logf("mismatch: %v", cmp.Diff(testCase.expectedErrors, errs))
|
||||
}
|
||||
@@ -1358,3 +1363,74 @@ func TestValidateNonResourceURLPath(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestValidateLimitedPriorityLevelConfiguration(t *testing.T) {
|
||||
errExpectedFn := func(fieldName string) field.ErrorList {
|
||||
return field.ErrorList{
|
||||
field.Invalid(field.NewPath("spec").Child("limited").Child(fieldName), int32(0), "must be positive"),
|
||||
}
|
||||
}
|
||||
|
||||
tests := []struct {
|
||||
requestVersion schema.GroupVersion
|
||||
concurrencyShares int32
|
||||
errExpected field.ErrorList
|
||||
}{
|
||||
{
|
||||
requestVersion: flowcontrolv1alpha1.SchemeGroupVersion,
|
||||
concurrencyShares: 0,
|
||||
errExpected: errExpectedFn("assuredConcurrencyShares"),
|
||||
},
|
||||
{
|
||||
requestVersion: flowcontrolv1beta1.SchemeGroupVersion,
|
||||
concurrencyShares: 0,
|
||||
errExpected: errExpectedFn("assuredConcurrencyShares"),
|
||||
},
|
||||
{
|
||||
requestVersion: flowcontrolv1beta2.SchemeGroupVersion,
|
||||
concurrencyShares: 0,
|
||||
errExpected: errExpectedFn("assuredConcurrencyShares"),
|
||||
},
|
||||
{
|
||||
requestVersion: flowcontrolv1beta3.SchemeGroupVersion,
|
||||
concurrencyShares: 0,
|
||||
errExpected: errExpectedFn("nominalConcurrencyShares"),
|
||||
},
|
||||
{
|
||||
// let's simulate a post v1beta3 version, we expect the
|
||||
// error to return the new field introduced in v1beta3.
|
||||
requestVersion: schema.GroupVersion{Group: flowcontrolv1beta3.GroupName, Version: "v1"},
|
||||
concurrencyShares: 0,
|
||||
errExpected: errExpectedFn("nominalConcurrencyShares"),
|
||||
},
|
||||
{
|
||||
// this should never really happen in real life, the request
|
||||
// context should always contain the request {group, version}
|
||||
requestVersion: schema.GroupVersion{},
|
||||
concurrencyShares: 0,
|
||||
errExpected: errExpectedFn("nominalConcurrencyShares"),
|
||||
},
|
||||
{
|
||||
requestVersion: flowcontrolv1beta3.SchemeGroupVersion,
|
||||
concurrencyShares: 100,
|
||||
errExpected: nil,
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
t.Run(test.requestVersion.String(), func(t *testing.T) {
|
||||
configuration := &flowcontrol.LimitedPriorityLevelConfiguration{
|
||||
NominalConcurrencyShares: test.concurrencyShares,
|
||||
LimitResponse: flowcontrol.LimitResponse{
|
||||
Type: flowcontrol.LimitResponseTypeReject,
|
||||
},
|
||||
}
|
||||
specPath := field.NewPath("spec").Child("limited")
|
||||
|
||||
errGot := ValidateLimitedPriorityLevelConfiguration(configuration, test.requestVersion, specPath)
|
||||
if !cmp.Equal(test.errExpected, errGot) {
|
||||
t.Errorf("Expected error: %v, diff: %s", test.errExpected, cmp.Diff(test.errExpected, errGot))
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@@ -76,6 +76,7 @@ import (
|
||||
api "k8s.io/kubernetes/pkg/apis/core"
|
||||
flowcontrolv1beta1 "k8s.io/kubernetes/pkg/apis/flowcontrol/v1beta1"
|
||||
flowcontrolv1beta2 "k8s.io/kubernetes/pkg/apis/flowcontrol/v1beta2"
|
||||
flowcontrolv1beta3 "k8s.io/kubernetes/pkg/apis/flowcontrol/v1beta3"
|
||||
"k8s.io/kubernetes/pkg/controlplane/controller/apiserverleasegc"
|
||||
"k8s.io/kubernetes/pkg/controlplane/controller/clusterauthenticationtrust"
|
||||
"k8s.io/kubernetes/pkg/controlplane/reconcilers"
|
||||
@@ -637,6 +638,8 @@ var (
|
||||
flowcontrolv1beta1.SchemeGroupVersion.WithResource("prioritylevelconfigurations"), // remove in 1.26
|
||||
flowcontrolv1beta2.SchemeGroupVersion.WithResource("flowschemas"), // remove in 1.29
|
||||
flowcontrolv1beta2.SchemeGroupVersion.WithResource("prioritylevelconfigurations"), // remove in 1.29
|
||||
flowcontrolv1beta3.SchemeGroupVersion.WithResource("flowschemas"), // deprecate in 1.29, remove in 1.32
|
||||
flowcontrolv1beta3.SchemeGroupVersion.WithResource("prioritylevelconfigurations"), // deprecate in 1.29, remove in 1.32
|
||||
}
|
||||
// betaAPIGroupVersionsDisabledByDefault is for all future beta groupVersions.
|
||||
betaAPIGroupVersionsDisabledByDefault = []schema.GroupVersion{
|
||||
@@ -650,6 +653,7 @@ var (
|
||||
storageapiv1beta1.SchemeGroupVersion,
|
||||
flowcontrolv1beta1.SchemeGroupVersion,
|
||||
flowcontrolv1beta2.SchemeGroupVersion,
|
||||
flowcontrolv1beta3.SchemeGroupVersion,
|
||||
}
|
||||
|
||||
// alphaAPIGroupVersionsDisabledByDefault holds the alpha APIs we have. They are always disabled by default.
|
||||
|
@@ -83,8 +83,10 @@ var GVRToStorageVersionHash = map[string]string{
|
||||
"admissionregistration.k8s.io/v1/mutatingwebhookconfigurations": "Sqi0GUgDaX0=",
|
||||
"admissionregistration.k8s.io/v1/validatingwebhookconfigurations": "B0wHjQmsGNk=",
|
||||
"events.k8s.io/v1/events": "r2yiGXH7wu8=",
|
||||
"flowcontrol.apiserver.k8s.io/v1beta2/flowschemas": "9bSnTLYweJ0=",
|
||||
"flowcontrol.apiserver.k8s.io/v1beta2/prioritylevelconfigurations": "BFVwf8eYnsw=",
|
||||
"flowcontrol.apiserver.k8s.io/v1beta1/flowschemas": "9bSnTLYweJ0=",
|
||||
"flowcontrol.apiserver.k8s.io/v1beta1/prioritylevelconfigurations": "BFVwf8eYnsw=",
|
||||
"flowcontrol.apiserver.k8s.io/v1beta3/flowschemas": "G+8IkrqFuJw=",
|
||||
"flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations": "wltM4WMeeXs=",
|
||||
"flowcontrol.apiserver.k8s.io/v1beta2/flowschemas": "G+8IkrqFuJw=",
|
||||
"flowcontrol.apiserver.k8s.io/v1beta2/prioritylevelconfigurations": "wltM4WMeeXs=",
|
||||
"flowcontrol.apiserver.k8s.io/v1beta1/flowschemas": "G+8IkrqFuJw=",
|
||||
"flowcontrol.apiserver.k8s.io/v1beta1/prioritylevelconfigurations": "wltM4WMeeXs=",
|
||||
}
|
||||
|
1011
pkg/generated/openapi/zz_generated.openapi.go
generated
1011
pkg/generated/openapi/zz_generated.openapi.go
generated
File diff suppressed because it is too large
Load Diff
@@ -36,7 +36,7 @@ import (
|
||||
apiv1 "k8s.io/api/core/v1"
|
||||
discoveryv1beta1 "k8s.io/api/discovery/v1beta1"
|
||||
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
|
||||
flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
|
||||
flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
|
||||
networkingv1alpha1 "k8s.io/api/networking/v1alpha1"
|
||||
policyv1beta1 "k8s.io/api/policy/v1beta1"
|
||||
rbacv1beta1 "k8s.io/api/rbac/v1beta1"
|
||||
@@ -555,9 +555,9 @@ func AddHandlers(h printers.PrintHandler) {
|
||||
|
||||
flowSchemaColumnDefinitions := []metav1.TableColumnDefinition{
|
||||
{Name: "Name", Type: "string", Format: "name", Description: metav1.ObjectMeta{}.SwaggerDoc()["name"]},
|
||||
{Name: "PriorityLevel", Type: "string", Description: flowcontrolv1beta2.PriorityLevelConfigurationReference{}.SwaggerDoc()["name"]},
|
||||
{Name: "MatchingPrecedence", Type: "string", Description: flowcontrolv1beta2.FlowSchemaSpec{}.SwaggerDoc()["matchingPrecedence"]},
|
||||
{Name: "DistinguisherMethod", Type: "string", Description: flowcontrolv1beta2.FlowSchemaSpec{}.SwaggerDoc()["distinguisherMethod"]},
|
||||
{Name: "PriorityLevel", Type: "string", Description: flowcontrolv1beta3.PriorityLevelConfigurationReference{}.SwaggerDoc()["name"]},
|
||||
{Name: "MatchingPrecedence", Type: "string", Description: flowcontrolv1beta3.FlowSchemaSpec{}.SwaggerDoc()["matchingPrecedence"]},
|
||||
{Name: "DistinguisherMethod", Type: "string", Description: flowcontrolv1beta3.FlowSchemaSpec{}.SwaggerDoc()["distinguisherMethod"]},
|
||||
{Name: "Age", Type: "string", Description: metav1.ObjectMeta{}.SwaggerDoc()["creationTimestamp"]},
|
||||
{Name: "MissingPL", Type: "string", Description: "references a broken or non-existent PriorityLevelConfiguration"},
|
||||
}
|
||||
@@ -566,11 +566,11 @@ func AddHandlers(h printers.PrintHandler) {
|
||||
|
||||
priorityLevelColumnDefinitions := []metav1.TableColumnDefinition{
|
||||
{Name: "Name", Type: "string", Format: "name", Description: metav1.ObjectMeta{}.SwaggerDoc()["name"]},
|
||||
{Name: "Type", Type: "string", Description: flowcontrolv1beta2.PriorityLevelConfigurationSpec{}.SwaggerDoc()["type"]},
|
||||
{Name: "AssuredConcurrencyShares", Type: "string", Description: flowcontrolv1beta2.LimitedPriorityLevelConfiguration{}.SwaggerDoc()["assuredConcurrencyShares"]},
|
||||
{Name: "Queues", Type: "string", Description: flowcontrolv1beta2.QueuingConfiguration{}.SwaggerDoc()["queues"]},
|
||||
{Name: "HandSize", Type: "string", Description: flowcontrolv1beta2.QueuingConfiguration{}.SwaggerDoc()["handSize"]},
|
||||
{Name: "QueueLengthLimit", Type: "string", Description: flowcontrolv1beta2.QueuingConfiguration{}.SwaggerDoc()["queueLengthLimit"]},
|
||||
{Name: "Type", Type: "string", Description: flowcontrolv1beta3.PriorityLevelConfigurationSpec{}.SwaggerDoc()["type"]},
|
||||
{Name: "NominalConcurrencyShares", Type: "string", Description: flowcontrolv1beta3.LimitedPriorityLevelConfiguration{}.SwaggerDoc()["nominalConcurrencyShares"]},
|
||||
{Name: "Queues", Type: "string", Description: flowcontrolv1beta3.QueuingConfiguration{}.SwaggerDoc()["queues"]},
|
||||
{Name: "HandSize", Type: "string", Description: flowcontrolv1beta3.QueuingConfiguration{}.SwaggerDoc()["handSize"]},
|
||||
{Name: "QueueLengthLimit", Type: "string", Description: flowcontrolv1beta3.QueuingConfiguration{}.SwaggerDoc()["queueLengthLimit"]},
|
||||
{Name: "Age", Type: "string", Description: metav1.ObjectMeta{}.SwaggerDoc()["creationTimestamp"]},
|
||||
}
|
||||
h.TableHandler(priorityLevelColumnDefinitions, printPriorityLevelConfiguration)
|
||||
@@ -2608,19 +2608,19 @@ func printPriorityLevelConfiguration(obj *flowcontrol.PriorityLevelConfiguration
|
||||
Object: runtime.RawExtension{Object: obj},
|
||||
}
|
||||
name := obj.Name
|
||||
acs := interface{}("<none>")
|
||||
ncs := interface{}("<none>")
|
||||
queues := interface{}("<none>")
|
||||
handSize := interface{}("<none>")
|
||||
queueLengthLimit := interface{}("<none>")
|
||||
if obj.Spec.Limited != nil {
|
||||
acs = obj.Spec.Limited.AssuredConcurrencyShares
|
||||
ncs = obj.Spec.Limited.NominalConcurrencyShares
|
||||
if qc := obj.Spec.Limited.LimitResponse.Queuing; qc != nil {
|
||||
queues = qc.Queues
|
||||
handSize = qc.HandSize
|
||||
queueLengthLimit = qc.QueueLengthLimit
|
||||
}
|
||||
}
|
||||
row.Cells = append(row.Cells, name, string(obj.Spec.Type), acs, queues, handSize, queueLengthLimit, translateTimestampSince(obj.CreationTimestamp))
|
||||
row.Cells = append(row.Cells, name, string(obj.Spec.Type), ncs, queues, handSize, queueLengthLimit, translateTimestampSince(obj.CreationTimestamp))
|
||||
|
||||
return []metav1.TableRow{row}, nil
|
||||
}
|
||||
|
@@ -5643,7 +5643,7 @@ func TestPrintPriorityLevelConfiguration(t *testing.T) {
|
||||
Type: flowcontrol.PriorityLevelEnablementExempt,
|
||||
},
|
||||
},
|
||||
// Columns: Name, Type, AssuredConcurrencyShares, Queues, HandSize, QueueLengthLimit, Age
|
||||
// Columns: Name, Type, NominalConcurrencyShares, Queues, HandSize, QueueLengthLimit, Age
|
||||
expected: []metav1.TableRow{{Cells: []interface{}{"unlimited", "Exempt", "<none>", "<none>", "<none>", "<none>", "0s"}}},
|
||||
},
|
||||
{
|
||||
@@ -5655,14 +5655,14 @@ func TestPrintPriorityLevelConfiguration(t *testing.T) {
|
||||
Spec: flowcontrol.PriorityLevelConfigurationSpec{
|
||||
Type: flowcontrol.PriorityLevelEnablementLimited,
|
||||
Limited: &flowcontrol.LimitedPriorityLevelConfiguration{
|
||||
AssuredConcurrencyShares: 47,
|
||||
NominalConcurrencyShares: 47,
|
||||
LimitResponse: flowcontrol.LimitResponse{
|
||||
Type: flowcontrol.LimitResponseTypeReject,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
// Columns: Name, Type, AssuredConcurrencyShares, Queues, HandSize, QueueLengthLimit, Age
|
||||
// Columns: Name, Type, NominalConcurrencyShares, Queues, HandSize, QueueLengthLimit, Age
|
||||
expected: []metav1.TableRow{{Cells: []interface{}{"unqueued", "Limited", int32(47), "<none>", "<none>", "<none>", "0s"}}},
|
||||
},
|
||||
{
|
||||
@@ -5674,7 +5674,7 @@ func TestPrintPriorityLevelConfiguration(t *testing.T) {
|
||||
Spec: flowcontrol.PriorityLevelConfigurationSpec{
|
||||
Type: flowcontrol.PriorityLevelEnablementLimited,
|
||||
Limited: &flowcontrol.LimitedPriorityLevelConfiguration{
|
||||
AssuredConcurrencyShares: 42,
|
||||
NominalConcurrencyShares: 42,
|
||||
LimitResponse: flowcontrol.LimitResponse{
|
||||
Type: flowcontrol.LimitResponseTypeQueue,
|
||||
Queuing: &flowcontrol.QueuingConfiguration{
|
||||
@@ -5686,7 +5686,7 @@ func TestPrintPriorityLevelConfiguration(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
// Columns: Name, Type, AssuredConcurrencyShares, Queues, HandSize, QueueLengthLimit, Age
|
||||
// Columns: Name, Type, NominalConcurrencyShares, Queues, HandSize, QueueLengthLimit, Age
|
||||
expected: []metav1.TableRow{{Cells: []interface{}{"queued", "Limited", int32(42), int32(8), int32(3), int32(4), "0s"}}},
|
||||
},
|
||||
}
|
||||
|
@@ -21,15 +21,15 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
|
||||
flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
|
||||
"k8s.io/apimachinery/pkg/api/equality"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/util/sets"
|
||||
flowcontrolclient "k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2"
|
||||
flowcontrollisters "k8s.io/client-go/listers/flowcontrol/v1beta2"
|
||||
flowcontrolapisv1beta2 "k8s.io/kubernetes/pkg/apis/flowcontrol/v1beta2"
|
||||
flowcontrolclient "k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3"
|
||||
flowcontrollisters "k8s.io/client-go/listers/flowcontrol/v1beta3"
|
||||
flowcontrolapisv1beta3 "k8s.io/kubernetes/pkg/apis/flowcontrol/v1beta3"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -38,7 +38,7 @@ var (
|
||||
|
||||
// FlowSchemaEnsurer ensures the specified bootstrap configuration objects
|
||||
type FlowSchemaEnsurer interface {
|
||||
Ensure([]*flowcontrolv1beta2.FlowSchema) error
|
||||
Ensure([]*flowcontrolv1beta3.FlowSchema) error
|
||||
}
|
||||
|
||||
// FlowSchemaRemover is the interface that wraps the
|
||||
@@ -92,7 +92,7 @@ func NewFlowSchemaRemover(client flowcontrolclient.FlowSchemaInterface, lister f
|
||||
// names that are candidates for deletion from the cluster.
|
||||
// bootstrap: a set of hard coded FlowSchema configuration objects
|
||||
// kube-apiserver maintains in-memory.
|
||||
func GetFlowSchemaRemoveCandidates(lister flowcontrollisters.FlowSchemaLister, bootstrap []*flowcontrolv1beta2.FlowSchema) ([]string, error) {
|
||||
func GetFlowSchemaRemoveCandidates(lister flowcontrollisters.FlowSchemaLister, bootstrap []*flowcontrolv1beta3.FlowSchema) ([]string, error) {
|
||||
fsList, err := lister.List(labels.Everything())
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to list FlowSchema - %w", err)
|
||||
@@ -116,7 +116,7 @@ type fsEnsurer struct {
|
||||
wrapper configurationWrapper
|
||||
}
|
||||
|
||||
func (e *fsEnsurer) Ensure(flowSchemas []*flowcontrolv1beta2.FlowSchema) error {
|
||||
func (e *fsEnsurer) Ensure(flowSchemas []*flowcontrolv1beta3.FlowSchema) error {
|
||||
for _, flowSchema := range flowSchemas {
|
||||
if err := ensureConfiguration(e.wrapper, e.strategy, flowSchema); err != nil {
|
||||
return err
|
||||
@@ -148,7 +148,7 @@ func (fs *flowSchemaWrapper) TypeName() string {
|
||||
}
|
||||
|
||||
func (fs *flowSchemaWrapper) Create(object runtime.Object) (runtime.Object, error) {
|
||||
fsObject, ok := object.(*flowcontrolv1beta2.FlowSchema)
|
||||
fsObject, ok := object.(*flowcontrolv1beta3.FlowSchema)
|
||||
if !ok {
|
||||
return nil, errObjectNotFlowSchema
|
||||
}
|
||||
@@ -157,7 +157,7 @@ func (fs *flowSchemaWrapper) Create(object runtime.Object) (runtime.Object, erro
|
||||
}
|
||||
|
||||
func (fs *flowSchemaWrapper) Update(object runtime.Object) (runtime.Object, error) {
|
||||
fsObject, ok := object.(*flowcontrolv1beta2.FlowSchema)
|
||||
fsObject, ok := object.(*flowcontrolv1beta3.FlowSchema)
|
||||
if !ok {
|
||||
return nil, errObjectNotFlowSchema
|
||||
}
|
||||
@@ -174,11 +174,11 @@ func (fs *flowSchemaWrapper) Delete(name string) error {
|
||||
}
|
||||
|
||||
func (fs *flowSchemaWrapper) CopySpec(bootstrap, current runtime.Object) error {
|
||||
bootstrapFS, ok := bootstrap.(*flowcontrolv1beta2.FlowSchema)
|
||||
bootstrapFS, ok := bootstrap.(*flowcontrolv1beta3.FlowSchema)
|
||||
if !ok {
|
||||
return errObjectNotFlowSchema
|
||||
}
|
||||
currentFS, ok := current.(*flowcontrolv1beta2.FlowSchema)
|
||||
currentFS, ok := current.(*flowcontrolv1beta3.FlowSchema)
|
||||
if !ok {
|
||||
return errObjectNotFlowSchema
|
||||
}
|
||||
@@ -189,11 +189,11 @@ func (fs *flowSchemaWrapper) CopySpec(bootstrap, current runtime.Object) error {
|
||||
}
|
||||
|
||||
func (fs *flowSchemaWrapper) HasSpecChanged(bootstrap, current runtime.Object) (bool, error) {
|
||||
bootstrapFS, ok := bootstrap.(*flowcontrolv1beta2.FlowSchema)
|
||||
bootstrapFS, ok := bootstrap.(*flowcontrolv1beta3.FlowSchema)
|
||||
if !ok {
|
||||
return false, errObjectNotFlowSchema
|
||||
}
|
||||
currentFS, ok := current.(*flowcontrolv1beta2.FlowSchema)
|
||||
currentFS, ok := current.(*flowcontrolv1beta3.FlowSchema)
|
||||
if !ok {
|
||||
return false, errObjectNotFlowSchema
|
||||
}
|
||||
@@ -201,8 +201,8 @@ func (fs *flowSchemaWrapper) HasSpecChanged(bootstrap, current runtime.Object) (
|
||||
return flowSchemaSpecChanged(bootstrapFS, currentFS), nil
|
||||
}
|
||||
|
||||
func flowSchemaSpecChanged(expected, actual *flowcontrolv1beta2.FlowSchema) bool {
|
||||
func flowSchemaSpecChanged(expected, actual *flowcontrolv1beta3.FlowSchema) bool {
|
||||
copiedExpectedFlowSchema := expected.DeepCopy()
|
||||
flowcontrolapisv1beta2.SetObjectDefaults_FlowSchema(copiedExpectedFlowSchema)
|
||||
flowcontrolapisv1beta3.SetObjectDefaults_FlowSchema(copiedExpectedFlowSchema)
|
||||
return !equality.Semantic.DeepEqual(copiedExpectedFlowSchema.Spec, actual.Spec)
|
||||
}
|
||||
|
@@ -21,15 +21,15 @@ import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
|
||||
flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
|
||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apiserver/pkg/apis/flowcontrol/bootstrap"
|
||||
"k8s.io/client-go/kubernetes/fake"
|
||||
flowcontrolclient "k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2"
|
||||
flowcontrollisters "k8s.io/client-go/listers/flowcontrol/v1beta2"
|
||||
flowcontrolclient "k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3"
|
||||
flowcontrollisters "k8s.io/client-go/listers/flowcontrol/v1beta3"
|
||||
"k8s.io/client-go/tools/cache"
|
||||
flowcontrolapisv1beta2 "k8s.io/kubernetes/pkg/apis/flowcontrol/v1beta2"
|
||||
flowcontrolapisv1beta3 "k8s.io/kubernetes/pkg/apis/flowcontrol/v1beta3"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/google/go-cmp/cmp/cmpopts"
|
||||
@@ -40,9 +40,9 @@ func TestEnsureFlowSchema(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
strategy func(flowcontrolclient.FlowSchemaInterface, flowcontrollisters.FlowSchemaLister) FlowSchemaEnsurer
|
||||
current *flowcontrolv1beta2.FlowSchema
|
||||
bootstrap *flowcontrolv1beta2.FlowSchema
|
||||
expected *flowcontrolv1beta2.FlowSchema
|
||||
current *flowcontrolv1beta3.FlowSchema
|
||||
bootstrap *flowcontrolv1beta3.FlowSchema
|
||||
expected *flowcontrolv1beta3.FlowSchema
|
||||
}{
|
||||
// for suggested configurations
|
||||
{
|
||||
@@ -93,7 +93,7 @@ func TestEnsureFlowSchema(t *testing.T) {
|
||||
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
client := fake.NewSimpleClientset().FlowcontrolV1beta2().FlowSchemas()
|
||||
client := fake.NewSimpleClientset().FlowcontrolV1beta3().FlowSchemas()
|
||||
indexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{})
|
||||
if test.current != nil {
|
||||
client.Create(context.TODO(), test.current, metav1.CreateOptions{})
|
||||
@@ -102,7 +102,7 @@ func TestEnsureFlowSchema(t *testing.T) {
|
||||
|
||||
ensurer := test.strategy(client, flowcontrollisters.NewFlowSchemaLister(indexer))
|
||||
|
||||
err := ensurer.Ensure([]*flowcontrolv1beta2.FlowSchema{test.bootstrap})
|
||||
err := ensurer.Ensure([]*flowcontrolv1beta3.FlowSchema{test.bootstrap})
|
||||
if err != nil {
|
||||
t.Fatalf("Expected no error, but got: %v", err)
|
||||
}
|
||||
@@ -127,9 +127,9 @@ func TestEnsureFlowSchema(t *testing.T) {
|
||||
func TestSuggestedFSEnsureStrategy_ShouldUpdate(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
current *flowcontrolv1beta2.FlowSchema
|
||||
bootstrap *flowcontrolv1beta2.FlowSchema
|
||||
newObjectExpected *flowcontrolv1beta2.FlowSchema
|
||||
current *flowcontrolv1beta3.FlowSchema
|
||||
bootstrap *flowcontrolv1beta3.FlowSchema
|
||||
newObjectExpected *flowcontrolv1beta3.FlowSchema
|
||||
}{
|
||||
{
|
||||
name: "auto update is enabled, first generation, spec does not match - spec update expected",
|
||||
@@ -234,23 +234,23 @@ func TestSuggestedFSEnsureStrategy_ShouldUpdate(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestFlowSchemaSpecChanged(t *testing.T) {
|
||||
fs1 := &flowcontrolv1beta2.FlowSchema{
|
||||
Spec: flowcontrolv1beta2.FlowSchemaSpec{},
|
||||
fs1 := &flowcontrolv1beta3.FlowSchema{
|
||||
Spec: flowcontrolv1beta3.FlowSchemaSpec{},
|
||||
}
|
||||
fs2 := &flowcontrolv1beta2.FlowSchema{
|
||||
Spec: flowcontrolv1beta2.FlowSchemaSpec{
|
||||
fs2 := &flowcontrolv1beta3.FlowSchema{
|
||||
Spec: flowcontrolv1beta3.FlowSchemaSpec{
|
||||
MatchingPrecedence: 1,
|
||||
},
|
||||
}
|
||||
fs1Defaulted := &flowcontrolv1beta2.FlowSchema{
|
||||
Spec: flowcontrolv1beta2.FlowSchemaSpec{
|
||||
MatchingPrecedence: flowcontrolapisv1beta2.FlowSchemaDefaultMatchingPrecedence,
|
||||
fs1Defaulted := &flowcontrolv1beta3.FlowSchema{
|
||||
Spec: flowcontrolv1beta3.FlowSchemaSpec{
|
||||
MatchingPrecedence: flowcontrolapisv1beta3.FlowSchemaDefaultMatchingPrecedence,
|
||||
},
|
||||
}
|
||||
testCases := []struct {
|
||||
name string
|
||||
expected *flowcontrolv1beta2.FlowSchema
|
||||
actual *flowcontrolv1beta2.FlowSchema
|
||||
expected *flowcontrolv1beta3.FlowSchema
|
||||
actual *flowcontrolv1beta3.FlowSchema
|
||||
specChanged bool
|
||||
}{
|
||||
{
|
||||
@@ -283,7 +283,7 @@ func TestFlowSchemaSpecChanged(t *testing.T) {
|
||||
func TestRemoveFlowSchema(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
current *flowcontrolv1beta2.FlowSchema
|
||||
current *flowcontrolv1beta3.FlowSchema
|
||||
bootstrapName string
|
||||
removeExpected bool
|
||||
}{
|
||||
@@ -314,7 +314,7 @@ func TestRemoveFlowSchema(t *testing.T) {
|
||||
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
client := fake.NewSimpleClientset().FlowcontrolV1beta2().FlowSchemas()
|
||||
client := fake.NewSimpleClientset().FlowcontrolV1beta3().FlowSchemas()
|
||||
indexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{})
|
||||
if test.current != nil {
|
||||
client.Create(context.TODO(), test.current, metav1.CreateOptions{})
|
||||
@@ -348,18 +348,18 @@ func TestRemoveFlowSchema(t *testing.T) {
|
||||
func TestGetFlowSchemaRemoveCandidate(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
current []*flowcontrolv1beta2.FlowSchema
|
||||
bootstrap []*flowcontrolv1beta2.FlowSchema
|
||||
current []*flowcontrolv1beta3.FlowSchema
|
||||
bootstrap []*flowcontrolv1beta3.FlowSchema
|
||||
expected []string
|
||||
}{
|
||||
{
|
||||
name: "no object has been removed from the bootstrap configuration",
|
||||
bootstrap: []*flowcontrolv1beta2.FlowSchema{
|
||||
bootstrap: []*flowcontrolv1beta3.FlowSchema{
|
||||
newFlowSchema("fs1", "pl1", 100).WithAutoUpdateAnnotation("true").Object(),
|
||||
newFlowSchema("fs2", "pl2", 200).WithAutoUpdateAnnotation("true").Object(),
|
||||
newFlowSchema("fs3", "pl3", 300).WithAutoUpdateAnnotation("true").Object(),
|
||||
},
|
||||
current: []*flowcontrolv1beta2.FlowSchema{
|
||||
current: []*flowcontrolv1beta3.FlowSchema{
|
||||
newFlowSchema("fs1", "pl1", 100).WithAutoUpdateAnnotation("true").Object(),
|
||||
newFlowSchema("fs2", "pl2", 200).WithAutoUpdateAnnotation("true").Object(),
|
||||
newFlowSchema("fs3", "pl3", 300).WithAutoUpdateAnnotation("true").Object(),
|
||||
@@ -368,8 +368,8 @@ func TestGetFlowSchemaRemoveCandidate(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "bootstrap is empty, all current objects with the annotation should be candidates",
|
||||
bootstrap: []*flowcontrolv1beta2.FlowSchema{},
|
||||
current: []*flowcontrolv1beta2.FlowSchema{
|
||||
bootstrap: []*flowcontrolv1beta3.FlowSchema{},
|
||||
current: []*flowcontrolv1beta3.FlowSchema{
|
||||
newFlowSchema("fs1", "pl1", 100).WithAutoUpdateAnnotation("true").Object(),
|
||||
newFlowSchema("fs2", "pl2", 200).WithAutoUpdateAnnotation("true").Object(),
|
||||
newFlowSchema("fs3", "pl3", 300).Object(),
|
||||
@@ -378,10 +378,10 @@ func TestGetFlowSchemaRemoveCandidate(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "object(s) have been removed from the bootstrap configuration",
|
||||
bootstrap: []*flowcontrolv1beta2.FlowSchema{
|
||||
bootstrap: []*flowcontrolv1beta3.FlowSchema{
|
||||
newFlowSchema("fs1", "pl1", 100).WithAutoUpdateAnnotation("true").Object(),
|
||||
},
|
||||
current: []*flowcontrolv1beta2.FlowSchema{
|
||||
current: []*flowcontrolv1beta3.FlowSchema{
|
||||
newFlowSchema("fs1", "pl1", 100).WithAutoUpdateAnnotation("true").Object(),
|
||||
newFlowSchema("fs2", "pl2", 200).WithAutoUpdateAnnotation("true").Object(),
|
||||
newFlowSchema("fs3", "pl3", 300).WithAutoUpdateAnnotation("true").Object(),
|
||||
@@ -390,10 +390,10 @@ func TestGetFlowSchemaRemoveCandidate(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "object(s) without the annotation key are ignored",
|
||||
bootstrap: []*flowcontrolv1beta2.FlowSchema{
|
||||
bootstrap: []*flowcontrolv1beta3.FlowSchema{
|
||||
newFlowSchema("fs1", "pl1", 100).WithAutoUpdateAnnotation("true").Object(),
|
||||
},
|
||||
current: []*flowcontrolv1beta2.FlowSchema{
|
||||
current: []*flowcontrolv1beta3.FlowSchema{
|
||||
newFlowSchema("fs1", "pl1", 100).WithAutoUpdateAnnotation("true").Object(),
|
||||
newFlowSchema("fs2", "pl2", 200).Object(),
|
||||
newFlowSchema("fs3", "pl3", 300).Object(),
|
||||
@@ -425,17 +425,17 @@ func TestGetFlowSchemaRemoveCandidate(t *testing.T) {
|
||||
}
|
||||
|
||||
type fsBuilder struct {
|
||||
object *flowcontrolv1beta2.FlowSchema
|
||||
object *flowcontrolv1beta3.FlowSchema
|
||||
}
|
||||
|
||||
func newFlowSchema(name, plName string, matchingPrecedence int32) *fsBuilder {
|
||||
return &fsBuilder{
|
||||
object: &flowcontrolv1beta2.FlowSchema{
|
||||
object: &flowcontrolv1beta3.FlowSchema{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: name,
|
||||
},
|
||||
Spec: flowcontrolv1beta2.FlowSchemaSpec{
|
||||
PriorityLevelConfiguration: flowcontrolv1beta2.PriorityLevelConfigurationReference{
|
||||
Spec: flowcontrolv1beta3.FlowSchemaSpec{
|
||||
PriorityLevelConfiguration: flowcontrolv1beta3.PriorityLevelConfigurationReference{
|
||||
Name: plName,
|
||||
},
|
||||
MatchingPrecedence: matchingPrecedence,
|
||||
@@ -444,7 +444,7 @@ func newFlowSchema(name, plName string, matchingPrecedence int32) *fsBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
func (b *fsBuilder) Object() *flowcontrolv1beta2.FlowSchema {
|
||||
func (b *fsBuilder) Object() *flowcontrolv1beta3.FlowSchema {
|
||||
return b.object
|
||||
}
|
||||
|
||||
@@ -463,5 +463,5 @@ func setAnnotation(accessor metav1.Object, value string) {
|
||||
accessor.SetAnnotations(map[string]string{})
|
||||
}
|
||||
|
||||
accessor.GetAnnotations()[flowcontrolv1beta2.AutoUpdateAnnotationKey] = value
|
||||
accessor.GetAnnotations()[flowcontrolv1beta3.AutoUpdateAnnotationKey] = value
|
||||
}
|
||||
|
@@ -21,15 +21,15 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
|
||||
flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
|
||||
"k8s.io/apimachinery/pkg/api/equality"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/util/sets"
|
||||
flowcontrolclient "k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2"
|
||||
flowcontrollisters "k8s.io/client-go/listers/flowcontrol/v1beta2"
|
||||
flowcontrolapisv1beta2 "k8s.io/kubernetes/pkg/apis/flowcontrol/v1beta2"
|
||||
flowcontrolclient "k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3"
|
||||
flowcontrollisters "k8s.io/client-go/listers/flowcontrol/v1beta3"
|
||||
flowcontrolapisv1beta3 "k8s.io/kubernetes/pkg/apis/flowcontrol/v1beta3"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -38,7 +38,7 @@ var (
|
||||
|
||||
// PriorityLevelEnsurer ensures the specified bootstrap configuration objects
|
||||
type PriorityLevelEnsurer interface {
|
||||
Ensure([]*flowcontrolv1beta2.PriorityLevelConfiguration) error
|
||||
Ensure([]*flowcontrolv1beta3.PriorityLevelConfiguration) error
|
||||
}
|
||||
|
||||
// PriorityLevelRemover is the interface that wraps the
|
||||
@@ -93,7 +93,7 @@ func NewPriorityLevelRemover(client flowcontrolclient.PriorityLevelConfiguration
|
||||
// names that are candidates for removal from the cluster.
|
||||
// bootstrap: a set of hard coded PriorityLevelConfiguration configuration
|
||||
// objects kube-apiserver maintains in-memory.
|
||||
func GetPriorityLevelRemoveCandidates(lister flowcontrollisters.PriorityLevelConfigurationLister, bootstrap []*flowcontrolv1beta2.PriorityLevelConfiguration) ([]string, error) {
|
||||
func GetPriorityLevelRemoveCandidates(lister flowcontrollisters.PriorityLevelConfigurationLister, bootstrap []*flowcontrolv1beta3.PriorityLevelConfiguration) ([]string, error) {
|
||||
plList, err := lister.List(labels.Everything())
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to list PriorityLevelConfiguration - %w", err)
|
||||
@@ -117,7 +117,7 @@ type plEnsurer struct {
|
||||
wrapper configurationWrapper
|
||||
}
|
||||
|
||||
func (e *plEnsurer) Ensure(priorityLevels []*flowcontrolv1beta2.PriorityLevelConfiguration) error {
|
||||
func (e *plEnsurer) Ensure(priorityLevels []*flowcontrolv1beta3.PriorityLevelConfiguration) error {
|
||||
for _, priorityLevel := range priorityLevels {
|
||||
if err := ensureConfiguration(e.wrapper, e.strategy, priorityLevel); err != nil {
|
||||
return err
|
||||
@@ -149,7 +149,7 @@ func (fs *priorityLevelConfigurationWrapper) TypeName() string {
|
||||
}
|
||||
|
||||
func (fs *priorityLevelConfigurationWrapper) Create(object runtime.Object) (runtime.Object, error) {
|
||||
plObject, ok := object.(*flowcontrolv1beta2.PriorityLevelConfiguration)
|
||||
plObject, ok := object.(*flowcontrolv1beta3.PriorityLevelConfiguration)
|
||||
if !ok {
|
||||
return nil, errObjectNotPriorityLevel
|
||||
}
|
||||
@@ -158,7 +158,7 @@ func (fs *priorityLevelConfigurationWrapper) Create(object runtime.Object) (runt
|
||||
}
|
||||
|
||||
func (fs *priorityLevelConfigurationWrapper) Update(object runtime.Object) (runtime.Object, error) {
|
||||
fsObject, ok := object.(*flowcontrolv1beta2.PriorityLevelConfiguration)
|
||||
fsObject, ok := object.(*flowcontrolv1beta3.PriorityLevelConfiguration)
|
||||
if !ok {
|
||||
return nil, errObjectNotPriorityLevel
|
||||
}
|
||||
@@ -175,11 +175,11 @@ func (fs *priorityLevelConfigurationWrapper) Delete(name string) error {
|
||||
}
|
||||
|
||||
func (fs *priorityLevelConfigurationWrapper) CopySpec(bootstrap, current runtime.Object) error {
|
||||
bootstrapFS, ok := bootstrap.(*flowcontrolv1beta2.PriorityLevelConfiguration)
|
||||
bootstrapFS, ok := bootstrap.(*flowcontrolv1beta3.PriorityLevelConfiguration)
|
||||
if !ok {
|
||||
return errObjectNotPriorityLevel
|
||||
}
|
||||
currentFS, ok := current.(*flowcontrolv1beta2.PriorityLevelConfiguration)
|
||||
currentFS, ok := current.(*flowcontrolv1beta3.PriorityLevelConfiguration)
|
||||
if !ok {
|
||||
return errObjectNotPriorityLevel
|
||||
}
|
||||
@@ -190,11 +190,11 @@ func (fs *priorityLevelConfigurationWrapper) CopySpec(bootstrap, current runtime
|
||||
}
|
||||
|
||||
func (fs *priorityLevelConfigurationWrapper) HasSpecChanged(bootstrap, current runtime.Object) (bool, error) {
|
||||
bootstrapFS, ok := bootstrap.(*flowcontrolv1beta2.PriorityLevelConfiguration)
|
||||
bootstrapFS, ok := bootstrap.(*flowcontrolv1beta3.PriorityLevelConfiguration)
|
||||
if !ok {
|
||||
return false, errObjectNotPriorityLevel
|
||||
}
|
||||
currentFS, ok := current.(*flowcontrolv1beta2.PriorityLevelConfiguration)
|
||||
currentFS, ok := current.(*flowcontrolv1beta3.PriorityLevelConfiguration)
|
||||
if !ok {
|
||||
return false, errObjectNotPriorityLevel
|
||||
}
|
||||
@@ -202,8 +202,8 @@ func (fs *priorityLevelConfigurationWrapper) HasSpecChanged(bootstrap, current r
|
||||
return priorityLevelSpecChanged(bootstrapFS, currentFS), nil
|
||||
}
|
||||
|
||||
func priorityLevelSpecChanged(expected, actual *flowcontrolv1beta2.PriorityLevelConfiguration) bool {
|
||||
func priorityLevelSpecChanged(expected, actual *flowcontrolv1beta3.PriorityLevelConfiguration) bool {
|
||||
copiedExpectedPriorityLevel := expected.DeepCopy()
|
||||
flowcontrolapisv1beta2.SetObjectDefaults_PriorityLevelConfiguration(copiedExpectedPriorityLevel)
|
||||
flowcontrolapisv1beta3.SetObjectDefaults_PriorityLevelConfiguration(copiedExpectedPriorityLevel)
|
||||
return !equality.Semantic.DeepEqual(copiedExpectedPriorityLevel.Spec, actual.Spec)
|
||||
}
|
||||
|
@@ -21,15 +21,15 @@ import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
|
||||
flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
|
||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apiserver/pkg/apis/flowcontrol/bootstrap"
|
||||
"k8s.io/client-go/kubernetes/fake"
|
||||
flowcontrolclient "k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2"
|
||||
flowcontrollisters "k8s.io/client-go/listers/flowcontrol/v1beta2"
|
||||
flowcontrolclient "k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3"
|
||||
flowcontrollisters "k8s.io/client-go/listers/flowcontrol/v1beta3"
|
||||
"k8s.io/client-go/tools/cache"
|
||||
flowcontrolapisv1beta2 "k8s.io/kubernetes/pkg/apis/flowcontrol/v1beta2"
|
||||
flowcontrolapisv1beta3 "k8s.io/kubernetes/pkg/apis/flowcontrol/v1beta3"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/google/go-cmp/cmp/cmpopts"
|
||||
@@ -40,9 +40,9 @@ func TestEnsurePriorityLevel(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
strategy func(flowcontrolclient.PriorityLevelConfigurationInterface, flowcontrollisters.PriorityLevelConfigurationLister) PriorityLevelEnsurer
|
||||
current *flowcontrolv1beta2.PriorityLevelConfiguration
|
||||
bootstrap *flowcontrolv1beta2.PriorityLevelConfiguration
|
||||
expected *flowcontrolv1beta2.PriorityLevelConfiguration
|
||||
current *flowcontrolv1beta3.PriorityLevelConfiguration
|
||||
bootstrap *flowcontrolv1beta3.PriorityLevelConfiguration
|
||||
expected *flowcontrolv1beta3.PriorityLevelConfiguration
|
||||
}{
|
||||
// for suggested configurations
|
||||
{
|
||||
@@ -93,7 +93,7 @@ func TestEnsurePriorityLevel(t *testing.T) {
|
||||
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
client := fake.NewSimpleClientset().FlowcontrolV1beta2().PriorityLevelConfigurations()
|
||||
client := fake.NewSimpleClientset().FlowcontrolV1beta3().PriorityLevelConfigurations()
|
||||
indexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{})
|
||||
if test.current != nil {
|
||||
client.Create(context.TODO(), test.current, metav1.CreateOptions{})
|
||||
@@ -102,7 +102,7 @@ func TestEnsurePriorityLevel(t *testing.T) {
|
||||
|
||||
ensurer := test.strategy(client, flowcontrollisters.NewPriorityLevelConfigurationLister(indexer))
|
||||
|
||||
err := ensurer.Ensure([]*flowcontrolv1beta2.PriorityLevelConfiguration{test.bootstrap})
|
||||
err := ensurer.Ensure([]*flowcontrolv1beta3.PriorityLevelConfiguration{test.bootstrap})
|
||||
if err != nil {
|
||||
t.Fatalf("Expected no error, but got: %v", err)
|
||||
}
|
||||
@@ -127,9 +127,9 @@ func TestEnsurePriorityLevel(t *testing.T) {
|
||||
func TestSuggestedPLEnsureStrategy_ShouldUpdate(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
current *flowcontrolv1beta2.PriorityLevelConfiguration
|
||||
bootstrap *flowcontrolv1beta2.PriorityLevelConfiguration
|
||||
newObjectExpected *flowcontrolv1beta2.PriorityLevelConfiguration
|
||||
current *flowcontrolv1beta3.PriorityLevelConfiguration
|
||||
bootstrap *flowcontrolv1beta3.PriorityLevelConfiguration
|
||||
newObjectExpected *flowcontrolv1beta3.PriorityLevelConfiguration
|
||||
}{
|
||||
{
|
||||
name: "auto update is enabled, first generation, spec does not match - spec update expected",
|
||||
@@ -234,39 +234,39 @@ func TestSuggestedPLEnsureStrategy_ShouldUpdate(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestPriorityLevelSpecChanged(t *testing.T) {
|
||||
pl1 := &flowcontrolv1beta2.PriorityLevelConfiguration{
|
||||
Spec: flowcontrolv1beta2.PriorityLevelConfigurationSpec{
|
||||
Type: flowcontrolv1beta2.PriorityLevelEnablementLimited,
|
||||
Limited: &flowcontrolv1beta2.LimitedPriorityLevelConfiguration{
|
||||
LimitResponse: flowcontrolv1beta2.LimitResponse{
|
||||
Type: flowcontrolv1beta2.LimitResponseTypeReject,
|
||||
pl1 := &flowcontrolv1beta3.PriorityLevelConfiguration{
|
||||
Spec: flowcontrolv1beta3.PriorityLevelConfigurationSpec{
|
||||
Type: flowcontrolv1beta3.PriorityLevelEnablementLimited,
|
||||
Limited: &flowcontrolv1beta3.LimitedPriorityLevelConfiguration{
|
||||
LimitResponse: flowcontrolv1beta3.LimitResponse{
|
||||
Type: flowcontrolv1beta3.LimitResponseTypeReject,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
pl2 := &flowcontrolv1beta2.PriorityLevelConfiguration{
|
||||
Spec: flowcontrolv1beta2.PriorityLevelConfigurationSpec{
|
||||
Type: flowcontrolv1beta2.PriorityLevelEnablementLimited,
|
||||
Limited: &flowcontrolv1beta2.LimitedPriorityLevelConfiguration{
|
||||
AssuredConcurrencyShares: 1,
|
||||
pl2 := &flowcontrolv1beta3.PriorityLevelConfiguration{
|
||||
Spec: flowcontrolv1beta3.PriorityLevelConfigurationSpec{
|
||||
Type: flowcontrolv1beta3.PriorityLevelEnablementLimited,
|
||||
Limited: &flowcontrolv1beta3.LimitedPriorityLevelConfiguration{
|
||||
NominalConcurrencyShares: 1,
|
||||
},
|
||||
},
|
||||
}
|
||||
pl1Defaulted := &flowcontrolv1beta2.PriorityLevelConfiguration{
|
||||
Spec: flowcontrolv1beta2.PriorityLevelConfigurationSpec{
|
||||
Type: flowcontrolv1beta2.PriorityLevelEnablementLimited,
|
||||
Limited: &flowcontrolv1beta2.LimitedPriorityLevelConfiguration{
|
||||
AssuredConcurrencyShares: flowcontrolapisv1beta2.PriorityLevelConfigurationDefaultAssuredConcurrencyShares,
|
||||
LimitResponse: flowcontrolv1beta2.LimitResponse{
|
||||
Type: flowcontrolv1beta2.LimitResponseTypeReject,
|
||||
pl1Defaulted := &flowcontrolv1beta3.PriorityLevelConfiguration{
|
||||
Spec: flowcontrolv1beta3.PriorityLevelConfigurationSpec{
|
||||
Type: flowcontrolv1beta3.PriorityLevelEnablementLimited,
|
||||
Limited: &flowcontrolv1beta3.LimitedPriorityLevelConfiguration{
|
||||
NominalConcurrencyShares: flowcontrolapisv1beta3.PriorityLevelConfigurationDefaultNominalConcurrencyShares,
|
||||
LimitResponse: flowcontrolv1beta3.LimitResponse{
|
||||
Type: flowcontrolv1beta3.LimitResponseTypeReject,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
testCases := []struct {
|
||||
name string
|
||||
expected *flowcontrolv1beta2.PriorityLevelConfiguration
|
||||
actual *flowcontrolv1beta2.PriorityLevelConfiguration
|
||||
expected *flowcontrolv1beta3.PriorityLevelConfiguration
|
||||
actual *flowcontrolv1beta3.PriorityLevelConfiguration
|
||||
specChanged bool
|
||||
}{
|
||||
{
|
||||
@@ -299,7 +299,7 @@ func TestPriorityLevelSpecChanged(t *testing.T) {
|
||||
func TestRemovePriorityLevelConfiguration(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
current *flowcontrolv1beta2.PriorityLevelConfiguration
|
||||
current *flowcontrolv1beta3.PriorityLevelConfiguration
|
||||
bootstrapName string
|
||||
removeExpected bool
|
||||
}{
|
||||
@@ -330,7 +330,7 @@ func TestRemovePriorityLevelConfiguration(t *testing.T) {
|
||||
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
client := fake.NewSimpleClientset().FlowcontrolV1beta2().PriorityLevelConfigurations()
|
||||
client := fake.NewSimpleClientset().FlowcontrolV1beta3().PriorityLevelConfigurations()
|
||||
indexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{})
|
||||
if test.current != nil {
|
||||
client.Create(context.TODO(), test.current, metav1.CreateOptions{})
|
||||
@@ -364,18 +364,18 @@ func TestRemovePriorityLevelConfiguration(t *testing.T) {
|
||||
func TestGetPriorityLevelRemoveCandidate(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
current []*flowcontrolv1beta2.PriorityLevelConfiguration
|
||||
bootstrap []*flowcontrolv1beta2.PriorityLevelConfiguration
|
||||
current []*flowcontrolv1beta3.PriorityLevelConfiguration
|
||||
bootstrap []*flowcontrolv1beta3.PriorityLevelConfiguration
|
||||
expected []string
|
||||
}{
|
||||
{
|
||||
name: "no object has been removed from the bootstrap configuration",
|
||||
bootstrap: []*flowcontrolv1beta2.PriorityLevelConfiguration{
|
||||
bootstrap: []*flowcontrolv1beta3.PriorityLevelConfiguration{
|
||||
newPLConfiguration("pl1").WithAutoUpdateAnnotation("true").Object(),
|
||||
newPLConfiguration("pl2").WithAutoUpdateAnnotation("true").Object(),
|
||||
newPLConfiguration("pl3").WithAutoUpdateAnnotation("true").Object(),
|
||||
},
|
||||
current: []*flowcontrolv1beta2.PriorityLevelConfiguration{
|
||||
current: []*flowcontrolv1beta3.PriorityLevelConfiguration{
|
||||
newPLConfiguration("pl1").WithAutoUpdateAnnotation("true").Object(),
|
||||
newPLConfiguration("pl2").WithAutoUpdateAnnotation("true").Object(),
|
||||
newPLConfiguration("pl3").WithAutoUpdateAnnotation("true").Object(),
|
||||
@@ -384,8 +384,8 @@ func TestGetPriorityLevelRemoveCandidate(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "bootstrap is empty, all current objects with the annotation should be candidates",
|
||||
bootstrap: []*flowcontrolv1beta2.PriorityLevelConfiguration{},
|
||||
current: []*flowcontrolv1beta2.PriorityLevelConfiguration{
|
||||
bootstrap: []*flowcontrolv1beta3.PriorityLevelConfiguration{},
|
||||
current: []*flowcontrolv1beta3.PriorityLevelConfiguration{
|
||||
newPLConfiguration("pl1").WithAutoUpdateAnnotation("true").Object(),
|
||||
newPLConfiguration("pl2").WithAutoUpdateAnnotation("true").Object(),
|
||||
newPLConfiguration("pl3").Object(),
|
||||
@@ -394,10 +394,10 @@ func TestGetPriorityLevelRemoveCandidate(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "object(s) have been removed from the bootstrap configuration",
|
||||
bootstrap: []*flowcontrolv1beta2.PriorityLevelConfiguration{
|
||||
bootstrap: []*flowcontrolv1beta3.PriorityLevelConfiguration{
|
||||
newPLConfiguration("pl1").WithAutoUpdateAnnotation("true").Object(),
|
||||
},
|
||||
current: []*flowcontrolv1beta2.PriorityLevelConfiguration{
|
||||
current: []*flowcontrolv1beta3.PriorityLevelConfiguration{
|
||||
newPLConfiguration("pl1").WithAutoUpdateAnnotation("true").Object(),
|
||||
newPLConfiguration("pl2").WithAutoUpdateAnnotation("true").Object(),
|
||||
newPLConfiguration("pl3").WithAutoUpdateAnnotation("true").Object(),
|
||||
@@ -406,10 +406,10 @@ func TestGetPriorityLevelRemoveCandidate(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "object(s) without the annotation key are ignored",
|
||||
bootstrap: []*flowcontrolv1beta2.PriorityLevelConfiguration{
|
||||
bootstrap: []*flowcontrolv1beta3.PriorityLevelConfiguration{
|
||||
newPLConfiguration("pl1").WithAutoUpdateAnnotation("true").Object(),
|
||||
},
|
||||
current: []*flowcontrolv1beta2.PriorityLevelConfiguration{
|
||||
current: []*flowcontrolv1beta3.PriorityLevelConfiguration{
|
||||
newPLConfiguration("pl1").WithAutoUpdateAnnotation("true").Object(),
|
||||
newPLConfiguration("pl2").Object(),
|
||||
newPLConfiguration("pl3").Object(),
|
||||
@@ -441,12 +441,12 @@ func TestGetPriorityLevelRemoveCandidate(t *testing.T) {
|
||||
}
|
||||
|
||||
type plBuilder struct {
|
||||
object *flowcontrolv1beta2.PriorityLevelConfiguration
|
||||
object *flowcontrolv1beta3.PriorityLevelConfiguration
|
||||
}
|
||||
|
||||
func newPLConfiguration(name string) *plBuilder {
|
||||
return &plBuilder{
|
||||
object: &flowcontrolv1beta2.PriorityLevelConfiguration{
|
||||
object: &flowcontrolv1beta3.PriorityLevelConfiguration{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: name,
|
||||
},
|
||||
@@ -454,7 +454,7 @@ func newPLConfiguration(name string) *plBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
func (b *plBuilder) Object() *flowcontrolv1beta2.PriorityLevelConfiguration {
|
||||
func (b *plBuilder) Object() *flowcontrolv1beta3.PriorityLevelConfiguration {
|
||||
return b.object
|
||||
}
|
||||
|
||||
@@ -468,12 +468,12 @@ func (b *plBuilder) WithAutoUpdateAnnotation(value string) *plBuilder {
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *plBuilder) WithLimited(assuredConcurrencyShares int32) *plBuilder {
|
||||
b.object.Spec.Type = flowcontrolv1beta2.PriorityLevelEnablementLimited
|
||||
b.object.Spec.Limited = &flowcontrolv1beta2.LimitedPriorityLevelConfiguration{
|
||||
AssuredConcurrencyShares: assuredConcurrencyShares,
|
||||
LimitResponse: flowcontrolv1beta2.LimitResponse{
|
||||
Type: flowcontrolv1beta2.LimitResponseTypeReject,
|
||||
func (b *plBuilder) WithLimited(nominalConcurrencyShares int32) *plBuilder {
|
||||
b.object.Spec.Type = flowcontrolv1beta3.PriorityLevelEnablementLimited
|
||||
b.object.Spec.Limited = &flowcontrolv1beta3.LimitedPriorityLevelConfiguration{
|
||||
NominalConcurrencyShares: nominalConcurrencyShares,
|
||||
LimitResponse: flowcontrolv1beta3.LimitResponse{
|
||||
Type: flowcontrolv1beta3.LimitResponseTypeReject,
|
||||
},
|
||||
}
|
||||
return b
|
||||
@@ -486,8 +486,8 @@ func (b *plBuilder) WithQueuing(queues, handSize, queueLengthLimit int32) *plBui
|
||||
return b
|
||||
}
|
||||
|
||||
limited.LimitResponse.Type = flowcontrolv1beta2.LimitResponseTypeQueue
|
||||
limited.LimitResponse.Queuing = &flowcontrolv1beta2.QueuingConfiguration{
|
||||
limited.LimitResponse.Type = flowcontrolv1beta3.LimitResponseTypeQueue
|
||||
limited.LimitResponse.Queuing = &flowcontrolv1beta3.QueuingConfiguration{
|
||||
Queues: queues,
|
||||
HandSize: handSize,
|
||||
QueueLengthLimit: queueLengthLimit,
|
||||
|
@@ -21,7 +21,7 @@ import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
|
||||
flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
|
||||
flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
|
||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
@@ -177,7 +177,7 @@ func (s *strategy) ShouldUpdate(current, bootstrap configurationObject) (runtime
|
||||
// shouldUpdateSpec inspects the auto-update annotation key and generation field to determine
|
||||
// whether the configurationWrapper object should be auto-updated.
|
||||
func shouldUpdateSpec(accessor metav1.Object) bool {
|
||||
value, _ := accessor.GetAnnotations()[flowcontrolv1beta2.AutoUpdateAnnotationKey]
|
||||
value, _ := accessor.GetAnnotations()[flowcontrolv1beta3.AutoUpdateAnnotationKey]
|
||||
if autoUpdate, err := strconv.ParseBool(value); err == nil {
|
||||
return autoUpdate
|
||||
}
|
||||
@@ -197,7 +197,7 @@ func shouldUpdateSpec(accessor metav1.Object) bool {
|
||||
// shouldUpdateAnnotation determines whether the current value of the auto-update annotation
|
||||
// key matches the desired value.
|
||||
func shouldUpdateAnnotation(accessor metav1.Object, desired bool) bool {
|
||||
if value, ok := accessor.GetAnnotations()[flowcontrolv1beta2.AutoUpdateAnnotationKey]; ok {
|
||||
if value, ok := accessor.GetAnnotations()[flowcontrolv1beta3.AutoUpdateAnnotationKey]; ok {
|
||||
if current, err := strconv.ParseBool(value); err == nil && current == desired {
|
||||
return false
|
||||
}
|
||||
@@ -212,7 +212,7 @@ func setAutoUpdateAnnotation(accessor metav1.Object, autoUpdate bool) {
|
||||
accessor.SetAnnotations(map[string]string{})
|
||||
}
|
||||
|
||||
accessor.GetAnnotations()[flowcontrolv1beta2.AutoUpdateAnnotationKey] = strconv.FormatBool(autoUpdate)
|
||||
accessor.GetAnnotations()[flowcontrolv1beta3.AutoUpdateAnnotationKey] = strconv.FormatBool(autoUpdate)
|
||||
}
|
||||
|
||||
// ensureConfiguration ensures the boostrap configurationWrapper on the cluster based on the specified strategy.
|
||||
@@ -281,7 +281,7 @@ func removeAutoUpdateEnabledConfiguration(wrapper configurationWrapper, name str
|
||||
return fmt.Errorf("failed to retrieve the %s, will retry later name=%q error=%w", wrapper.TypeName(), name, err)
|
||||
}
|
||||
|
||||
value := current.GetAnnotations()[flowcontrolv1beta2.AutoUpdateAnnotationKey]
|
||||
value := current.GetAnnotations()[flowcontrolv1beta3.AutoUpdateAnnotationKey]
|
||||
autoUpdate, err := strconv.ParseBool(value)
|
||||
if err != nil {
|
||||
klog.ErrorS(err, fmt.Sprintf("Skipping deletion of the %s", wrapper.TypeName()), "name", name)
|
||||
@@ -329,7 +329,7 @@ func getDanglingBootstrapObjectNames(bootstrap sets.String, current []metav1.Obj
|
||||
candidates := make([]string, 0)
|
||||
for i := range current {
|
||||
object := current[i]
|
||||
if _, ok := object.GetAnnotations()[flowcontrolv1beta2.AutoUpdateAnnotationKey]; !ok {
|
||||
if _, ok := object.GetAnnotations()[flowcontrolv1beta3.AutoUpdateAnnotationKey]; !ok {
|
||||
// the configuration object does not have the annotation key,
|
||||
// it's probably a user defined configuration object,
|
||||
// so we can skip it.
|
||||
|
@@ -56,6 +56,9 @@ func (flowSchemaStrategy) GetResetFields() map[fieldpath.APIVersion]*fieldpath.S
|
||||
"flowcontrol.apiserver.k8s.io/v1beta2": fieldpath.NewSet(
|
||||
fieldpath.MakePathOrDie("status"),
|
||||
),
|
||||
"flowcontrol.apiserver.k8s.io/v1beta3": fieldpath.NewSet(
|
||||
fieldpath.MakePathOrDie("status"),
|
||||
),
|
||||
}
|
||||
|
||||
return fields
|
||||
@@ -136,6 +139,10 @@ func (flowSchemaStatusStrategy) GetResetFields() map[fieldpath.APIVersion]*field
|
||||
fieldpath.MakePathOrDie("metadata"),
|
||||
fieldpath.MakePathOrDie("spec"),
|
||||
),
|
||||
"flowcontrol.apiserver.k8s.io/v1beta3": fieldpath.NewSet(
|
||||
fieldpath.MakePathOrDie("metadata"),
|
||||
fieldpath.MakePathOrDie("spec"),
|
||||
),
|
||||
}
|
||||
|
||||
return fields
|
||||
|
@@ -21,7 +21,9 @@ import (
|
||||
|
||||
apiequality "k8s.io/apimachinery/pkg/api/equality"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
||||
"k8s.io/apiserver/pkg/storage/names"
|
||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||
"k8s.io/kubernetes/pkg/apis/flowcontrol"
|
||||
@@ -56,6 +58,9 @@ func (priorityLevelConfigurationStrategy) GetResetFields() map[fieldpath.APIVers
|
||||
"flowcontrol.apiserver.k8s.io/v1beta2": fieldpath.NewSet(
|
||||
fieldpath.MakePathOrDie("status"),
|
||||
),
|
||||
"flowcontrol.apiserver.k8s.io/v1beta3": fieldpath.NewSet(
|
||||
fieldpath.MakePathOrDie("status"),
|
||||
),
|
||||
}
|
||||
|
||||
return fields
|
||||
@@ -82,7 +87,7 @@ func (priorityLevelConfigurationStrategy) PrepareForUpdate(ctx context.Context,
|
||||
|
||||
// Validate validates a new priority-level.
|
||||
func (priorityLevelConfigurationStrategy) Validate(ctx context.Context, obj runtime.Object) field.ErrorList {
|
||||
return validation.ValidatePriorityLevelConfiguration(obj.(*flowcontrol.PriorityLevelConfiguration))
|
||||
return validation.ValidatePriorityLevelConfiguration(obj.(*flowcontrol.PriorityLevelConfiguration), getRequestGroupVersion(ctx))
|
||||
}
|
||||
|
||||
// WarningsOnCreate returns warnings for the creation of the given object.
|
||||
@@ -105,7 +110,7 @@ func (priorityLevelConfigurationStrategy) AllowCreateOnUpdate() bool {
|
||||
|
||||
// ValidateUpdate is the default update validation for an end user.
|
||||
func (priorityLevelConfigurationStrategy) ValidateUpdate(ctx context.Context, obj, old runtime.Object) field.ErrorList {
|
||||
return validation.ValidatePriorityLevelConfiguration(obj.(*flowcontrol.PriorityLevelConfiguration))
|
||||
return validation.ValidatePriorityLevelConfiguration(obj.(*flowcontrol.PriorityLevelConfiguration), getRequestGroupVersion(ctx))
|
||||
}
|
||||
|
||||
// WarningsOnUpdate returns warnings for the given update.
|
||||
@@ -136,6 +141,10 @@ func (priorityLevelConfigurationStatusStrategy) GetResetFields() map[fieldpath.A
|
||||
fieldpath.MakePathOrDie("spec"),
|
||||
fieldpath.MakePathOrDie("metadata"),
|
||||
),
|
||||
"flowcontrol.apiserver.k8s.io/v1beta3": fieldpath.NewSet(
|
||||
fieldpath.MakePathOrDie("spec"),
|
||||
fieldpath.MakePathOrDie("metadata"),
|
||||
),
|
||||
}
|
||||
|
||||
return fields
|
||||
@@ -161,3 +170,10 @@ func (priorityLevelConfigurationStatusStrategy) ValidateUpdate(ctx context.Conte
|
||||
func (priorityLevelConfigurationStatusStrategy) WarningsOnUpdate(ctx context.Context, obj, old runtime.Object) []string {
|
||||
return nil
|
||||
}
|
||||
|
||||
func getRequestGroupVersion(ctx context.Context) schema.GroupVersion {
|
||||
if requestInfo, exists := genericapirequest.RequestInfoFrom(ctx); exists {
|
||||
return schema.GroupVersion{Group: requestInfo.APIGroup, Version: requestInfo.APIVersion}
|
||||
}
|
||||
return schema.GroupVersion{}
|
||||
}
|
||||
|
@@ -29,8 +29,8 @@ import (
|
||||
genericapiserver "k8s.io/apiserver/pkg/server"
|
||||
serverstorage "k8s.io/apiserver/pkg/server/storage"
|
||||
"k8s.io/client-go/informers"
|
||||
flowcontrolclient "k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2"
|
||||
flowcontrollisters "k8s.io/client-go/listers/flowcontrol/v1beta2"
|
||||
flowcontrolclient "k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta3"
|
||||
flowcontrollisters "k8s.io/client-go/listers/flowcontrol/v1beta3"
|
||||
"k8s.io/client-go/tools/cache"
|
||||
"k8s.io/klog/v2"
|
||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||
@@ -38,6 +38,7 @@ import (
|
||||
flowcontrolapisv1alpha1 "k8s.io/kubernetes/pkg/apis/flowcontrol/v1alpha1"
|
||||
flowcontrolapisv1beta1 "k8s.io/kubernetes/pkg/apis/flowcontrol/v1beta1"
|
||||
flowcontrolapisv1beta2 "k8s.io/kubernetes/pkg/apis/flowcontrol/v1beta2"
|
||||
flowcontrolapisv1beta3 "k8s.io/kubernetes/pkg/apis/flowcontrol/v1beta3"
|
||||
"k8s.io/kubernetes/pkg/registry/flowcontrol/ensurer"
|
||||
flowschemastore "k8s.io/kubernetes/pkg/registry/flowcontrol/flowschema/storage"
|
||||
prioritylevelconfigurationstore "k8s.io/kubernetes/pkg/registry/flowcontrol/prioritylevelconfiguration/storage"
|
||||
@@ -75,6 +76,12 @@ func (p RESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorag
|
||||
apiGroupInfo.VersionedResourcesStorageMap[flowcontrolapisv1beta2.SchemeGroupVersion.Version] = storageMap
|
||||
}
|
||||
|
||||
if storageMap, err := p.storage(apiResourceConfigSource, restOptionsGetter, flowcontrolapisv1beta3.SchemeGroupVersion); err != nil {
|
||||
return genericapiserver.APIGroupInfo{}, err
|
||||
} else if len(storageMap) > 0 {
|
||||
apiGroupInfo.VersionedResourcesStorageMap[flowcontrolapisv1beta3.SchemeGroupVersion.Version] = storageMap
|
||||
}
|
||||
|
||||
return apiGroupInfo, nil
|
||||
}
|
||||
|
||||
@@ -113,11 +120,11 @@ func (p RESTStorageProvider) GroupName() string {
|
||||
func (p RESTStorageProvider) PostStartHook() (string, genericapiserver.PostStartHookFunc, error) {
|
||||
bce := &bootstrapConfigurationEnsurer{
|
||||
informersSynced: []cache.InformerSynced{
|
||||
p.InformerFactory.Flowcontrol().V1beta2().PriorityLevelConfigurations().Informer().HasSynced,
|
||||
p.InformerFactory.Flowcontrol().V1beta2().FlowSchemas().Informer().HasSynced,
|
||||
p.InformerFactory.Flowcontrol().V1beta3().PriorityLevelConfigurations().Informer().HasSynced,
|
||||
p.InformerFactory.Flowcontrol().V1beta3().FlowSchemas().Informer().HasSynced,
|
||||
},
|
||||
fsLister: p.InformerFactory.Flowcontrol().V1beta2().FlowSchemas().Lister(),
|
||||
plcLister: p.InformerFactory.Flowcontrol().V1beta2().PriorityLevelConfigurations().Lister(),
|
||||
fsLister: p.InformerFactory.Flowcontrol().V1beta3().FlowSchemas().Lister(),
|
||||
plcLister: p.InformerFactory.Flowcontrol().V1beta3().PriorityLevelConfigurations().Lister(),
|
||||
}
|
||||
return PostStartHookName, bce.ensureAPFBootstrapConfiguration, nil
|
||||
}
|
||||
@@ -175,7 +182,7 @@ func (bce *bootstrapConfigurationEnsurer) ensureAPFBootstrapConfiguration(hookCo
|
||||
return nil
|
||||
}
|
||||
|
||||
func ensure(clientset flowcontrolclient.FlowcontrolV1beta2Interface, fsLister flowcontrollisters.FlowSchemaLister, plcLister flowcontrollisters.PriorityLevelConfigurationLister) error {
|
||||
func ensure(clientset flowcontrolclient.FlowcontrolV1beta3Interface, fsLister flowcontrollisters.FlowSchemaLister, plcLister flowcontrollisters.PriorityLevelConfigurationLister) error {
|
||||
if err := ensureSuggestedConfiguration(clientset, fsLister, plcLister); err != nil {
|
||||
// We should not attempt creation of mandatory objects if ensuring the suggested
|
||||
// configuration resulted in an error.
|
||||
@@ -194,7 +201,7 @@ func ensure(clientset flowcontrolclient.FlowcontrolV1beta2Interface, fsLister fl
|
||||
return nil
|
||||
}
|
||||
|
||||
func ensureSuggestedConfiguration(clientset flowcontrolclient.FlowcontrolV1beta2Interface, fsLister flowcontrollisters.FlowSchemaLister, plcLister flowcontrollisters.PriorityLevelConfigurationLister) error {
|
||||
func ensureSuggestedConfiguration(clientset flowcontrolclient.FlowcontrolV1beta3Interface, fsLister flowcontrollisters.FlowSchemaLister, plcLister flowcontrollisters.PriorityLevelConfigurationLister) error {
|
||||
plEnsurer := ensurer.NewSuggestedPriorityLevelEnsurerEnsurer(clientset.PriorityLevelConfigurations(), plcLister)
|
||||
if err := plEnsurer.Ensure(flowcontrolbootstrap.SuggestedPriorityLevelConfigurations); err != nil {
|
||||
return err
|
||||
@@ -204,7 +211,7 @@ func ensureSuggestedConfiguration(clientset flowcontrolclient.FlowcontrolV1beta2
|
||||
return fsEnsurer.Ensure(flowcontrolbootstrap.SuggestedFlowSchemas)
|
||||
}
|
||||
|
||||
func ensureMandatoryConfiguration(clientset flowcontrolclient.FlowcontrolV1beta2Interface, fsLister flowcontrollisters.FlowSchemaLister, plcLister flowcontrollisters.PriorityLevelConfigurationLister) error {
|
||||
func ensureMandatoryConfiguration(clientset flowcontrolclient.FlowcontrolV1beta3Interface, fsLister flowcontrollisters.FlowSchemaLister, plcLister flowcontrollisters.PriorityLevelConfigurationLister) error {
|
||||
fsEnsurer := ensurer.NewMandatoryFlowSchemaEnsurer(clientset.FlowSchemas(), fsLister)
|
||||
if err := fsEnsurer.Ensure(flowcontrolbootstrap.MandatoryFlowSchemas); err != nil {
|
||||
return err
|
||||
@@ -214,7 +221,7 @@ func ensureMandatoryConfiguration(clientset flowcontrolclient.FlowcontrolV1beta2
|
||||
return plEnsurer.Ensure(flowcontrolbootstrap.MandatoryPriorityLevelConfigurations)
|
||||
}
|
||||
|
||||
func removeDanglingBootstrapConfiguration(clientset flowcontrolclient.FlowcontrolV1beta2Interface, fsLister flowcontrollisters.FlowSchemaLister, plcLister flowcontrollisters.PriorityLevelConfigurationLister) error {
|
||||
func removeDanglingBootstrapConfiguration(clientset flowcontrolclient.FlowcontrolV1beta3Interface, fsLister flowcontrollisters.FlowSchemaLister, plcLister flowcontrollisters.PriorityLevelConfigurationLister) error {
|
||||
if err := removeDanglingBootstrapFlowSchema(clientset.FlowSchemas(), fsLister); err != nil {
|
||||
return err
|
||||
}
|
||||
|
Reference in New Issue
Block a user