Public ProvisioningClass interface
This commit is contained in:
		
							parent
							
								
									b3a501cbe1
								
							
						
					
					
						commit
						4ed5df201b
					
				| 
						 | 
				
			
			@ -32,6 +32,7 @@ import (
 | 
			
		|||
	"k8s.io/autoscaler/cluster-autoscaler/core/scaleup/orchestrator"
 | 
			
		||||
	"k8s.io/autoscaler/cluster-autoscaler/debuggingsnapshot"
 | 
			
		||||
	"k8s.io/autoscaler/cluster-autoscaler/loop"
 | 
			
		||||
	"k8s.io/autoscaler/cluster-autoscaler/provisioningrequest/besteffortatomic"
 | 
			
		||||
	"k8s.io/autoscaler/cluster-autoscaler/provisioningrequest/checkcapacity"
 | 
			
		||||
	"k8s.io/autoscaler/cluster-autoscaler/provisioningrequest/provreqclient"
 | 
			
		||||
	"k8s.io/autoscaler/cluster-autoscaler/simulator/predicatechecker"
 | 
			
		||||
| 
						 | 
				
			
			@ -496,17 +497,17 @@ func buildAutoscaler(debuggingSnapshotter debuggingsnapshot.DebuggingSnapshotter
 | 
			
		|||
		podListProcessor.AddProcessor(provreq.NewProvisioningRequestPodsFilter(provreq.NewDefautlEventManager()))
 | 
			
		||||
 | 
			
		||||
		restConfig := kube_util.GetKubeConfig(autoscalingOptions.KubeClientOpts)
 | 
			
		||||
		provreqOrchestrator, err := provreqorchestrator.New(restConfig)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		scaleUpOrchestrator := provreqorchestrator.NewWrapperOrchestrator(provreqOrchestrator)
 | 
			
		||||
 | 
			
		||||
		opts.ScaleUpOrchestrator = scaleUpOrchestrator
 | 
			
		||||
		client, err := provreqclient.NewProvisioningRequestClient(restConfig)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		provreqOrchestrator := provreqorchestrator.New(client, []provreqorchestrator.ProvisioningClass{
 | 
			
		||||
			checkcapacity.New(client),
 | 
			
		||||
			besteffortatomic.New(client),
 | 
			
		||||
		})
 | 
			
		||||
		scaleUpOrchestrator := provreqorchestrator.NewWrapperOrchestrator(provreqOrchestrator)
 | 
			
		||||
 | 
			
		||||
		opts.ScaleUpOrchestrator = scaleUpOrchestrator
 | 
			
		||||
		provreqProcesor := provreq.NewCombinedProvReqProcessor(client, []provreq.ProvisioningRequestProcessor{checkcapacity.NewCheckCapacityProcessor(client)})
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,22 +27,20 @@ import (
 | 
			
		|||
	"k8s.io/autoscaler/cluster-autoscaler/context"
 | 
			
		||||
	"k8s.io/autoscaler/cluster-autoscaler/estimator"
 | 
			
		||||
	"k8s.io/autoscaler/cluster-autoscaler/processors/status"
 | 
			
		||||
	"k8s.io/autoscaler/cluster-autoscaler/provisioningrequest/besteffortatomic"
 | 
			
		||||
	"k8s.io/autoscaler/cluster-autoscaler/provisioningrequest/checkcapacity"
 | 
			
		||||
	"k8s.io/autoscaler/cluster-autoscaler/provisioningrequest/conditions"
 | 
			
		||||
	provreq_pods "k8s.io/autoscaler/cluster-autoscaler/provisioningrequest/pods"
 | 
			
		||||
	"k8s.io/autoscaler/cluster-autoscaler/provisioningrequest/provreqclient"
 | 
			
		||||
	"k8s.io/autoscaler/cluster-autoscaler/simulator/scheduling"
 | 
			
		||||
	ca_errors "k8s.io/autoscaler/cluster-autoscaler/utils/errors"
 | 
			
		||||
	"k8s.io/autoscaler/cluster-autoscaler/utils/taints"
 | 
			
		||||
	"k8s.io/client-go/rest"
 | 
			
		||||
	"k8s.io/klog/v2"
 | 
			
		||||
 | 
			
		||||
	ca_processors "k8s.io/autoscaler/cluster-autoscaler/processors"
 | 
			
		||||
	schedulerframework "k8s.io/kubernetes/pkg/scheduler/framework"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type provisioningClass interface {
 | 
			
		||||
// ProvisioningClass is an interface for ProvisioningRequests.
 | 
			
		||||
type ProvisioningClass interface {
 | 
			
		||||
	Provision([]*apiv1.Pod, []*apiv1.Node, []*appsv1.DaemonSet,
 | 
			
		||||
		map[string]*schedulerframework.NodeInfo) (*status.ScaleUpStatus, ca_errors.AutoscalerError)
 | 
			
		||||
	Initialize(*context.AutoscalingContext, *ca_processors.AutoscalingProcessors, *clusterstate.ClusterStateRegistry,
 | 
			
		||||
| 
						 | 
				
			
			@ -55,23 +53,15 @@ type provReqOrchestrator struct {
 | 
			
		|||
	context             *context.AutoscalingContext
 | 
			
		||||
	client              *provreqclient.ProvisioningRequestClient
 | 
			
		||||
	injector            *scheduling.HintingSimulator
 | 
			
		||||
	provisioningClasses []provisioningClass
 | 
			
		||||
	provisioningClasses []ProvisioningClass
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// New return new orchestrator.
 | 
			
		||||
func New(kubeConfig *rest.Config) (*provReqOrchestrator, error) {
 | 
			
		||||
	client, err := provreqclient.NewProvisioningRequestClient(kubeConfig)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
func New(client *provreqclient.ProvisioningRequestClient, classes []ProvisioningClass) *provReqOrchestrator {
 | 
			
		||||
	return &provReqOrchestrator{
 | 
			
		||||
		client: client,
 | 
			
		||||
		provisioningClasses: []provisioningClass{
 | 
			
		||||
			checkcapacity.New(client),
 | 
			
		||||
			besteffortatomic.New(client),
 | 
			
		||||
		},
 | 
			
		||||
	}, nil
 | 
			
		||||
		client:              client,
 | 
			
		||||
		provisioningClasses: classes,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Initialize initialize orchestrator.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -334,7 +334,7 @@ func setupTest(t *testing.T, nodes []*apiv1.Node, prs []*provreqwrapper.Provisio
 | 
			
		|||
 | 
			
		||||
	orchestrator := &provReqOrchestrator{
 | 
			
		||||
		client:              client,
 | 
			
		||||
		provisioningClasses: []provisioningClass{checkcapacity.New(client), besteffortatomic.New(client)},
 | 
			
		||||
		provisioningClasses: []ProvisioningClass{checkcapacity.New(client), besteffortatomic.New(client)},
 | 
			
		||||
	}
 | 
			
		||||
	orchestrator.Initialize(&autoscalingContext, processors, clusterState, estimatorBuilder, taints.TaintConfig{})
 | 
			
		||||
	return orchestrator, nodeInfos
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue