Merge pull request #80824 from damemi/preemption-e2e-to-integration
Move PodPriorityResolution e2e to integration
This commit is contained in:
@@ -46,31 +46,31 @@ const (
|
||||
// Register registers a plugin
|
||||
func Register(plugins *admission.Plugins) {
|
||||
plugins.Register(PluginName, func(config io.Reader) (admission.Interface, error) {
|
||||
return newPlugin(), nil
|
||||
return NewPlugin(), nil
|
||||
})
|
||||
}
|
||||
|
||||
// priorityPlugin is an implementation of admission.Interface.
|
||||
type priorityPlugin struct {
|
||||
// Plugin is an implementation of admission.Interface.
|
||||
type Plugin struct {
|
||||
*admission.Handler
|
||||
client kubernetes.Interface
|
||||
lister schedulingv1listers.PriorityClassLister
|
||||
}
|
||||
|
||||
var _ admission.MutationInterface = &priorityPlugin{}
|
||||
var _ admission.ValidationInterface = &priorityPlugin{}
|
||||
var _ = genericadmissioninitializers.WantsExternalKubeInformerFactory(&priorityPlugin{})
|
||||
var _ = genericadmissioninitializers.WantsExternalKubeClientSet(&priorityPlugin{})
|
||||
var _ admission.MutationInterface = &Plugin{}
|
||||
var _ admission.ValidationInterface = &Plugin{}
|
||||
var _ = genericadmissioninitializers.WantsExternalKubeInformerFactory(&Plugin{})
|
||||
var _ = genericadmissioninitializers.WantsExternalKubeClientSet(&Plugin{})
|
||||
|
||||
// NewPlugin creates a new priority admission plugin.
|
||||
func newPlugin() *priorityPlugin {
|
||||
return &priorityPlugin{
|
||||
func NewPlugin() *Plugin {
|
||||
return &Plugin{
|
||||
Handler: admission.NewHandler(admission.Create, admission.Update, admission.Delete),
|
||||
}
|
||||
}
|
||||
|
||||
// ValidateInitialization implements the InitializationValidator interface.
|
||||
func (p *priorityPlugin) ValidateInitialization() error {
|
||||
func (p *Plugin) ValidateInitialization() error {
|
||||
if p.client == nil {
|
||||
return fmt.Errorf("%s requires a client", PluginName)
|
||||
}
|
||||
@@ -80,13 +80,13 @@ func (p *priorityPlugin) ValidateInitialization() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// SetInternalKubeClientSet implements the WantsInternalKubeClientSet interface.
|
||||
func (p *priorityPlugin) SetExternalKubeClientSet(client kubernetes.Interface) {
|
||||
// SetExternalKubeClientSet implements the WantsInternalKubeClientSet interface.
|
||||
func (p *Plugin) SetExternalKubeClientSet(client kubernetes.Interface) {
|
||||
p.client = client
|
||||
}
|
||||
|
||||
// SetInternalKubeInformerFactory implements the WantsInternalKubeInformerFactory interface.
|
||||
func (p *priorityPlugin) SetExternalKubeInformerFactory(f informers.SharedInformerFactory) {
|
||||
// SetExternalKubeInformerFactory implements the WantsInternalKubeInformerFactory interface.
|
||||
func (p *Plugin) SetExternalKubeInformerFactory(f informers.SharedInformerFactory) {
|
||||
priorityInformer := f.Scheduling().V1().PriorityClasses()
|
||||
p.lister = priorityInformer.Lister()
|
||||
p.SetReadyFunc(priorityInformer.Informer().HasSynced)
|
||||
@@ -99,7 +99,7 @@ var (
|
||||
|
||||
// Admit checks Pods and admits or rejects them. It also resolves the priority of pods based on their PriorityClass.
|
||||
// Note that pod validation mechanism prevents update of a pod priority.
|
||||
func (p *priorityPlugin) Admit(ctx context.Context, a admission.Attributes, o admission.ObjectInterfaces) error {
|
||||
func (p *Plugin) Admit(ctx context.Context, a admission.Attributes, o admission.ObjectInterfaces) error {
|
||||
operation := a.GetOperation()
|
||||
// Ignore all calls to subresources
|
||||
if len(a.GetSubresource()) != 0 {
|
||||
@@ -119,7 +119,7 @@ func (p *priorityPlugin) Admit(ctx context.Context, a admission.Attributes, o ad
|
||||
}
|
||||
|
||||
// Validate checks PriorityClasses and admits or rejects them.
|
||||
func (p *priorityPlugin) Validate(ctx context.Context, a admission.Attributes, o admission.ObjectInterfaces) error {
|
||||
func (p *Plugin) Validate(ctx context.Context, a admission.Attributes, o admission.ObjectInterfaces) error {
|
||||
operation := a.GetOperation()
|
||||
// Ignore all calls to subresources
|
||||
if len(a.GetSubresource()) != 0 {
|
||||
@@ -153,7 +153,7 @@ func priorityClassPermittedInNamespace(priorityClassName string, namespace strin
|
||||
}
|
||||
|
||||
// admitPod makes sure a new pod does not set spec.Priority field. It also makes sure that the PriorityClassName exists if it is provided and resolves the pod priority from the PriorityClassName.
|
||||
func (p *priorityPlugin) admitPod(a admission.Attributes) error {
|
||||
func (p *Plugin) admitPod(a admission.Attributes) error {
|
||||
operation := a.GetOperation()
|
||||
pod, ok := a.GetObject().(*api.Pod)
|
||||
if !ok {
|
||||
@@ -226,7 +226,7 @@ func (p *priorityPlugin) admitPod(a admission.Attributes) error {
|
||||
}
|
||||
|
||||
// validatePriorityClass ensures that the value field is not larger than the highest user definable priority. If the GlobalDefault is set, it ensures that there is no other PriorityClass whose GlobalDefault is set.
|
||||
func (p *priorityPlugin) validatePriorityClass(a admission.Attributes) error {
|
||||
func (p *Plugin) validatePriorityClass(a admission.Attributes) error {
|
||||
operation := a.GetOperation()
|
||||
pc, ok := a.GetObject().(*scheduling.PriorityClass)
|
||||
if !ok {
|
||||
@@ -248,7 +248,7 @@ func (p *priorityPlugin) validatePriorityClass(a admission.Attributes) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *priorityPlugin) getDefaultPriorityClass() (*schedulingv1.PriorityClass, error) {
|
||||
func (p *Plugin) getDefaultPriorityClass() (*schedulingv1.PriorityClass, error) {
|
||||
list, err := p.lister.List(labels.Everything())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -266,7 +266,7 @@ func (p *priorityPlugin) getDefaultPriorityClass() (*schedulingv1.PriorityClass,
|
||||
return defaultPC, nil
|
||||
}
|
||||
|
||||
func (p *priorityPlugin) getDefaultPriority() (string, int32, *apiv1.PreemptionPolicy, error) {
|
||||
func (p *Plugin) getDefaultPriority() (string, int32, *apiv1.PreemptionPolicy, error) {
|
||||
dpc, err := p.getDefaultPriorityClass()
|
||||
if err != nil {
|
||||
return "", 0, nil, err
|
||||
|
@@ -37,7 +37,7 @@ import (
|
||||
"k8s.io/kubernetes/pkg/features"
|
||||
)
|
||||
|
||||
func addPriorityClasses(ctrl *priorityPlugin, priorityClasses []*scheduling.PriorityClass) error {
|
||||
func addPriorityClasses(ctrl *Plugin, priorityClasses []*scheduling.PriorityClass) error {
|
||||
informerFactory := informers.NewSharedInformerFactory(nil, controller.NoResyncPeriodFunc())
|
||||
ctrl.SetExternalKubeInformerFactory(informerFactory)
|
||||
// First add the existing classes to the cache.
|
||||
@@ -173,7 +173,7 @@ func TestPriorityClassAdmission(t *testing.T) {
|
||||
for _, test := range tests {
|
||||
klog.V(4).Infof("starting test %q", test.name)
|
||||
|
||||
ctrl := newPlugin()
|
||||
ctrl := NewPlugin()
|
||||
// Add existing priority classes.
|
||||
if err := addPriorityClasses(ctrl, test.existingClasses); err != nil {
|
||||
t.Errorf("Test %q: unable to add object to informer: %v", test.name, err)
|
||||
@@ -274,7 +274,7 @@ func TestDefaultPriority(t *testing.T) {
|
||||
|
||||
for _, test := range tests {
|
||||
klog.V(4).Infof("starting test %q", test.name)
|
||||
ctrl := newPlugin()
|
||||
ctrl := NewPlugin()
|
||||
if err := addPriorityClasses(ctrl, test.classesBefore); err != nil {
|
||||
t.Errorf("Test %q: unable to add object to informer: %v", test.name, err)
|
||||
}
|
||||
@@ -682,7 +682,7 @@ func TestPodAdmission(t *testing.T) {
|
||||
for _, test := range tests {
|
||||
klog.V(4).Infof("starting test %q", test.name)
|
||||
|
||||
ctrl := newPlugin()
|
||||
ctrl := NewPlugin()
|
||||
// Add existing priority classes.
|
||||
if err := addPriorityClasses(ctrl, test.existingClasses); err != nil {
|
||||
t.Errorf("Test %q: unable to add object to informer: %v", test.name, err)
|
||||
|
Reference in New Issue
Block a user