Move autoscaling options out of static
This commit is contained in:
parent
03d18e9508
commit
0976d2aa07
|
|
@ -25,7 +25,7 @@ import (
|
|||
"k8s.io/autoscaler/cluster-autoscaler/cloudprovider/azure"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/cloudprovider/gce"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/cloudprovider/kubemark"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config/static"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config"
|
||||
"k8s.io/client-go/informers"
|
||||
kubeclient "k8s.io/client-go/kubernetes"
|
||||
"k8s.io/client-go/rest"
|
||||
|
|
@ -48,7 +48,7 @@ var AvailableCloudProviders = []string{
|
|||
const DefaultCloudProvider = gce.ProviderNameGCE
|
||||
|
||||
// NewCloudProvider builds a cloud provider from provided parameters.
|
||||
func NewCloudProvider(opts static.AutoscalingOptions, do cloudprovider.NodeGroupDiscoveryOptions, rl *cloudprovider.ResourceLimiter) cloudprovider.CloudProvider {
|
||||
func NewCloudProvider(opts config.AutoscalingOptions, do cloudprovider.NodeGroupDiscoveryOptions, rl *cloudprovider.ResourceLimiter) cloudprovider.CloudProvider {
|
||||
glog.V(1).Infof("Building %s cloud provider.", opts.CloudProviderName)
|
||||
switch opts.CloudProviderName {
|
||||
case gce.ProviderNameGCE:
|
||||
|
|
@ -78,7 +78,7 @@ func NewCloudProvider(opts static.AutoscalingOptions, do cloudprovider.NodeGroup
|
|||
return nil // This will never happen because the Fatalf will os.Exit
|
||||
}
|
||||
|
||||
func buildGCE(opts static.AutoscalingOptions, do cloudprovider.NodeGroupDiscoveryOptions, rl *cloudprovider.ResourceLimiter, mode gce.GcpCloudProviderMode) cloudprovider.CloudProvider {
|
||||
func buildGCE(opts config.AutoscalingOptions, do cloudprovider.NodeGroupDiscoveryOptions, rl *cloudprovider.ResourceLimiter, mode gce.GcpCloudProviderMode) cloudprovider.CloudProvider {
|
||||
var config io.ReadCloser
|
||||
if opts.CloudConfig != "" {
|
||||
var err error
|
||||
|
|
@ -101,7 +101,7 @@ func buildGCE(opts static.AutoscalingOptions, do cloudprovider.NodeGroupDiscover
|
|||
return provider
|
||||
}
|
||||
|
||||
func buildAWS(opts static.AutoscalingOptions, do cloudprovider.NodeGroupDiscoveryOptions, rl *cloudprovider.ResourceLimiter) cloudprovider.CloudProvider {
|
||||
func buildAWS(opts config.AutoscalingOptions, do cloudprovider.NodeGroupDiscoveryOptions, rl *cloudprovider.ResourceLimiter) cloudprovider.CloudProvider {
|
||||
var config io.ReadCloser
|
||||
if opts.CloudConfig != "" {
|
||||
var err error
|
||||
|
|
@ -124,7 +124,7 @@ func buildAWS(opts static.AutoscalingOptions, do cloudprovider.NodeGroupDiscover
|
|||
return provider
|
||||
}
|
||||
|
||||
func buildAzure(opts static.AutoscalingOptions, do cloudprovider.NodeGroupDiscoveryOptions, rl *cloudprovider.ResourceLimiter) cloudprovider.CloudProvider {
|
||||
func buildAzure(opts config.AutoscalingOptions, do cloudprovider.NodeGroupDiscoveryOptions, rl *cloudprovider.ResourceLimiter) cloudprovider.CloudProvider {
|
||||
var config io.ReadCloser
|
||||
if opts.CloudConfig != "" {
|
||||
glog.Info("Creating Azure Manager using cloud-config file: %v", opts.CloudConfig)
|
||||
|
|
@ -148,7 +148,7 @@ func buildAzure(opts static.AutoscalingOptions, do cloudprovider.NodeGroupDiscov
|
|||
return provider
|
||||
}
|
||||
|
||||
func buildKubemark(opts static.AutoscalingOptions, do cloudprovider.NodeGroupDiscoveryOptions, rl *cloudprovider.ResourceLimiter) cloudprovider.CloudProvider {
|
||||
func buildKubemark(opts config.AutoscalingOptions, do cloudprovider.NodeGroupDiscoveryOptions, rl *cloudprovider.ResourceLimiter) cloudprovider.CloudProvider {
|
||||
externalConfig, err := rest.InClusterConfig()
|
||||
if err != nil {
|
||||
glog.Fatalf("Failed to get kubeclient config for external cluster: %v", err)
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
package static
|
||||
package config
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
|
@ -20,7 +20,7 @@ import (
|
|||
"k8s.io/autoscaler/cluster-autoscaler/cloudprovider"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/cloudprovider/builder"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/clusterstate/utils"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config/static"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/expander"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/expander/factory"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/simulator"
|
||||
|
|
@ -34,7 +34,7 @@ import (
|
|||
// scale up/scale down functions.
|
||||
type AutoscalingContext struct {
|
||||
// Options to customize how autoscaling works
|
||||
static.AutoscalingOptions
|
||||
config.AutoscalingOptions
|
||||
// CloudProvider used in CA.
|
||||
CloudProvider cloudprovider.CloudProvider
|
||||
// ClientSet interface.
|
||||
|
|
@ -52,7 +52,7 @@ type AutoscalingContext struct {
|
|||
|
||||
// NewResourceLimiterFromAutoscalingOptions creates new instance of cloudprovider.ResourceLimiter
|
||||
// reading limits from AutoscalingOptions struct.
|
||||
func NewResourceLimiterFromAutoscalingOptions(options static.AutoscalingOptions) *cloudprovider.ResourceLimiter {
|
||||
func NewResourceLimiterFromAutoscalingOptions(options config.AutoscalingOptions) *cloudprovider.ResourceLimiter {
|
||||
// build min/max maps for resources limits
|
||||
minResources := make(map[string]int64)
|
||||
maxResources := make(map[string]int64)
|
||||
|
|
@ -70,7 +70,7 @@ func NewResourceLimiterFromAutoscalingOptions(options static.AutoscalingOptions)
|
|||
}
|
||||
|
||||
// NewAutoscalingContext returns an autoscaling context from all the necessary parameters passed via arguments
|
||||
func NewAutoscalingContext(options static.AutoscalingOptions, predicateChecker *simulator.PredicateChecker,
|
||||
func NewAutoscalingContext(options config.AutoscalingOptions, predicateChecker *simulator.PredicateChecker,
|
||||
kubeClient kube_client.Interface, kubeEventRecorder kube_record.EventRecorder,
|
||||
logEventRecorder *utils.LogEventRecorder, listerRegistry kube_util.ListerRegistry) (*AutoscalingContext, errors.AutoscalerError) {
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ import (
|
|||
"testing"
|
||||
|
||||
"k8s.io/autoscaler/cluster-autoscaler/clusterstate/utils"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config/static"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/expander"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/simulator"
|
||||
kube_util "k8s.io/autoscaler/cluster-autoscaler/utils/kubernetes"
|
||||
|
|
@ -36,7 +36,7 @@ func TestNewAutoscalingContext(t *testing.T) {
|
|||
fakeLogRecorder, _ := utils.NewStatusMapRecorder(fakeClient, "kube-system", kube_record.NewFakeRecorder(5), false)
|
||||
|
||||
autoscalingContext, err := NewAutoscalingContext(
|
||||
static.AutoscalingOptions{
|
||||
config.AutoscalingOptions{
|
||||
ExpanderName: expander.RandomExpanderName,
|
||||
MaxCoresTotal: 10,
|
||||
MinCoresTotal: 1,
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ package core
|
|||
import (
|
||||
"time"
|
||||
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config/static"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config"
|
||||
ca_processors "k8s.io/autoscaler/cluster-autoscaler/processors"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/simulator"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/utils/errors"
|
||||
|
|
@ -30,7 +30,7 @@ import (
|
|||
|
||||
// AutoscalerOptions is the whole set of options for configuring an autoscaler
|
||||
type AutoscalerOptions struct {
|
||||
static.AutoscalingOptions
|
||||
config.AutoscalingOptions
|
||||
KubeClient kube_client.Interface
|
||||
KubeEventRecorder kube_record.EventRecorder
|
||||
PredicateChecker *simulator.PredicateChecker
|
||||
|
|
|
|||
|
|
@ -32,7 +32,6 @@ import (
|
|||
"k8s.io/autoscaler/cluster-autoscaler/clusterstate"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/clusterstate/utils"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config/static"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/context"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/simulator"
|
||||
kube_util "k8s.io/autoscaler/cluster-autoscaler/utils/kubernetes"
|
||||
|
|
@ -127,7 +126,7 @@ func TestFindUnneededNodes(t *testing.T) {
|
|||
provider.AddNode("ng1", n9)
|
||||
|
||||
context := context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
ScaleDownUtilizationThreshold: 0.35,
|
||||
ExpendablePodsPriorityCutoff: 10,
|
||||
UnremovableNodeRecheckTimeout: 5 * time.Minute,
|
||||
|
|
@ -247,7 +246,7 @@ func TestPodsWithPrioritiesFindUnneededNodes(t *testing.T) {
|
|||
provider.AddNode("ng1", n4)
|
||||
|
||||
context := context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
ScaleDownUtilizationThreshold: 0.35,
|
||||
ExpendablePodsPriorityCutoff: 10,
|
||||
},
|
||||
|
|
@ -303,7 +302,7 @@ func TestFindUnneededMaxCandidates(t *testing.T) {
|
|||
numCandidates := 30
|
||||
|
||||
context := context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
ScaleDownUtilizationThreshold: 0.35,
|
||||
ScaleDownNonEmptyCandidatesCount: numCandidates,
|
||||
ScaleDownCandidatesPoolRatio: 1,
|
||||
|
|
@ -376,7 +375,7 @@ func TestFindUnneededEmptyNodes(t *testing.T) {
|
|||
numCandidates := 30
|
||||
|
||||
context := context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
ScaleDownUtilizationThreshold: 0.35,
|
||||
ScaleDownNonEmptyCandidatesCount: numCandidates,
|
||||
ScaleDownCandidatesPoolRatio: 1.0,
|
||||
|
|
@ -427,7 +426,7 @@ func TestFindUnneededNodePool(t *testing.T) {
|
|||
numCandidates := 30
|
||||
|
||||
context := context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
ScaleDownUtilizationThreshold: 0.35,
|
||||
ScaleDownNonEmptyCandidatesCount: numCandidates,
|
||||
ScaleDownCandidatesPoolRatio: 0.1,
|
||||
|
|
@ -574,7 +573,7 @@ func TestDeleteNode(t *testing.T) {
|
|||
|
||||
// build context
|
||||
context := &context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{},
|
||||
AutoscalingOptions: config.AutoscalingOptions{},
|
||||
ClientSet: fakeClient,
|
||||
Recorder: fakeRecorder,
|
||||
LogRecorder: fakeLogRecorder,
|
||||
|
|
@ -805,7 +804,7 @@ func TestScaleDown(t *testing.T) {
|
|||
fakeRecorder := kube_util.CreateEventRecorder(fakeClient)
|
||||
fakeLogRecorder, _ := utils.NewStatusMapRecorder(fakeClient, "kube-system", fakeRecorder, false)
|
||||
context := &context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
ScaleDownUtilizationThreshold: 0.5,
|
||||
ScaleDownUnneededTime: time.Minute,
|
||||
MaxGracefulTerminationSec: 60,
|
||||
|
|
@ -860,7 +859,7 @@ func assertSubset(t *testing.T, a []string, b []string) {
|
|||
}
|
||||
}
|
||||
|
||||
var defaultScaleDownOptions = static.AutoscalingOptions{
|
||||
var defaultScaleDownOptions = config.AutoscalingOptions{
|
||||
ScaleDownUtilizationThreshold: 0.5,
|
||||
ScaleDownUnneededTime: time.Minute,
|
||||
MaxGracefulTerminationSec: 60,
|
||||
|
|
@ -929,7 +928,7 @@ func TestScaleDownEmptyMinMemoryLimitHit(t *testing.T) {
|
|||
|
||||
func TestScaleDownEmptyMinGpuLimitHit(t *testing.T) {
|
||||
options := defaultScaleDownOptions
|
||||
options.GpuTotal = []static.GpuLimits{
|
||||
options.GpuTotal = []config.GpuLimits{
|
||||
{
|
||||
GpuType: gpu.DefaultGPUType,
|
||||
Min: 4,
|
||||
|
|
@ -1104,7 +1103,7 @@ func TestNoScaleDownUnready(t *testing.T) {
|
|||
fakeRecorder := kube_util.CreateEventRecorder(fakeClient)
|
||||
fakeLogRecorder, _ := utils.NewStatusMapRecorder(fakeClient, "kube-system", fakeRecorder, false)
|
||||
context := &context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
ScaleDownUtilizationThreshold: 0.5,
|
||||
ScaleDownUnneededTime: time.Minute,
|
||||
ScaleDownUnreadyTime: time.Hour,
|
||||
|
|
@ -1212,7 +1211,7 @@ func TestScaleDownNoMove(t *testing.T) {
|
|||
fakeRecorder := kube_util.CreateEventRecorder(fakeClient)
|
||||
fakeLogRecorder, _ := utils.NewStatusMapRecorder(fakeClient, "kube-system", fakeRecorder, false)
|
||||
context := &context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
ScaleDownUtilizationThreshold: 0.5,
|
||||
ScaleDownUnneededTime: time.Minute,
|
||||
ScaleDownUnreadyTime: time.Hour,
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ limitations under the License.
|
|||
|
||||
package core
|
||||
|
||||
import "k8s.io/autoscaler/cluster-autoscaler/config/static"
|
||||
import "k8s.io/autoscaler/cluster-autoscaler/config"
|
||||
|
||||
type nodeConfig struct {
|
||||
name string
|
||||
|
|
@ -48,5 +48,5 @@ type scaleTestConfig struct {
|
|||
scaleUpOptionToChoose groupSizeChange // this will be selected by assertingStrategy.BestOption
|
||||
expectedFinalScaleUp groupSizeChange // we expect this to be delivered via scale-up event
|
||||
expectedScaleDowns []string
|
||||
options static.AutoscalingOptions
|
||||
options config.AutoscalingOptions
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@ import (
|
|||
"k8s.io/autoscaler/cluster-autoscaler/clusterstate"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/clusterstate/utils"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config/static"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/context"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/estimator"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/expander/random"
|
||||
|
|
@ -51,7 +50,7 @@ import (
|
|||
"k8s.io/autoscaler/cluster-autoscaler/expander"
|
||||
)
|
||||
|
||||
var defaultOptions = static.AutoscalingOptions{
|
||||
var defaultOptions = config.AutoscalingOptions{
|
||||
EstimatorName: estimator.BinpackingEstimatorName,
|
||||
MaxCoresTotal: config.DefaultMaxClusterCores,
|
||||
MaxMemoryTotal: config.DefaultMaxClusterMemory * units.Gigabyte,
|
||||
|
|
@ -539,7 +538,7 @@ func TestScaleUpNodeComingNoScale(t *testing.T) {
|
|||
clusterState.UpdateNodes([]*apiv1.Node{n1, n2}, time.Now())
|
||||
|
||||
context := &context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
EstimatorName: estimator.BinpackingEstimatorName,
|
||||
MaxCoresTotal: config.DefaultMaxClusterCores,
|
||||
MaxMemoryTotal: config.DefaultMaxClusterMemory,
|
||||
|
|
@ -664,7 +663,7 @@ func TestScaleUpUnhealthy(t *testing.T) {
|
|||
clusterState := clusterstate.NewClusterStateRegistry(provider, clusterstate.ClusterStateRegistryConfig{}, fakeLogRecorder)
|
||||
clusterState.UpdateNodes([]*apiv1.Node{n1, n2}, time.Now())
|
||||
context := &context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
EstimatorName: estimator.BinpackingEstimatorName,
|
||||
MaxCoresTotal: config.DefaultMaxClusterCores,
|
||||
MaxMemoryTotal: config.DefaultMaxClusterMemory,
|
||||
|
|
@ -716,7 +715,7 @@ func TestScaleUpNoHelp(t *testing.T) {
|
|||
clusterState := clusterstate.NewClusterStateRegistry(provider, clusterstate.ClusterStateRegistryConfig{}, fakeLogRecorder)
|
||||
clusterState.UpdateNodes([]*apiv1.Node{n1}, time.Now())
|
||||
context := &context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
EstimatorName: estimator.BinpackingEstimatorName,
|
||||
MaxCoresTotal: config.DefaultMaxClusterCores,
|
||||
MaxMemoryTotal: config.DefaultMaxClusterMemory,
|
||||
|
|
@ -798,7 +797,7 @@ func TestScaleUpBalanceGroups(t *testing.T) {
|
|||
clusterState := clusterstate.NewClusterStateRegistry(provider, clusterstate.ClusterStateRegistryConfig{}, fakeLogRecorder)
|
||||
clusterState.UpdateNodes(nodes, time.Now())
|
||||
context := &context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
EstimatorName: estimator.BinpackingEstimatorName,
|
||||
BalanceSimilarNodeGroups: true,
|
||||
MaxCoresTotal: config.DefaultMaxClusterCores,
|
||||
|
|
@ -862,7 +861,7 @@ func TestScaleUpAutoprovisionedNodeGroup(t *testing.T) {
|
|||
clusterState := clusterstate.NewClusterStateRegistry(provider, clusterstate.ClusterStateRegistryConfig{}, fakeLogRecorder)
|
||||
|
||||
context := &context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
EstimatorName: estimator.BinpackingEstimatorName,
|
||||
MaxCoresTotal: 5000 * 64,
|
||||
MaxMemoryTotal: 5000 * 64 * 20,
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ import (
|
|||
|
||||
"k8s.io/autoscaler/cluster-autoscaler/clusterstate"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/clusterstate/utils"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config/static"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/context"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/metrics"
|
||||
ca_processors "k8s.io/autoscaler/cluster-autoscaler/processors"
|
||||
|
|
@ -66,7 +66,7 @@ type StaticAutoscaler struct {
|
|||
}
|
||||
|
||||
// NewStaticAutoscaler creates an instance of Autoscaler filled with provided parameters
|
||||
func NewStaticAutoscaler(opts static.AutoscalingOptions, predicateChecker *simulator.PredicateChecker,
|
||||
func NewStaticAutoscaler(opts config.AutoscalingOptions, predicateChecker *simulator.PredicateChecker,
|
||||
kubeClient kube_client.Interface, kubeEventRecorder kube_record.EventRecorder, listerRegistry kube_util.ListerRegistry,
|
||||
processors *ca_processors.AutoscalingProcessors) (*StaticAutoscaler, errors.AutoscalerError) {
|
||||
logRecorder, err := utils.NewStatusMapRecorder(kubeClient, opts.ConfigNamespace, kubeEventRecorder, opts.WriteStatusConfigMap)
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import (
|
|||
testprovider "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/test"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/clusterstate"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/clusterstate/utils"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config/static"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/context"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/estimator"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/expander/random"
|
||||
|
|
@ -173,7 +173,7 @@ func TestStaticAutoscalerRunOnce(t *testing.T) {
|
|||
clusterState.UpdateNodes([]*apiv1.Node{n1, n2}, time.Now())
|
||||
|
||||
context := &context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
EstimatorName: estimator.BinpackingEstimatorName,
|
||||
ScaleDownEnabled: true,
|
||||
ScaleDownUtilizationThreshold: 0.5,
|
||||
|
|
@ -353,7 +353,7 @@ func TestStaticAutoscalerRunOnceWithAutoprovisionedEnabled(t *testing.T) {
|
|||
processors := ca_processors.TestProcessors()
|
||||
processors.NodeGroupListProcessor = nodegroups.NewAutoprovisioningNodeGroupListProcessor()
|
||||
context := &context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
EstimatorName: estimator.BinpackingEstimatorName,
|
||||
ScaleDownEnabled: true,
|
||||
ScaleDownUtilizationThreshold: 0.5,
|
||||
|
|
@ -492,7 +492,7 @@ func TestStaticAutoscalerRunOnceWithALongUnregisteredNode(t *testing.T) {
|
|||
clusterState.UpdateNodes([]*apiv1.Node{n1}, later)
|
||||
|
||||
context := &context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
EstimatorName: estimator.BinpackingEstimatorName,
|
||||
ScaleDownEnabled: true,
|
||||
ScaleDownUtilizationThreshold: 0.5,
|
||||
|
|
@ -629,7 +629,7 @@ func TestStaticAutoscalerRunOncePodsWithPriorities(t *testing.T) {
|
|||
clusterState.UpdateNodes([]*apiv1.Node{n1, n2}, time.Now())
|
||||
|
||||
context := &context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
EstimatorName: estimator.BinpackingEstimatorName,
|
||||
ScaleDownEnabled: true,
|
||||
ScaleDownUtilizationThreshold: 0.5,
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import (
|
|||
testprovider "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/test"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/clusterstate"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/clusterstate/utils"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config/static"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/context"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/simulator"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/utils/deletetaint"
|
||||
|
|
@ -379,7 +379,7 @@ func TestRemoveOldUnregisteredNodes(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
|
||||
context := &context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
MaxNodeProvisionTime: 45 * time.Minute,
|
||||
},
|
||||
CloudProvider: provider,
|
||||
|
|
@ -476,7 +476,7 @@ func TestRemoveFixNodeTargetSize(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
|
||||
context := &context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
MaxNodeProvisionTime: 45 * time.Minute,
|
||||
},
|
||||
CloudProvider: provider,
|
||||
|
|
|
|||
|
|
@ -33,7 +33,6 @@ import (
|
|||
kube_flag "k8s.io/apiserver/pkg/util/flag"
|
||||
cloudBuilder "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/builder"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config/static"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/core"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/estimator"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/expander"
|
||||
|
|
@ -151,7 +150,7 @@ var (
|
|||
regional = flag.Bool("regional", false, "Cluster is regional.")
|
||||
)
|
||||
|
||||
func createAutoscalingOptions() static.AutoscalingOptions {
|
||||
func createAutoscalingOptions() config.AutoscalingOptions {
|
||||
minCoresTotal, maxCoresTotal, err := parseMinMaxFlag(*coresTotal)
|
||||
if err != nil {
|
||||
glog.Fatalf("Failed to parse flags: %v", err)
|
||||
|
|
@ -169,7 +168,7 @@ func createAutoscalingOptions() static.AutoscalingOptions {
|
|||
glog.Fatalf("Failed to parse flags: %v", err)
|
||||
}
|
||||
|
||||
return static.AutoscalingOptions{
|
||||
return config.AutoscalingOptions{
|
||||
CloudConfig: *cloudConfig,
|
||||
CloudProviderName: *cloudProviderFlag,
|
||||
NodeGroupAutoDiscovery: *nodeGroupAutoDiscoveryFlag,
|
||||
|
|
@ -456,8 +455,8 @@ func minMaxFlagString(min, max int64) string {
|
|||
return fmt.Sprintf("%v:%v", min, max)
|
||||
}
|
||||
|
||||
func parseMultipleGpuLimits(flags MultiStringFlag) ([]static.GpuLimits, error) {
|
||||
parsedFlags := make([]static.GpuLimits, 0, len(flags))
|
||||
func parseMultipleGpuLimits(flags MultiStringFlag) ([]config.GpuLimits, error) {
|
||||
parsedFlags := make([]config.GpuLimits, 0, len(flags))
|
||||
for _, flag := range flags {
|
||||
parsedFlag, err := parseSingleGpuLimit(flag)
|
||||
if err != nil {
|
||||
|
|
@ -468,30 +467,30 @@ func parseMultipleGpuLimits(flags MultiStringFlag) ([]static.GpuLimits, error) {
|
|||
return parsedFlags, nil
|
||||
}
|
||||
|
||||
func parseSingleGpuLimit(config string) (static.GpuLimits, error) {
|
||||
parts := strings.Split(config, ":")
|
||||
func parseSingleGpuLimit(limits string) (config.GpuLimits, error) {
|
||||
parts := strings.Split(limits, ":")
|
||||
if len(parts) != 3 {
|
||||
return static.GpuLimits{}, fmt.Errorf("Incorrect gpu limit specification: %v", config)
|
||||
return config.GpuLimits{}, fmt.Errorf("Incorrect gpu limit specification: %v", limits)
|
||||
}
|
||||
gpuType := parts[0]
|
||||
minVal, err := strconv.ParseInt(parts[1], 10, 64)
|
||||
if err != nil {
|
||||
return static.GpuLimits{}, fmt.Errorf("Incorrect gpu limit - min is not integer: %v", config)
|
||||
return config.GpuLimits{}, fmt.Errorf("Incorrect gpu limit - min is not integer: %v", limits)
|
||||
}
|
||||
maxVal, err := strconv.ParseInt(parts[2], 10, 64)
|
||||
if err != nil {
|
||||
return static.GpuLimits{}, fmt.Errorf("Incorrect gpu limit - max is not integer: %v", config)
|
||||
return config.GpuLimits{}, fmt.Errorf("Incorrect gpu limit - max is not integer: %v", limits)
|
||||
}
|
||||
if minVal < 0 {
|
||||
return static.GpuLimits{}, fmt.Errorf("Incorrect gpu limit - min is less than 0; %v", config)
|
||||
return config.GpuLimits{}, fmt.Errorf("Incorrect gpu limit - min is less than 0; %v", limits)
|
||||
}
|
||||
if maxVal < 0 {
|
||||
return static.GpuLimits{}, fmt.Errorf("Incorrect gpu limit - max is less than 0; %v", config)
|
||||
return config.GpuLimits{}, fmt.Errorf("Incorrect gpu limit - max is less than 0; %v", limits)
|
||||
}
|
||||
if minVal > maxVal {
|
||||
return static.GpuLimits{}, fmt.Errorf("Incorrect gpu limit - min is greater than max; %v", config)
|
||||
return config.GpuLimits{}, fmt.Errorf("Incorrect gpu limit - min is greater than max; %v", limits)
|
||||
}
|
||||
parsedGpuLimits := static.GpuLimits{
|
||||
parsedGpuLimits := config.GpuLimits{
|
||||
GpuType: gpuType,
|
||||
Min: minVal,
|
||||
Max: maxVal,
|
||||
|
|
|
|||
|
|
@ -19,15 +19,16 @@ package main
|
|||
import (
|
||||
"testing"
|
||||
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config/static"
|
||||
)
|
||||
|
||||
func TestParseSingleGpuLimit(t *testing.T) {
|
||||
type testcase struct {
|
||||
input string
|
||||
expectError bool
|
||||
expectedLimits static.GpuLimits
|
||||
expectedLimits config.GpuLimits
|
||||
expectedErrorMessage string
|
||||
}
|
||||
|
||||
|
|
@ -35,7 +36,7 @@ func TestParseSingleGpuLimit(t *testing.T) {
|
|||
{
|
||||
input: "gpu:1:10",
|
||||
expectError: false,
|
||||
expectedLimits: static.GpuLimits{
|
||||
expectedLimits: config.GpuLimits{
|
||||
GpuType: "gpu",
|
||||
Min: 1,
|
||||
Max: 10,
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import (
|
|||
"github.com/stretchr/testify/assert"
|
||||
testprovider "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/test"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/clusterstate/utils"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config/static"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/context"
|
||||
kube_util "k8s.io/autoscaler/cluster-autoscaler/utils/kubernetes"
|
||||
. "k8s.io/autoscaler/cluster-autoscaler/utils/test"
|
||||
|
|
@ -56,7 +56,7 @@ func TestAutoprovisioningNodeGroupManager(t *testing.T) {
|
|||
provider := testprovider.NewTestAutoprovisioningCloudProvider(nil, nil,
|
||||
func(string) error { return tc.createNodeGroupErr }, nil, nil, nil)
|
||||
context := &context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
NodeAutoprovisioningEnabled: true,
|
||||
},
|
||||
CloudProvider: provider,
|
||||
|
|
@ -107,7 +107,7 @@ func TestRemoveUnneededNodeGroups(t *testing.T) {
|
|||
fakeRecorder := kube_util.CreateEventRecorder(fakeClient)
|
||||
fakeLogRecorder, _ := utils.NewStatusMapRecorder(fakeClient, "kube-system", fakeRecorder, false)
|
||||
context := &context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
NodeAutoprovisioningEnabled: true,
|
||||
},
|
||||
CloudProvider: provider,
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ import (
|
|||
|
||||
apiv1 "k8s.io/api/core/v1"
|
||||
testprovider "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/test"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config/static"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/config"
|
||||
"k8s.io/autoscaler/cluster-autoscaler/context"
|
||||
. "k8s.io/autoscaler/cluster-autoscaler/utils/test"
|
||||
schedulercache "k8s.io/kubernetes/pkg/scheduler/cache"
|
||||
|
|
@ -47,7 +47,7 @@ func TestAutoprovisioningNGLProcessor(t *testing.T) {
|
|||
provider.AddNodeGroup("ng1", 1, 5, 3)
|
||||
|
||||
context := &context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
MaxAutoprovisionedNodeGroupCount: 1,
|
||||
NodeAutoprovisioningEnabled: true,
|
||||
},
|
||||
|
|
@ -85,7 +85,7 @@ func TestAutoprovisioningNGLProcessorTooMany(t *testing.T) {
|
|||
provider.AddAutoprovisionedNodeGroup("autoprovisioned-X1", 0, 1000, 0, "X1")
|
||||
|
||||
context := &context.AutoscalingContext{
|
||||
AutoscalingOptions: static.AutoscalingOptions{
|
||||
AutoscalingOptions: config.AutoscalingOptions{
|
||||
MaxAutoprovisionedNodeGroupCount: 1,
|
||||
NodeAutoprovisioningEnabled: true,
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in New Issue