mirror of https://github.com/k3s-io/k3s
Merge pull request #21865 from piosz/cluster-autoscaling-cleanup
Cluster autoscaling cleanuppull/6/head
commit
f5a92cc13c
|
@ -47,8 +47,6 @@ func AddToScheme(scheme *runtime.Scheme) {
|
|||
func addKnownTypes(scheme *runtime.Scheme) {
|
||||
// TODO this gets cleaned up when the types are fixed
|
||||
scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
&ClusterAutoscaler{},
|
||||
&ClusterAutoscalerList{},
|
||||
&Deployment{},
|
||||
&DeploymentList{},
|
||||
&DeploymentRollback{},
|
||||
|
@ -75,8 +73,6 @@ func addKnownTypes(scheme *runtime.Scheme) {
|
|||
)
|
||||
}
|
||||
|
||||
func (obj *ClusterAutoscaler) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta }
|
||||
func (obj *ClusterAutoscalerList) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta }
|
||||
func (obj *Deployment) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta }
|
||||
func (obj *DeploymentList) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta }
|
||||
func (obj *DeploymentRollback) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta }
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -768,67 +768,6 @@ type IngressBackend struct {
|
|||
ServicePort intstr.IntOrString `json:"servicePort"`
|
||||
}
|
||||
|
||||
type NodeResource string
|
||||
|
||||
const (
|
||||
// Percentage of node's CPUs that is currently used.
|
||||
CpuConsumption NodeResource = "CpuConsumption"
|
||||
|
||||
// Percentage of node's CPUs that is currently requested for pods.
|
||||
CpuRequest NodeResource = "CpuRequest"
|
||||
|
||||
// Percentage od node's memory that is currently used.
|
||||
MemConsumption NodeResource = "MemConsumption"
|
||||
|
||||
// Percentage of node's CPUs that is currently requested for pods.
|
||||
MemRequest NodeResource = "MemRequest"
|
||||
)
|
||||
|
||||
// NodeUtilization describes what percentage of a particular resource is used on a node.
|
||||
type NodeUtilization struct {
|
||||
Resource NodeResource `json:"resource"`
|
||||
|
||||
// The accepted values are from 0 to 1.
|
||||
Value float64 `json:"value"`
|
||||
}
|
||||
|
||||
// Configuration of the Cluster Autoscaler
|
||||
type ClusterAutoscalerSpec struct {
|
||||
// Minimum number of nodes that the cluster should have.
|
||||
MinNodes int `json:"minNodes"`
|
||||
|
||||
// Maximum number of nodes that the cluster should have.
|
||||
MaxNodes int `json:"maxNodes"`
|
||||
|
||||
// Target average utilization of the cluster nodes. New nodes will be added if one of the
|
||||
// targets is exceeded. Cluster size will be decreased if the current utilization is too low
|
||||
// for all targets.
|
||||
TargetUtilization []NodeUtilization `json:"target"`
|
||||
}
|
||||
|
||||
type ClusterAutoscaler struct {
|
||||
unversioned.TypeMeta `json:",inline"`
|
||||
|
||||
// Standard object's metadata.
|
||||
// More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
|
||||
// For now (experimental api) it is required that the name is set to "ClusterAutoscaler" and namespace is "default".
|
||||
api.ObjectMeta `json:"metadata,omitempty"`
|
||||
|
||||
// Spec defines the desired behavior of this daemon set.
|
||||
// More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
|
||||
Spec ClusterAutoscalerSpec `json:"spec,omitempty"`
|
||||
}
|
||||
|
||||
// There will be just one (or none) ClusterAutoscaler.
|
||||
type ClusterAutoscalerList struct {
|
||||
unversioned.TypeMeta `json:",inline"`
|
||||
// Standard object's metadata.
|
||||
// More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
|
||||
unversioned.ListMeta `json:"metadata,omitempty"`
|
||||
|
||||
Items []ClusterAutoscaler `json:"items"`
|
||||
}
|
||||
|
||||
// +genclient=true
|
||||
|
||||
// ReplicaSet represents the configuration of a replica set.
|
||||
|
|
|
@ -2700,76 +2700,6 @@ func Convert_extensions_CPUTargetUtilization_To_v1beta1_CPUTargetUtilization(in
|
|||
return autoConvert_extensions_CPUTargetUtilization_To_v1beta1_CPUTargetUtilization(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_extensions_ClusterAutoscaler_To_v1beta1_ClusterAutoscaler(in *extensions.ClusterAutoscaler, out *ClusterAutoscaler, s conversion.Scope) error {
|
||||
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
|
||||
defaulting.(func(*extensions.ClusterAutoscaler))(in)
|
||||
}
|
||||
if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := Convert_extensions_ClusterAutoscalerSpec_To_v1beta1_ClusterAutoscalerSpec(&in.Spec, &out.Spec, s); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func Convert_extensions_ClusterAutoscaler_To_v1beta1_ClusterAutoscaler(in *extensions.ClusterAutoscaler, out *ClusterAutoscaler, s conversion.Scope) error {
|
||||
return autoConvert_extensions_ClusterAutoscaler_To_v1beta1_ClusterAutoscaler(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_extensions_ClusterAutoscalerList_To_v1beta1_ClusterAutoscalerList(in *extensions.ClusterAutoscalerList, out *ClusterAutoscalerList, s conversion.Scope) error {
|
||||
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
|
||||
defaulting.(func(*extensions.ClusterAutoscalerList))(in)
|
||||
}
|
||||
if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil {
|
||||
return err
|
||||
}
|
||||
if in.Items != nil {
|
||||
out.Items = make([]ClusterAutoscaler, len(in.Items))
|
||||
for i := range in.Items {
|
||||
if err := Convert_extensions_ClusterAutoscaler_To_v1beta1_ClusterAutoscaler(&in.Items[i], &out.Items[i], s); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else {
|
||||
out.Items = nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func Convert_extensions_ClusterAutoscalerList_To_v1beta1_ClusterAutoscalerList(in *extensions.ClusterAutoscalerList, out *ClusterAutoscalerList, s conversion.Scope) error {
|
||||
return autoConvert_extensions_ClusterAutoscalerList_To_v1beta1_ClusterAutoscalerList(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_extensions_ClusterAutoscalerSpec_To_v1beta1_ClusterAutoscalerSpec(in *extensions.ClusterAutoscalerSpec, out *ClusterAutoscalerSpec, s conversion.Scope) error {
|
||||
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
|
||||
defaulting.(func(*extensions.ClusterAutoscalerSpec))(in)
|
||||
}
|
||||
out.MinNodes = int32(in.MinNodes)
|
||||
out.MaxNodes = int32(in.MaxNodes)
|
||||
if in.TargetUtilization != nil {
|
||||
out.TargetUtilization = make([]NodeUtilization, len(in.TargetUtilization))
|
||||
for i := range in.TargetUtilization {
|
||||
if err := Convert_extensions_NodeUtilization_To_v1beta1_NodeUtilization(&in.TargetUtilization[i], &out.TargetUtilization[i], s); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else {
|
||||
out.TargetUtilization = nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func Convert_extensions_ClusterAutoscalerSpec_To_v1beta1_ClusterAutoscalerSpec(in *extensions.ClusterAutoscalerSpec, out *ClusterAutoscalerSpec, s conversion.Scope) error {
|
||||
return autoConvert_extensions_ClusterAutoscalerSpec_To_v1beta1_ClusterAutoscalerSpec(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_extensions_DaemonSet_To_v1beta1_DaemonSet(in *extensions.DaemonSet, out *DaemonSet, s conversion.Scope) error {
|
||||
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
|
||||
defaulting.(func(*extensions.DaemonSet))(in)
|
||||
|
@ -3509,19 +3439,6 @@ func Convert_extensions_JobStatus_To_v1beta1_JobStatus(in *extensions.JobStatus,
|
|||
return autoConvert_extensions_JobStatus_To_v1beta1_JobStatus(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_extensions_NodeUtilization_To_v1beta1_NodeUtilization(in *extensions.NodeUtilization, out *NodeUtilization, s conversion.Scope) error {
|
||||
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
|
||||
defaulting.(func(*extensions.NodeUtilization))(in)
|
||||
}
|
||||
out.Resource = NodeResource(in.Resource)
|
||||
out.Value = in.Value
|
||||
return nil
|
||||
}
|
||||
|
||||
func Convert_extensions_NodeUtilization_To_v1beta1_NodeUtilization(in *extensions.NodeUtilization, out *NodeUtilization, s conversion.Scope) error {
|
||||
return autoConvert_extensions_NodeUtilization_To_v1beta1_NodeUtilization(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_extensions_PodSecurityPolicy_To_v1beta1_PodSecurityPolicy(in *extensions.PodSecurityPolicy, out *PodSecurityPolicy, s conversion.Scope) error {
|
||||
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
|
||||
defaulting.(func(*extensions.PodSecurityPolicy))(in)
|
||||
|
@ -3986,76 +3903,6 @@ func Convert_v1beta1_CPUTargetUtilization_To_extensions_CPUTargetUtilization(in
|
|||
return autoConvert_v1beta1_CPUTargetUtilization_To_extensions_CPUTargetUtilization(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta1_ClusterAutoscaler_To_extensions_ClusterAutoscaler(in *ClusterAutoscaler, out *extensions.ClusterAutoscaler, s conversion.Scope) error {
|
||||
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
|
||||
defaulting.(func(*ClusterAutoscaler))(in)
|
||||
}
|
||||
if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := Convert_v1beta1_ClusterAutoscalerSpec_To_extensions_ClusterAutoscalerSpec(&in.Spec, &out.Spec, s); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func Convert_v1beta1_ClusterAutoscaler_To_extensions_ClusterAutoscaler(in *ClusterAutoscaler, out *extensions.ClusterAutoscaler, s conversion.Scope) error {
|
||||
return autoConvert_v1beta1_ClusterAutoscaler_To_extensions_ClusterAutoscaler(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta1_ClusterAutoscalerList_To_extensions_ClusterAutoscalerList(in *ClusterAutoscalerList, out *extensions.ClusterAutoscalerList, s conversion.Scope) error {
|
||||
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
|
||||
defaulting.(func(*ClusterAutoscalerList))(in)
|
||||
}
|
||||
if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil {
|
||||
return err
|
||||
}
|
||||
if in.Items != nil {
|
||||
out.Items = make([]extensions.ClusterAutoscaler, len(in.Items))
|
||||
for i := range in.Items {
|
||||
if err := Convert_v1beta1_ClusterAutoscaler_To_extensions_ClusterAutoscaler(&in.Items[i], &out.Items[i], s); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else {
|
||||
out.Items = nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func Convert_v1beta1_ClusterAutoscalerList_To_extensions_ClusterAutoscalerList(in *ClusterAutoscalerList, out *extensions.ClusterAutoscalerList, s conversion.Scope) error {
|
||||
return autoConvert_v1beta1_ClusterAutoscalerList_To_extensions_ClusterAutoscalerList(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta1_ClusterAutoscalerSpec_To_extensions_ClusterAutoscalerSpec(in *ClusterAutoscalerSpec, out *extensions.ClusterAutoscalerSpec, s conversion.Scope) error {
|
||||
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
|
||||
defaulting.(func(*ClusterAutoscalerSpec))(in)
|
||||
}
|
||||
out.MinNodes = int(in.MinNodes)
|
||||
out.MaxNodes = int(in.MaxNodes)
|
||||
if in.TargetUtilization != nil {
|
||||
out.TargetUtilization = make([]extensions.NodeUtilization, len(in.TargetUtilization))
|
||||
for i := range in.TargetUtilization {
|
||||
if err := Convert_v1beta1_NodeUtilization_To_extensions_NodeUtilization(&in.TargetUtilization[i], &out.TargetUtilization[i], s); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else {
|
||||
out.TargetUtilization = nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func Convert_v1beta1_ClusterAutoscalerSpec_To_extensions_ClusterAutoscalerSpec(in *ClusterAutoscalerSpec, out *extensions.ClusterAutoscalerSpec, s conversion.Scope) error {
|
||||
return autoConvert_v1beta1_ClusterAutoscalerSpec_To_extensions_ClusterAutoscalerSpec(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta1_DaemonSet_To_extensions_DaemonSet(in *DaemonSet, out *extensions.DaemonSet, s conversion.Scope) error {
|
||||
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
|
||||
defaulting.(func(*DaemonSet))(in)
|
||||
|
@ -4854,19 +4701,6 @@ func Convert_v1beta1_ListOptions_To_api_ListOptions(in *ListOptions, out *api.Li
|
|||
return autoConvert_v1beta1_ListOptions_To_api_ListOptions(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta1_NodeUtilization_To_extensions_NodeUtilization(in *NodeUtilization, out *extensions.NodeUtilization, s conversion.Scope) error {
|
||||
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
|
||||
defaulting.(func(*NodeUtilization))(in)
|
||||
}
|
||||
out.Resource = extensions.NodeResource(in.Resource)
|
||||
out.Value = in.Value
|
||||
return nil
|
||||
}
|
||||
|
||||
func Convert_v1beta1_NodeUtilization_To_extensions_NodeUtilization(in *NodeUtilization, out *extensions.NodeUtilization, s conversion.Scope) error {
|
||||
return autoConvert_v1beta1_NodeUtilization_To_extensions_NodeUtilization(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_v1beta1_PodSecurityPolicy_To_extensions_PodSecurityPolicy(in *PodSecurityPolicy, out *extensions.PodSecurityPolicy, s conversion.Scope) error {
|
||||
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
|
||||
defaulting.(func(*PodSecurityPolicy))(in)
|
||||
|
@ -5353,9 +5187,6 @@ func init() {
|
|||
autoConvert_api_Volume_To_v1_Volume,
|
||||
autoConvert_extensions_APIVersion_To_v1beta1_APIVersion,
|
||||
autoConvert_extensions_CPUTargetUtilization_To_v1beta1_CPUTargetUtilization,
|
||||
autoConvert_extensions_ClusterAutoscalerList_To_v1beta1_ClusterAutoscalerList,
|
||||
autoConvert_extensions_ClusterAutoscalerSpec_To_v1beta1_ClusterAutoscalerSpec,
|
||||
autoConvert_extensions_ClusterAutoscaler_To_v1beta1_ClusterAutoscaler,
|
||||
autoConvert_extensions_DaemonSetList_To_v1beta1_DaemonSetList,
|
||||
autoConvert_extensions_DaemonSetSpec_To_v1beta1_DaemonSetSpec,
|
||||
autoConvert_extensions_DaemonSetStatus_To_v1beta1_DaemonSetStatus,
|
||||
|
@ -5387,7 +5218,6 @@ func init() {
|
|||
autoConvert_extensions_JobSpec_To_v1beta1_JobSpec,
|
||||
autoConvert_extensions_JobStatus_To_v1beta1_JobStatus,
|
||||
autoConvert_extensions_Job_To_v1beta1_Job,
|
||||
autoConvert_extensions_NodeUtilization_To_v1beta1_NodeUtilization,
|
||||
autoConvert_extensions_PodSecurityPolicyList_To_v1beta1_PodSecurityPolicyList,
|
||||
autoConvert_extensions_PodSecurityPolicySpec_To_v1beta1_PodSecurityPolicySpec,
|
||||
autoConvert_extensions_PodSecurityPolicy_To_v1beta1_PodSecurityPolicy,
|
||||
|
@ -5460,9 +5290,6 @@ func init() {
|
|||
autoConvert_v1_Volume_To_api_Volume,
|
||||
autoConvert_v1beta1_APIVersion_To_extensions_APIVersion,
|
||||
autoConvert_v1beta1_CPUTargetUtilization_To_extensions_CPUTargetUtilization,
|
||||
autoConvert_v1beta1_ClusterAutoscalerList_To_extensions_ClusterAutoscalerList,
|
||||
autoConvert_v1beta1_ClusterAutoscalerSpec_To_extensions_ClusterAutoscalerSpec,
|
||||
autoConvert_v1beta1_ClusterAutoscaler_To_extensions_ClusterAutoscaler,
|
||||
autoConvert_v1beta1_DaemonSetList_To_extensions_DaemonSetList,
|
||||
autoConvert_v1beta1_DaemonSetSpec_To_extensions_DaemonSetSpec,
|
||||
autoConvert_v1beta1_DaemonSetStatus_To_extensions_DaemonSetStatus,
|
||||
|
@ -5496,7 +5323,6 @@ func init() {
|
|||
autoConvert_v1beta1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement,
|
||||
autoConvert_v1beta1_LabelSelector_To_unversioned_LabelSelector,
|
||||
autoConvert_v1beta1_ListOptions_To_api_ListOptions,
|
||||
autoConvert_v1beta1_NodeUtilization_To_extensions_NodeUtilization,
|
||||
autoConvert_v1beta1_PodSecurityPolicyList_To_extensions_PodSecurityPolicyList,
|
||||
autoConvert_v1beta1_PodSecurityPolicySpec_To_extensions_PodSecurityPolicySpec,
|
||||
autoConvert_v1beta1_PodSecurityPolicy_To_extensions_PodSecurityPolicy,
|
||||
|
|
|
@ -1030,55 +1030,6 @@ func deepCopy_v1beta1_CPUTargetUtilization(in CPUTargetUtilization, out *CPUTarg
|
|||
return nil
|
||||
}
|
||||
|
||||
func deepCopy_v1beta1_ClusterAutoscaler(in ClusterAutoscaler, out *ClusterAutoscaler, c *conversion.Cloner) error {
|
||||
if err := deepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := deepCopy_v1_ObjectMeta(in.ObjectMeta, &out.ObjectMeta, c); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := deepCopy_v1beta1_ClusterAutoscalerSpec(in.Spec, &out.Spec, c); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func deepCopy_v1beta1_ClusterAutoscalerList(in ClusterAutoscalerList, out *ClusterAutoscalerList, c *conversion.Cloner) error {
|
||||
if err := deepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := deepCopy_unversioned_ListMeta(in.ListMeta, &out.ListMeta, c); err != nil {
|
||||
return err
|
||||
}
|
||||
if in.Items != nil {
|
||||
out.Items = make([]ClusterAutoscaler, len(in.Items))
|
||||
for i := range in.Items {
|
||||
if err := deepCopy_v1beta1_ClusterAutoscaler(in.Items[i], &out.Items[i], c); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else {
|
||||
out.Items = nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func deepCopy_v1beta1_ClusterAutoscalerSpec(in ClusterAutoscalerSpec, out *ClusterAutoscalerSpec, c *conversion.Cloner) error {
|
||||
out.MinNodes = in.MinNodes
|
||||
out.MaxNodes = in.MaxNodes
|
||||
if in.TargetUtilization != nil {
|
||||
out.TargetUtilization = make([]NodeUtilization, len(in.TargetUtilization))
|
||||
for i := range in.TargetUtilization {
|
||||
if err := deepCopy_v1beta1_NodeUtilization(in.TargetUtilization[i], &out.TargetUtilization[i], c); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else {
|
||||
out.TargetUtilization = nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func deepCopy_v1beta1_DaemonSet(in DaemonSet, out *DaemonSet, c *conversion.Cloner) error {
|
||||
if err := deepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil {
|
||||
return err
|
||||
|
@ -1663,12 +1614,6 @@ func deepCopy_v1beta1_ListOptions(in ListOptions, out *ListOptions, c *conversio
|
|||
return nil
|
||||
}
|
||||
|
||||
func deepCopy_v1beta1_NodeUtilization(in NodeUtilization, out *NodeUtilization, c *conversion.Cloner) error {
|
||||
out.Resource = in.Resource
|
||||
out.Value = in.Value
|
||||
return nil
|
||||
}
|
||||
|
||||
func deepCopy_v1beta1_PodSecurityPolicy(in PodSecurityPolicy, out *PodSecurityPolicy, c *conversion.Cloner) error {
|
||||
if err := deepCopy_unversioned_TypeMeta(in.TypeMeta, &out.TypeMeta, c); err != nil {
|
||||
return err
|
||||
|
@ -2055,9 +2000,6 @@ func init() {
|
|||
deepCopy_v1_VolumeSource,
|
||||
deepCopy_v1beta1_APIVersion,
|
||||
deepCopy_v1beta1_CPUTargetUtilization,
|
||||
deepCopy_v1beta1_ClusterAutoscaler,
|
||||
deepCopy_v1beta1_ClusterAutoscalerList,
|
||||
deepCopy_v1beta1_ClusterAutoscalerSpec,
|
||||
deepCopy_v1beta1_DaemonSet,
|
||||
deepCopy_v1beta1_DaemonSetList,
|
||||
deepCopy_v1beta1_DaemonSetSpec,
|
||||
|
@ -2092,7 +2034,6 @@ func init() {
|
|||
deepCopy_v1beta1_LabelSelector,
|
||||
deepCopy_v1beta1_LabelSelectorRequirement,
|
||||
deepCopy_v1beta1_ListOptions,
|
||||
deepCopy_v1beta1_NodeUtilization,
|
||||
deepCopy_v1beta1_PodSecurityPolicy,
|
||||
deepCopy_v1beta1_PodSecurityPolicyList,
|
||||
deepCopy_v1beta1_PodSecurityPolicySpec,
|
||||
|
|
|
@ -37,8 +37,6 @@ func AddToScheme(scheme *runtime.Scheme) {
|
|||
// Adds the list of known types to api.Scheme.
|
||||
func addKnownTypes(scheme *runtime.Scheme) {
|
||||
scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
&ClusterAutoscaler{},
|
||||
&ClusterAutoscalerList{},
|
||||
&Deployment{},
|
||||
&DeploymentList{},
|
||||
&DeploymentRollback{},
|
||||
|
@ -65,8 +63,6 @@ func addKnownTypes(scheme *runtime.Scheme) {
|
|||
)
|
||||
}
|
||||
|
||||
func (obj *ClusterAutoscaler) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta }
|
||||
func (obj *ClusterAutoscalerList) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta }
|
||||
func (obj *Deployment) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta }
|
||||
func (obj *DeploymentList) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta }
|
||||
func (obj *DeploymentRollback) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta }
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -772,67 +772,6 @@ type IngressBackend struct {
|
|||
ServicePort intstr.IntOrString `json:"servicePort"`
|
||||
}
|
||||
|
||||
type NodeResource string
|
||||
|
||||
const (
|
||||
// Percentage of node's CPUs that is currently used.
|
||||
CpuConsumption NodeResource = "CpuConsumption"
|
||||
|
||||
// Percentage of node's CPUs that is currently requested for pods.
|
||||
CpuRequest NodeResource = "CpuRequest"
|
||||
|
||||
// Percentage od node's memory that is currently used.
|
||||
MemConsumption NodeResource = "MemConsumption"
|
||||
|
||||
// Percentage of node's CPUs that is currently requested for pods.
|
||||
MemRequest NodeResource = "MemRequest"
|
||||
)
|
||||
|
||||
// NodeUtilization describes what percentage of a particular resource is used on a node.
|
||||
type NodeUtilization struct {
|
||||
Resource NodeResource `json:"resource"`
|
||||
|
||||
// The accepted values are from 0 to 1.
|
||||
Value float64 `json:"value"`
|
||||
}
|
||||
|
||||
// Configuration of the Cluster Autoscaler
|
||||
type ClusterAutoscalerSpec struct {
|
||||
// Minimum number of nodes that the cluster should have.
|
||||
MinNodes int32 `json:"minNodes"`
|
||||
|
||||
// Maximum number of nodes that the cluster should have.
|
||||
MaxNodes int32 `json:"maxNodes"`
|
||||
|
||||
// Target average utilization of the cluster nodes. New nodes will be added if one of the
|
||||
// targets is exceeded. Cluster size will be decreased if the current utilization is too low
|
||||
// for all targets.
|
||||
TargetUtilization []NodeUtilization `json:"target"`
|
||||
}
|
||||
|
||||
type ClusterAutoscaler struct {
|
||||
unversioned.TypeMeta `json:",inline"`
|
||||
|
||||
// Standard object's metadata.
|
||||
// More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
|
||||
// For now (experimental api) it is required that the name is set to "ClusterAutoscaler" and namespace is "default".
|
||||
v1.ObjectMeta `json:"metadata,omitempty"`
|
||||
|
||||
// Spec defines the desired behavior of this daemon set.
|
||||
// More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status
|
||||
Spec ClusterAutoscalerSpec `json:"spec,omitempty"`
|
||||
}
|
||||
|
||||
// There will be just one (or none) ClusterAutoscaler.
|
||||
type ClusterAutoscalerList struct {
|
||||
unversioned.TypeMeta `json:",inline"`
|
||||
// Standard object's metadata.
|
||||
// More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
|
||||
unversioned.ListMeta `json:"metadata,omitempty"`
|
||||
|
||||
Items []ClusterAutoscaler `json:"items"`
|
||||
}
|
||||
|
||||
// ExportOptions is the query options to the standard REST get call.
|
||||
type ExportOptions struct {
|
||||
unversioned.TypeMeta `json:",inline"`
|
||||
|
|
|
@ -45,35 +45,6 @@ func (CPUTargetUtilization) SwaggerDoc() map[string]string {
|
|||
return map_CPUTargetUtilization
|
||||
}
|
||||
|
||||
var map_ClusterAutoscaler = map[string]string{
|
||||
"metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata For now (experimental api) it is required that the name is set to \"ClusterAutoscaler\" and namespace is \"default\".",
|
||||
"spec": "Spec defines the desired behavior of this daemon set. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status",
|
||||
}
|
||||
|
||||
func (ClusterAutoscaler) SwaggerDoc() map[string]string {
|
||||
return map_ClusterAutoscaler
|
||||
}
|
||||
|
||||
var map_ClusterAutoscalerList = map[string]string{
|
||||
"": "There will be just one (or none) ClusterAutoscaler.",
|
||||
"metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata",
|
||||
}
|
||||
|
||||
func (ClusterAutoscalerList) SwaggerDoc() map[string]string {
|
||||
return map_ClusterAutoscalerList
|
||||
}
|
||||
|
||||
var map_ClusterAutoscalerSpec = map[string]string{
|
||||
"": "Configuration of the Cluster Autoscaler",
|
||||
"minNodes": "Minimum number of nodes that the cluster should have.",
|
||||
"maxNodes": "Maximum number of nodes that the cluster should have.",
|
||||
"target": "Target average utilization of the cluster nodes. New nodes will be added if one of the targets is exceeded. Cluster size will be decreased if the current utilization is too low for all targets.",
|
||||
}
|
||||
|
||||
func (ClusterAutoscalerSpec) SwaggerDoc() map[string]string {
|
||||
return map_ClusterAutoscalerSpec
|
||||
}
|
||||
|
||||
var map_CustomMetricCurrentStatus = map[string]string{
|
||||
"name": "Custom Metric name.",
|
||||
"value": "Custom Metric value (average).",
|
||||
|
@ -476,15 +447,6 @@ func (ListOptions) SwaggerDoc() map[string]string {
|
|||
return map_ListOptions
|
||||
}
|
||||
|
||||
var map_NodeUtilization = map[string]string{
|
||||
"": "NodeUtilization describes what percentage of a particular resource is used on a node.",
|
||||
"value": "The accepted values are from 0 to 1.",
|
||||
}
|
||||
|
||||
func (NodeUtilization) SwaggerDoc() map[string]string {
|
||||
return map_NodeUtilization
|
||||
}
|
||||
|
||||
var map_PodSecurityPolicy = map[string]string{
|
||||
"": "Pod Security Policy governs the ability to make requests that affect the Security Context that will be applied to a pod and container.",
|
||||
"metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata",
|
||||
|
|
|
@ -648,43 +648,6 @@ func validateIngressBackend(backend *extensions.IngressBackend, fldPath *field.P
|
|||
return allErrs
|
||||
}
|
||||
|
||||
func validateClusterAutoscalerSpec(spec extensions.ClusterAutoscalerSpec, fldPath *field.Path) field.ErrorList {
|
||||
allErrs := field.ErrorList{}
|
||||
if spec.MinNodes < 0 {
|
||||
allErrs = append(allErrs, field.Invalid(fldPath.Child("minNodes"), spec.MinNodes, "must be greater than or equal to 0"))
|
||||
}
|
||||
if spec.MaxNodes < spec.MinNodes {
|
||||
allErrs = append(allErrs, field.Invalid(fldPath.Child("maxNodes"), spec.MaxNodes, "must be greater than or equal to `minNodes`"))
|
||||
}
|
||||
if len(spec.TargetUtilization) == 0 {
|
||||
allErrs = append(allErrs, field.Required(fldPath.Child("targetUtilization"), ""))
|
||||
}
|
||||
for _, target := range spec.TargetUtilization {
|
||||
if len(target.Resource) == 0 {
|
||||
allErrs = append(allErrs, field.Required(fldPath.Child("targetUtilization", "resource"), ""))
|
||||
}
|
||||
if target.Value <= 0 {
|
||||
allErrs = append(allErrs, field.Invalid(fldPath.Child("targetUtilization", "value"), target.Value, "must be greater than 0"))
|
||||
}
|
||||
if target.Value > 1 {
|
||||
allErrs = append(allErrs, field.Invalid(fldPath.Child("targetUtilization", "value"), target.Value, "must be less than or equal to 1"))
|
||||
}
|
||||
}
|
||||
return allErrs
|
||||
}
|
||||
|
||||
func ValidateClusterAutoscaler(autoscaler *extensions.ClusterAutoscaler) field.ErrorList {
|
||||
allErrs := field.ErrorList{}
|
||||
if autoscaler.Name != "ClusterAutoscaler" {
|
||||
allErrs = append(allErrs, field.Invalid(field.NewPath("metadata", "name"), autoscaler.Name, "must be 'ClusterAutoscaler'"))
|
||||
}
|
||||
if autoscaler.Namespace != api.NamespaceDefault {
|
||||
allErrs = append(allErrs, field.Invalid(field.NewPath("metadata", "namespace"), autoscaler.Namespace, "must be 'default'"))
|
||||
}
|
||||
allErrs = append(allErrs, validateClusterAutoscalerSpec(autoscaler.Spec, field.NewPath("spec"))...)
|
||||
return allErrs
|
||||
}
|
||||
|
||||
func ValidateScale(scale *extensions.Scale) field.ErrorList {
|
||||
allErrs := field.ErrorList{}
|
||||
allErrs = append(allErrs, apivalidation.ValidateObjectMeta(&scale.ObjectMeta, true, apivalidation.NameIsDNSSubdomain, field.NewPath("metadata"))...)
|
||||
|
|
|
@ -1358,120 +1358,6 @@ func TestValidateIngressStatusUpdate(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestValidateClusterAutoscaler(t *testing.T) {
|
||||
successCases := []extensions.ClusterAutoscaler{
|
||||
{
|
||||
ObjectMeta: api.ObjectMeta{
|
||||
Name: "ClusterAutoscaler",
|
||||
Namespace: api.NamespaceDefault,
|
||||
},
|
||||
Spec: extensions.ClusterAutoscalerSpec{
|
||||
MinNodes: 1,
|
||||
MaxNodes: 5,
|
||||
TargetUtilization: []extensions.NodeUtilization{
|
||||
{
|
||||
Resource: extensions.CpuRequest,
|
||||
Value: 0.7,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, successCase := range successCases {
|
||||
if errs := ValidateClusterAutoscaler(&successCase); len(errs) != 0 {
|
||||
t.Errorf("expected success: %v", errs)
|
||||
}
|
||||
}
|
||||
|
||||
errorCases := map[string]extensions.ClusterAutoscaler{
|
||||
"must be 'ClusterAutoscaler'": {
|
||||
ObjectMeta: api.ObjectMeta{
|
||||
Name: "TestClusterAutoscaler",
|
||||
Namespace: api.NamespaceDefault,
|
||||
},
|
||||
Spec: extensions.ClusterAutoscalerSpec{
|
||||
MinNodes: 1,
|
||||
MaxNodes: 5,
|
||||
TargetUtilization: []extensions.NodeUtilization{
|
||||
{
|
||||
Resource: extensions.CpuRequest,
|
||||
Value: 0.7,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
"must be 'default'": {
|
||||
ObjectMeta: api.ObjectMeta{
|
||||
Name: "ClusterAutoscaler",
|
||||
Namespace: "test",
|
||||
},
|
||||
Spec: extensions.ClusterAutoscalerSpec{
|
||||
MinNodes: 1,
|
||||
MaxNodes: 5,
|
||||
TargetUtilization: []extensions.NodeUtilization{
|
||||
{
|
||||
Resource: extensions.CpuRequest,
|
||||
Value: 0.7,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
`must be greater than or equal to 0`: {
|
||||
ObjectMeta: api.ObjectMeta{
|
||||
Name: "ClusterAutoscaler",
|
||||
Namespace: api.NamespaceDefault,
|
||||
},
|
||||
Spec: extensions.ClusterAutoscalerSpec{
|
||||
MinNodes: -1,
|
||||
MaxNodes: 5,
|
||||
TargetUtilization: []extensions.NodeUtilization{
|
||||
{
|
||||
Resource: extensions.CpuRequest,
|
||||
Value: 0.7,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
"must be greater than or equal to `minNodes`": {
|
||||
ObjectMeta: api.ObjectMeta{
|
||||
Name: "ClusterAutoscaler",
|
||||
Namespace: api.NamespaceDefault,
|
||||
},
|
||||
Spec: extensions.ClusterAutoscalerSpec{
|
||||
MinNodes: 10,
|
||||
MaxNodes: 5,
|
||||
TargetUtilization: []extensions.NodeUtilization{
|
||||
{
|
||||
Resource: extensions.CpuRequest,
|
||||
Value: 0.7,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
"Required value": {
|
||||
ObjectMeta: api.ObjectMeta{
|
||||
Name: "ClusterAutoscaler",
|
||||
Namespace: api.NamespaceDefault,
|
||||
},
|
||||
Spec: extensions.ClusterAutoscalerSpec{
|
||||
MinNodes: 1,
|
||||
MaxNodes: 5,
|
||||
TargetUtilization: []extensions.NodeUtilization{},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for k, v := range errorCases {
|
||||
errs := ValidateClusterAutoscaler(&v)
|
||||
if len(errs) == 0 {
|
||||
t.Errorf("[%s] expected failure", k)
|
||||
} else if !strings.Contains(errs[0].Error(), k) {
|
||||
t.Errorf("unexpected error: %v, expected: %q", errs[0], k)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestValidateScale(t *testing.T) {
|
||||
successCases := []extensions.Scale{
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue