mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-21 10:51:29 +00:00
switch system priority class to versioned (v1) api
move all the helpers to scheduling v1 helpers less explicit conversion
This commit is contained in:
parent
ea4570a412
commit
09cf42d67c
@ -1,16 +1,11 @@
|
|||||||
package(default_visibility = ["//visibility:public"])
|
package(default_visibility = ["//visibility:public"])
|
||||||
|
|
||||||
load(
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
"@io_bazel_rules_go//go:def.bzl",
|
|
||||||
"go_library",
|
|
||||||
"go_test",
|
|
||||||
)
|
|
||||||
|
|
||||||
go_library(
|
go_library(
|
||||||
name = "go_default_library",
|
name = "go_default_library",
|
||||||
srcs = [
|
srcs = [
|
||||||
"doc.go",
|
"doc.go",
|
||||||
"helpers.go",
|
|
||||||
"register.go",
|
"register.go",
|
||||||
"types.go",
|
"types.go",
|
||||||
"zz_generated.deepcopy.go",
|
"zz_generated.deepcopy.go",
|
||||||
@ -45,10 +40,3 @@ filegroup(
|
|||||||
],
|
],
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
)
|
)
|
||||||
|
|
||||||
go_test(
|
|
||||||
name = "go_default_test",
|
|
||||||
srcs = ["helpers_test.go"],
|
|
||||||
embed = [":go_default_library"],
|
|
||||||
deps = ["//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library"],
|
|
||||||
)
|
|
||||||
|
@ -5,6 +5,7 @@ go_library(
|
|||||||
srcs = [
|
srcs = [
|
||||||
"defaults.go",
|
"defaults.go",
|
||||||
"doc.go",
|
"doc.go",
|
||||||
|
"helpers.go",
|
||||||
"register.go",
|
"register.go",
|
||||||
"zz_generated.conversion.go",
|
"zz_generated.conversion.go",
|
||||||
"zz_generated.defaults.go",
|
"zz_generated.defaults.go",
|
||||||
@ -17,6 +18,7 @@ go_library(
|
|||||||
"//pkg/features:go_default_library",
|
"//pkg/features:go_default_library",
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/scheduling/v1:go_default_library",
|
"//staging/src/k8s.io/api/scheduling/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||||
@ -40,14 +42,19 @@ filegroup(
|
|||||||
|
|
||||||
go_test(
|
go_test(
|
||||||
name = "go_default_test",
|
name = "go_default_test",
|
||||||
srcs = ["defaults_test.go"],
|
srcs = [
|
||||||
|
"defaults_test.go",
|
||||||
|
"helpers_test.go",
|
||||||
|
],
|
||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/api/legacyscheme:go_default_library",
|
"//pkg/api/legacyscheme:go_default_library",
|
||||||
"//pkg/api/testapi:go_default_library",
|
"//pkg/api/testapi:go_default_library",
|
||||||
|
"//pkg/apis/scheduling:go_default_library",
|
||||||
"//pkg/features:go_default_library",
|
"//pkg/features:go_default_library",
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/scheduling/v1:go_default_library",
|
"//staging/src/k8s.io/api/scheduling/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
||||||
"//staging/src/k8s.io/component-base/featuregate/testing:go_default_library",
|
"//staging/src/k8s.io/component-base/featuregate/testing:go_default_library",
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2018 The Kubernetes Authors.
|
Copyright 2019 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@ -14,52 +14,54 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package scheduling
|
package v1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"k8s.io/api/scheduling/v1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/kubernetes/pkg/apis/scheduling"
|
||||||
)
|
)
|
||||||
|
|
||||||
// SystemPriorityClasses define system priority classes that are auto-created at cluster bootstrapping.
|
// SystemPriorityClasses define system priority classes that are auto-created at cluster bootstrapping.
|
||||||
// Our API validation logic ensures that any priority class that has a system prefix or its value
|
// Our API validation logic ensures that any priority class that has a system prefix or its value
|
||||||
// is higher than HighestUserDefinablePriority is equal to one of these SystemPriorityClasses.
|
// is higher than HighestUserDefinablePriority is equal to one of these SystemPriorityClasses.
|
||||||
var systemPriorityClasses = []*PriorityClass{
|
var systemPriorityClasses = []*v1.PriorityClass{
|
||||||
{
|
{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: SystemNodeCritical,
|
Name: scheduling.SystemNodeCritical,
|
||||||
},
|
},
|
||||||
Value: SystemCriticalPriority + 1000,
|
Value: scheduling.SystemCriticalPriority + 1000,
|
||||||
Description: "Used for system critical pods that must not be moved from their current node.",
|
Description: "Used for system critical pods that must not be moved from their current node.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: SystemClusterCritical,
|
Name: scheduling.SystemClusterCritical,
|
||||||
},
|
},
|
||||||
Value: SystemCriticalPriority,
|
Value: scheduling.SystemCriticalPriority,
|
||||||
Description: "Used for system critical pods that must run in the cluster, but can be moved to another node if necessary.",
|
Description: "Used for system critical pods that must run in the cluster, but can be moved to another node if necessary.",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
// SystemPriorityClasses returns the list of system priority classes.
|
// SystemPriorityClasses returns the list of system priority classes.
|
||||||
// NOTE: be careful not to modify any of elements of the returned array directly.
|
// NOTE: be careful not to modify any of elements of the returned array directly.
|
||||||
func SystemPriorityClasses() []*PriorityClass {
|
func SystemPriorityClasses() []*v1.PriorityClass {
|
||||||
return systemPriorityClasses
|
return systemPriorityClasses
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsKnownSystemPriorityClass checks that "pc" is equal to one of the system PriorityClasses.
|
// IsKnownSystemPriorityClass returns true if there's any of the system priority classes exactly
|
||||||
// It ignores "description", labels, annotations, etc. of the PriorityClass.
|
// matches "name", "value", "globalDefault". otherwise it will return an error.
|
||||||
func IsKnownSystemPriorityClass(pc *PriorityClass) (bool, error) {
|
func IsKnownSystemPriorityClass(name string, value int32, globalDefault bool) (bool, error) {
|
||||||
for _, spc := range systemPriorityClasses {
|
for _, spc := range SystemPriorityClasses() {
|
||||||
if spc.Name == pc.Name {
|
if spc.Name == name {
|
||||||
if spc.Value != pc.Value {
|
if spc.Value != value {
|
||||||
return false, fmt.Errorf("value of %v PriorityClass must be %v", spc.Name, spc.Value)
|
return false, fmt.Errorf("value of %v PriorityClass must be %v", spc.Name, spc.Value)
|
||||||
}
|
}
|
||||||
if spc.GlobalDefault != pc.GlobalDefault {
|
if spc.GlobalDefault != globalDefault {
|
||||||
return false, fmt.Errorf("globalDefault of %v PriorityClass must be %v", spc.Name, spc.GlobalDefault)
|
return false, fmt.Errorf("globalDefault of %v PriorityClass must be %v", spc.Name, spc.GlobalDefault)
|
||||||
}
|
}
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false, fmt.Errorf("%v is not a known system priority class", pc.Name)
|
return false, fmt.Errorf("%v is not a known system priority class", name)
|
||||||
}
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2018 The Kubernetes Authors.
|
Copyright 2019 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@ -14,18 +14,20 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package scheduling
|
package v1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
v1 "k8s.io/api/scheduling/v1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/kubernetes/pkg/apis/scheduling"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestIsKnownSystemPriorityClass(t *testing.T) {
|
func TestIsKnownSystemPriorityClass(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
pc *PriorityClass
|
pc *v1.PriorityClass
|
||||||
expected bool
|
expected bool
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
@ -35,11 +37,11 @@ func TestIsKnownSystemPriorityClass(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "non-system priority class",
|
name: "non-system priority class",
|
||||||
pc: &PriorityClass{
|
pc: &v1.PriorityClass{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: SystemNodeCritical,
|
Name: scheduling.SystemNodeCritical,
|
||||||
},
|
},
|
||||||
Value: SystemCriticalPriority, // This is the value of system cluster critical
|
Value: scheduling.SystemCriticalPriority, // This is the value of system cluster critical
|
||||||
Description: "Used for system critical pods that must not be moved from their current node.",
|
Description: "Used for system critical pods that must not be moved from their current node.",
|
||||||
},
|
},
|
||||||
expected: false,
|
expected: false,
|
||||||
@ -47,7 +49,7 @@ func TestIsKnownSystemPriorityClass(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
if is, err := IsKnownSystemPriorityClass(test.pc); test.expected != is {
|
if is, err := IsKnownSystemPriorityClass(test.pc.Name, test.pc.Value, test.pc.GlobalDefault); test.expected != is {
|
||||||
t.Errorf("Test [%v]: Expected %v, but got %v. Error: %v", test.name, test.expected, is, err)
|
t.Errorf("Test [%v]: Expected %v, but got %v. Error: %v", test.name, test.expected, is, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -12,6 +12,7 @@ go_test(
|
|||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/apis/scheduling:go_default_library",
|
"//pkg/apis/scheduling:go_default_library",
|
||||||
|
"//pkg/apis/scheduling/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
|
||||||
],
|
],
|
||||||
@ -24,6 +25,7 @@ go_library(
|
|||||||
deps = [
|
deps = [
|
||||||
"//pkg/apis/core/validation:go_default_library",
|
"//pkg/apis/core/validation:go_default_library",
|
||||||
"//pkg/apis/scheduling:go_default_library",
|
"//pkg/apis/scheduling:go_default_library",
|
||||||
|
"//pkg/apis/scheduling/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/api/validation:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/api/validation:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
|
||||||
],
|
],
|
||||||
|
@ -24,6 +24,7 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||||
apivalidation "k8s.io/kubernetes/pkg/apis/core/validation"
|
apivalidation "k8s.io/kubernetes/pkg/apis/core/validation"
|
||||||
"k8s.io/kubernetes/pkg/apis/scheduling"
|
"k8s.io/kubernetes/pkg/apis/scheduling"
|
||||||
|
schedulingapiv1 "k8s.io/kubernetes/pkg/apis/scheduling/v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ValidatePriorityClass tests whether required fields in the PriorityClass are
|
// ValidatePriorityClass tests whether required fields in the PriorityClass are
|
||||||
@ -34,7 +35,7 @@ func ValidatePriorityClass(pc *scheduling.PriorityClass) field.ErrorList {
|
|||||||
// If the priorityClass starts with a system prefix, it must be one of the
|
// If the priorityClass starts with a system prefix, it must be one of the
|
||||||
// predefined system priority classes.
|
// predefined system priority classes.
|
||||||
if strings.HasPrefix(pc.Name, scheduling.SystemPriorityClassPrefix) {
|
if strings.HasPrefix(pc.Name, scheduling.SystemPriorityClassPrefix) {
|
||||||
if is, err := scheduling.IsKnownSystemPriorityClass(pc); !is {
|
if is, err := schedulingapiv1.IsKnownSystemPriorityClass(pc.Name, pc.Value, pc.GlobalDefault); !is {
|
||||||
allErrs = append(allErrs, field.Forbidden(field.NewPath("metadata", "name"), "priority class names with '"+scheduling.SystemPriorityClassPrefix+"' prefix are reserved for system use only. error: "+err.Error()))
|
allErrs = append(allErrs, field.Forbidden(field.NewPath("metadata", "name"), "priority class names with '"+scheduling.SystemPriorityClassPrefix+"' prefix are reserved for system use only. error: "+err.Error()))
|
||||||
}
|
}
|
||||||
} else if pc.Value > scheduling.HighestUserDefinablePriority {
|
} else if pc.Value > scheduling.HighestUserDefinablePriority {
|
||||||
|
@ -22,10 +22,11 @@ import (
|
|||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||||
"k8s.io/kubernetes/pkg/apis/scheduling"
|
"k8s.io/kubernetes/pkg/apis/scheduling"
|
||||||
|
schedulingapiv1 "k8s.io/kubernetes/pkg/apis/scheduling/v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestValidatePriorityClass(t *testing.T) {
|
func TestValidatePriorityClass(t *testing.T) {
|
||||||
spcs := scheduling.SystemPriorityClasses()
|
spcs := schedulingapiv1.SystemPriorityClasses()
|
||||||
successCases := map[string]scheduling.PriorityClass{
|
successCases := map[string]scheduling.PriorityClass{
|
||||||
"no description": {
|
"no description": {
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: "tier1", Namespace: ""},
|
ObjectMeta: metav1.ObjectMeta{Name: "tier1", Namespace: ""},
|
||||||
|
@ -12,6 +12,7 @@ go_test(
|
|||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/apis/scheduling:go_default_library",
|
"//pkg/apis/scheduling:go_default_library",
|
||||||
|
"//pkg/apis/scheduling/v1:go_default_library",
|
||||||
"//pkg/registry/registrytest:go_default_library",
|
"//pkg/registry/registrytest:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library",
|
||||||
@ -31,6 +32,7 @@ go_library(
|
|||||||
importpath = "k8s.io/kubernetes/pkg/registry/scheduling/priorityclass/storage",
|
importpath = "k8s.io/kubernetes/pkg/registry/scheduling/priorityclass/storage",
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/apis/scheduling:go_default_library",
|
"//pkg/apis/scheduling:go_default_library",
|
||||||
|
"//pkg/apis/scheduling/v1:go_default_library",
|
||||||
"//pkg/printers:go_default_library",
|
"//pkg/printers:go_default_library",
|
||||||
"//pkg/printers/internalversion:go_default_library",
|
"//pkg/printers/internalversion:go_default_library",
|
||||||
"//pkg/printers/storage:go_default_library",
|
"//pkg/printers/storage:go_default_library",
|
||||||
|
@ -26,6 +26,7 @@ import (
|
|||||||
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
|
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
|
||||||
"k8s.io/apiserver/pkg/registry/rest"
|
"k8s.io/apiserver/pkg/registry/rest"
|
||||||
"k8s.io/kubernetes/pkg/apis/scheduling"
|
"k8s.io/kubernetes/pkg/apis/scheduling"
|
||||||
|
schedulingapiv1 "k8s.io/kubernetes/pkg/apis/scheduling/v1"
|
||||||
"k8s.io/kubernetes/pkg/printers"
|
"k8s.io/kubernetes/pkg/printers"
|
||||||
printersinternal "k8s.io/kubernetes/pkg/printers/internalversion"
|
printersinternal "k8s.io/kubernetes/pkg/printers/internalversion"
|
||||||
printerstorage "k8s.io/kubernetes/pkg/printers/storage"
|
printerstorage "k8s.io/kubernetes/pkg/printers/storage"
|
||||||
@ -68,7 +69,7 @@ func (r *REST) ShortNames() []string {
|
|||||||
|
|
||||||
// Delete ensures that system priority classes are not deleted.
|
// Delete ensures that system priority classes are not deleted.
|
||||||
func (r *REST) Delete(ctx context.Context, name string, deleteValidation rest.ValidateObjectFunc, options *metav1.DeleteOptions) (runtime.Object, bool, error) {
|
func (r *REST) Delete(ctx context.Context, name string, deleteValidation rest.ValidateObjectFunc, options *metav1.DeleteOptions) (runtime.Object, bool, error) {
|
||||||
for _, spc := range scheduling.SystemPriorityClasses() {
|
for _, spc := range schedulingapiv1.SystemPriorityClasses() {
|
||||||
if name == spc.Name {
|
if name == spc.Name {
|
||||||
return nil, false, apierrors.NewForbidden(scheduling.Resource("priorityclasses"), spc.Name, errors.New("this is a system priority class and cannot be deleted"))
|
return nil, false, apierrors.NewForbidden(scheduling.Resource("priorityclasses"), spc.Name, errors.New("this is a system priority class and cannot be deleted"))
|
||||||
}
|
}
|
||||||
|
@ -29,6 +29,7 @@ import (
|
|||||||
"k8s.io/apiserver/pkg/registry/rest"
|
"k8s.io/apiserver/pkg/registry/rest"
|
||||||
etcd3testing "k8s.io/apiserver/pkg/storage/etcd3/testing"
|
etcd3testing "k8s.io/apiserver/pkg/storage/etcd3/testing"
|
||||||
"k8s.io/kubernetes/pkg/apis/scheduling"
|
"k8s.io/kubernetes/pkg/apis/scheduling"
|
||||||
|
schedulingapiv1 "k8s.io/kubernetes/pkg/apis/scheduling/v1"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -118,8 +119,12 @@ func TestDeleteSystemPriorityClass(t *testing.T) {
|
|||||||
defer storage.Store.DestroyFunc()
|
defer storage.Store.DestroyFunc()
|
||||||
key := "test/system-node-critical"
|
key := "test/system-node-critical"
|
||||||
ctx := genericapirequest.NewContext()
|
ctx := genericapirequest.NewContext()
|
||||||
pc := scheduling.SystemPriorityClasses()[0]
|
pc := schedulingapiv1.SystemPriorityClasses()[0]
|
||||||
if err := storage.Store.Storage.Create(ctx, key, pc, nil, 0, false); err != nil {
|
internalPc := &scheduling.PriorityClass{}
|
||||||
|
if err := schedulingapiv1.Convert_v1_PriorityClass_To_scheduling_PriorityClass(pc, internalPc, nil); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if err := storage.Store.Storage.Create(ctx, key, internalPc, nil, 0, false); err != nil {
|
||||||
t.Fatalf("unexpected error: %v", err)
|
t.Fatalf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
if _, _, err := storage.Delete(ctx, pc.Name, rest.ValidateAllObjectFunc, nil); err == nil {
|
if _, _, err := storage.Delete(ctx, pc.Name, rest.ValidateAllObjectFunc, nil); err == nil {
|
||||||
|
@ -16,7 +16,6 @@ go_library(
|
|||||||
"//pkg/apis/scheduling/v1alpha1:go_default_library",
|
"//pkg/apis/scheduling/v1alpha1:go_default_library",
|
||||||
"//pkg/apis/scheduling/v1beta1:go_default_library",
|
"//pkg/apis/scheduling/v1beta1:go_default_library",
|
||||||
"//pkg/registry/scheduling/priorityclass/storage:go_default_library",
|
"//pkg/registry/scheduling/priorityclass/storage:go_default_library",
|
||||||
"//staging/src/k8s.io/api/scheduling/v1beta1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
|
||||||
@ -25,7 +24,7 @@ go_library(
|
|||||||
"//staging/src/k8s.io/apiserver/pkg/registry/rest:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/registry/rest:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/server:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/server:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/server/storage:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/server/storage:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1:go_default_library",
|
"//staging/src/k8s.io/client-go/kubernetes/typed/scheduling/v1:go_default_library",
|
||||||
"//vendor/k8s.io/klog:go_default_library",
|
"//vendor/k8s.io/klog:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -22,7 +22,6 @@ import (
|
|||||||
|
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
|
|
||||||
schedulingv1beta1 "k8s.io/api/scheduling/v1beta1"
|
|
||||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
||||||
@ -31,7 +30,7 @@ import (
|
|||||||
"k8s.io/apiserver/pkg/registry/rest"
|
"k8s.io/apiserver/pkg/registry/rest"
|
||||||
genericapiserver "k8s.io/apiserver/pkg/server"
|
genericapiserver "k8s.io/apiserver/pkg/server"
|
||||||
serverstorage "k8s.io/apiserver/pkg/server/storage"
|
serverstorage "k8s.io/apiserver/pkg/server/storage"
|
||||||
schedulingclient "k8s.io/client-go/kubernetes/typed/scheduling/v1beta1"
|
schedulingclient "k8s.io/client-go/kubernetes/typed/scheduling/v1"
|
||||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
||||||
"k8s.io/kubernetes/pkg/apis/scheduling"
|
"k8s.io/kubernetes/pkg/apis/scheduling"
|
||||||
schedulingapiv1 "k8s.io/kubernetes/pkg/apis/scheduling/v1"
|
schedulingapiv1 "k8s.io/kubernetes/pkg/apis/scheduling/v1"
|
||||||
@ -123,16 +122,11 @@ func AddSystemPriorityClasses() genericapiserver.PostStartHookFunc {
|
|||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, pc := range scheduling.SystemPriorityClasses() {
|
for _, pc := range schedulingapiv1.SystemPriorityClasses() {
|
||||||
_, err := schedClientSet.PriorityClasses().Get(pc.Name, metav1.GetOptions{})
|
_, err := schedClientSet.PriorityClasses().Get(pc.Name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if apierrors.IsNotFound(err) {
|
if apierrors.IsNotFound(err) {
|
||||||
// TODO: Remove this explicit conversion after scheduling api move to v1
|
_, err := schedClientSet.PriorityClasses().Create(pc)
|
||||||
v1beta1PriorityClass := &schedulingv1beta1.PriorityClass{}
|
|
||||||
if err := schedulingapiv1beta1.Convert_scheduling_PriorityClass_To_v1beta1_PriorityClass(pc, v1beta1PriorityClass, nil); err != nil {
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
_, err := schedClientSet.PriorityClasses().Create(v1beta1PriorityClass)
|
|
||||||
if err != nil && !apierrors.IsAlreadyExists(err) {
|
if err != nil && !apierrors.IsAlreadyExists(err) {
|
||||||
return false, err
|
return false, err
|
||||||
} else {
|
} else {
|
||||||
|
@ -35,6 +35,7 @@ go_library(
|
|||||||
deps = [
|
deps = [
|
||||||
"//pkg/apis/core:go_default_library",
|
"//pkg/apis/core:go_default_library",
|
||||||
"//pkg/apis/scheduling:go_default_library",
|
"//pkg/apis/scheduling:go_default_library",
|
||||||
|
"//pkg/apis/scheduling/v1:go_default_library",
|
||||||
"//pkg/features:go_default_library",
|
"//pkg/features:go_default_library",
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/scheduling/v1:go_default_library",
|
"//staging/src/k8s.io/api/scheduling/v1:go_default_library",
|
||||||
|
@ -35,6 +35,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/apis/core"
|
"k8s.io/kubernetes/pkg/apis/core"
|
||||||
api "k8s.io/kubernetes/pkg/apis/core"
|
api "k8s.io/kubernetes/pkg/apis/core"
|
||||||
"k8s.io/kubernetes/pkg/apis/scheduling"
|
"k8s.io/kubernetes/pkg/apis/scheduling"
|
||||||
|
schedulingapiv1 "k8s.io/kubernetes/pkg/apis/scheduling/v1"
|
||||||
"k8s.io/kubernetes/pkg/features"
|
"k8s.io/kubernetes/pkg/features"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -144,7 +145,7 @@ func priorityClassPermittedInNamespace(priorityClassName string, namespace strin
|
|||||||
// Only allow system priorities in the system namespace. This is to prevent abuse or incorrect
|
// Only allow system priorities in the system namespace. This is to prevent abuse or incorrect
|
||||||
// usage of these priorities. Pods created at these priorities could preempt system critical
|
// usage of these priorities. Pods created at these priorities could preempt system critical
|
||||||
// components.
|
// components.
|
||||||
for _, spc := range scheduling.SystemPriorityClasses() {
|
for _, spc := range schedulingapiv1.SystemPriorityClasses() {
|
||||||
if spc.Name == priorityClassName && namespace != metav1.NamespaceSystem {
|
if spc.Name == priorityClassName && namespace != metav1.NamespaceSystem {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user