scheduler/autoscaler_contract: expand the Cluster Autoscaler contract

SharedDRAManager is added to the contract, as well as RunReservePluginsReserve
that will be run by Cluster Autoscaler to obtain claim allocations.
This commit is contained in:
Kuba Tużnik 2024-10-10 15:22:54 +02:00
parent 8d489425aa
commit 3d22a7f414
2 changed files with 72 additions and 0 deletions

View File

@ -36,6 +36,7 @@ import (
type frameworkContract interface {
RunPreFilterPlugins(ctx context.Context, state *framework.CycleState, pod *v1.Pod) (*framework.PreFilterResult, *framework.Status, sets.Set[string])
RunFilterPlugins(context.Context, *framework.CycleState, *v1.Pod, *framework.NodeInfo) *framework.Status
RunReservePluginsReserve(ctx context.Context, state *framework.CycleState, pod *v1.Pod, nodeName string) *framework.Status
}
func TestFrameworkContract(t *testing.T) {

View File

@ -21,12 +21,20 @@ limitations under the License.
package contract
import (
resourceapi "k8s.io/api/resource/v1alpha3"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/dynamic-resource-allocation/structured"
"k8s.io/kubernetes/pkg/scheduler/framework"
)
var _ framework.NodeInfoLister = &nodeInfoListerContract{}
var _ framework.StorageInfoLister = &storageInfoListerContract{}
var _ framework.SharedLister = &shareListerContract{}
var _ framework.ResourceSliceLister = &resourceSliceListerContract{}
var _ framework.DeviceClassLister = &deviceClassListerContract{}
var _ framework.ResourceClaimTracker = &resourceClaimTrackerContract{}
var _ framework.SharedDRAManager = &sharedDRAManagerContract{}
type nodeInfoListerContract struct{}
@ -61,3 +69,66 @@ func (c *shareListerContract) NodeInfos() framework.NodeInfoLister {
func (c *shareListerContract) StorageInfos() framework.StorageInfoLister {
return nil
}
type resourceSliceListerContract struct{}
func (c *resourceSliceListerContract) List() ([]*resourceapi.ResourceSlice, error) {
return nil, nil
}
type deviceClassListerContract struct{}
func (c *deviceClassListerContract) List() ([]*resourceapi.DeviceClass, error) {
return nil, nil
}
func (c *deviceClassListerContract) Get(_ string) (*resourceapi.DeviceClass, error) {
return nil, nil
}
type resourceClaimTrackerContract struct{}
func (r *resourceClaimTrackerContract) List() ([]*resourceapi.ResourceClaim, error) {
return nil, nil
}
func (r *resourceClaimTrackerContract) Get(_, _ string) (*resourceapi.ResourceClaim, error) {
return nil, nil
}
func (r *resourceClaimTrackerContract) ListAllAllocatedDevices() (sets.Set[structured.DeviceID], error) {
return nil, nil
}
func (r *resourceClaimTrackerContract) SignalClaimPendingAllocation(_ types.UID, _ *resourceapi.ResourceClaim) error {
return nil
}
func (r *resourceClaimTrackerContract) ClaimHasPendingAllocation(_ types.UID) bool {
return false
}
func (r *resourceClaimTrackerContract) RemoveClaimPendingAllocation(_ types.UID) (deleted bool) {
return false
}
func (r *resourceClaimTrackerContract) AssumeClaimAfterAPICall(_ *resourceapi.ResourceClaim) error {
return nil
}
func (r *resourceClaimTrackerContract) AssumedClaimRestore(_, _ string) {
}
type sharedDRAManagerContract struct{}
func (s *sharedDRAManagerContract) ResourceClaims() framework.ResourceClaimTracker {
return nil
}
func (s *sharedDRAManagerContract) ResourceSlices() framework.ResourceSliceLister {
return nil
}
func (s *sharedDRAManagerContract) DeviceClasses() framework.DeviceClassLister {
return nil
}