mirror of https://github.com/k3s-io/k3s
Merge pull request #69431 from Huang-Wei/kubectl-prioriyclass
`kubectl get priorityclass` prints value columnpull/58/head
commit
509fd5caea
|
@ -354,7 +354,6 @@ pkg/registry/rbac/rolebinding
|
||||||
pkg/registry/rbac/rolebinding/policybased
|
pkg/registry/rbac/rolebinding/policybased
|
||||||
pkg/registry/rbac/validation
|
pkg/registry/rbac/validation
|
||||||
pkg/registry/registrytest
|
pkg/registry/registrytest
|
||||||
pkg/registry/scheduling/priorityclass/storage
|
|
||||||
pkg/registry/scheduling/rest
|
pkg/registry/scheduling/rest
|
||||||
pkg/registry/settings/podpreset/storage
|
pkg/registry/settings/podpreset/storage
|
||||||
pkg/registry/settings/rest
|
pkg/registry/settings/rest
|
||||||
|
|
|
@ -25,6 +25,7 @@ go_test(
|
||||||
"//pkg/apis/extensions:go_default_library",
|
"//pkg/apis/extensions:go_default_library",
|
||||||
"//pkg/apis/networking:go_default_library",
|
"//pkg/apis/networking:go_default_library",
|
||||||
"//pkg/apis/policy:go_default_library",
|
"//pkg/apis/policy:go_default_library",
|
||||||
|
"//pkg/apis/scheduling:go_default_library",
|
||||||
"//pkg/apis/storage:go_default_library",
|
"//pkg/apis/storage:go_default_library",
|
||||||
"//pkg/client/clientset_generated/internalclientset:go_default_library",
|
"//pkg/client/clientset_generated/internalclientset:go_default_library",
|
||||||
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
|
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
|
||||||
|
@ -97,6 +98,7 @@ go_library(
|
||||||
"//staging/src/k8s.io/api/extensions/v1beta1:go_default_library",
|
"//staging/src/k8s.io/api/extensions/v1beta1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/rbac/v1:go_default_library",
|
"//staging/src/k8s.io/api/rbac/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/rbac/v1beta1:go_default_library",
|
"//staging/src/k8s.io/api/rbac/v1beta1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/api/scheduling/v1beta1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/storage/v1:go_default_library",
|
"//staging/src/k8s.io/api/storage/v1: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/api/meta:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library",
|
||||||
|
|
|
@ -35,6 +35,7 @@ import (
|
||||||
apiv1 "k8s.io/api/core/v1"
|
apiv1 "k8s.io/api/core/v1"
|
||||||
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
|
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
|
||||||
rbacv1beta1 "k8s.io/api/rbac/v1beta1"
|
rbacv1beta1 "k8s.io/api/rbac/v1beta1"
|
||||||
|
schedulingv1beta1 "k8s.io/api/scheduling/v1beta1"
|
||||||
storagev1 "k8s.io/api/storage/v1"
|
storagev1 "k8s.io/api/storage/v1"
|
||||||
"k8s.io/apimachinery/pkg/api/meta"
|
"k8s.io/apimachinery/pkg/api/meta"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
@ -55,6 +56,7 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/apis/networking"
|
"k8s.io/kubernetes/pkg/apis/networking"
|
||||||
"k8s.io/kubernetes/pkg/apis/policy"
|
"k8s.io/kubernetes/pkg/apis/policy"
|
||||||
"k8s.io/kubernetes/pkg/apis/rbac"
|
"k8s.io/kubernetes/pkg/apis/rbac"
|
||||||
|
"k8s.io/kubernetes/pkg/apis/scheduling"
|
||||||
"k8s.io/kubernetes/pkg/apis/storage"
|
"k8s.io/kubernetes/pkg/apis/storage"
|
||||||
storageutil "k8s.io/kubernetes/pkg/apis/storage/util"
|
storageutil "k8s.io/kubernetes/pkg/apis/storage/util"
|
||||||
"k8s.io/kubernetes/pkg/printers"
|
"k8s.io/kubernetes/pkg/printers"
|
||||||
|
@ -438,6 +440,15 @@ func AddHandlers(h printers.PrintHandler) {
|
||||||
h.TableHandler(resorceQuotaColumnDefinitions, printResourceQuota)
|
h.TableHandler(resorceQuotaColumnDefinitions, printResourceQuota)
|
||||||
h.TableHandler(resorceQuotaColumnDefinitions, printResourceQuotaList)
|
h.TableHandler(resorceQuotaColumnDefinitions, printResourceQuotaList)
|
||||||
|
|
||||||
|
priorityClassColumnDefinitions := []metav1beta1.TableColumnDefinition{
|
||||||
|
{Name: "Name", Type: "string", Format: "name", Description: metav1.ObjectMeta{}.SwaggerDoc()["name"]},
|
||||||
|
{Name: "Value", Type: "integer", Description: schedulingv1beta1.PriorityClass{}.SwaggerDoc()["value"]},
|
||||||
|
{Name: "Global-Default", Type: "boolean", Description: schedulingv1beta1.PriorityClass{}.SwaggerDoc()["globalDefault"]},
|
||||||
|
{Name: "Age", Type: "string", Description: metav1.ObjectMeta{}.SwaggerDoc()["creationTimestamp"]},
|
||||||
|
}
|
||||||
|
h.TableHandler(priorityClassColumnDefinitions, printPriorityClass)
|
||||||
|
h.TableHandler(priorityClassColumnDefinitions, printPriorityClassList)
|
||||||
|
|
||||||
AddDefaultHandlers(h)
|
AddDefaultHandlers(h)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1938,3 +1949,28 @@ func printResourceQuotaList(list *api.ResourceQuotaList, options printers.PrintO
|
||||||
}
|
}
|
||||||
return rows, nil
|
return rows, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func printPriorityClass(obj *scheduling.PriorityClass, options printers.PrintOptions) ([]metav1beta1.TableRow, error) {
|
||||||
|
row := metav1beta1.TableRow{
|
||||||
|
Object: runtime.RawExtension{Object: obj},
|
||||||
|
}
|
||||||
|
|
||||||
|
name := obj.Name
|
||||||
|
value := obj.Value
|
||||||
|
globalDefault := obj.GlobalDefault
|
||||||
|
row.Cells = append(row.Cells, name, int64(value), globalDefault, translateTimestampSince(obj.CreationTimestamp))
|
||||||
|
|
||||||
|
return []metav1beta1.TableRow{row}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func printPriorityClassList(list *scheduling.PriorityClassList, options printers.PrintOptions) ([]metav1beta1.TableRow, error) {
|
||||||
|
rows := make([]metav1beta1.TableRow, 0, len(list.Items))
|
||||||
|
for i := range list.Items {
|
||||||
|
r, err := printPriorityClass(&list.Items[i], options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
rows = append(rows, r...)
|
||||||
|
}
|
||||||
|
return rows, nil
|
||||||
|
}
|
||||||
|
|
|
@ -52,6 +52,7 @@ import (
|
||||||
api "k8s.io/kubernetes/pkg/apis/core"
|
api "k8s.io/kubernetes/pkg/apis/core"
|
||||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
"k8s.io/kubernetes/pkg/apis/policy"
|
"k8s.io/kubernetes/pkg/apis/policy"
|
||||||
|
"k8s.io/kubernetes/pkg/apis/scheduling"
|
||||||
"k8s.io/kubernetes/pkg/apis/storage"
|
"k8s.io/kubernetes/pkg/apis/storage"
|
||||||
"k8s.io/kubernetes/pkg/printers"
|
"k8s.io/kubernetes/pkg/printers"
|
||||||
)
|
)
|
||||||
|
@ -3491,6 +3492,51 @@ func TestPrintLease(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestPrintPriorityClass(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
pc scheduling.PriorityClass
|
||||||
|
expect string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
scheduling.PriorityClass{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: "pc1",
|
||||||
|
CreationTimestamp: metav1.Time{Time: time.Now().Add(1.9e9)},
|
||||||
|
},
|
||||||
|
Value: 1,
|
||||||
|
},
|
||||||
|
"pc1\t1\tfalse\t0s\n",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
scheduling.PriorityClass{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: "pc2",
|
||||||
|
CreationTimestamp: metav1.Time{Time: time.Now().Add(-3e11)},
|
||||||
|
},
|
||||||
|
Value: 1000000000,
|
||||||
|
GlobalDefault: true,
|
||||||
|
},
|
||||||
|
"pc2\t1000000000\ttrue\t5m\n",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
buf := bytes.NewBuffer([]byte{})
|
||||||
|
for _, test := range tests {
|
||||||
|
table, err := printers.NewTablePrinter().With(AddHandlers).PrintTable(&test.pc, printers.PrintOptions{})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
verifyTable(t, table)
|
||||||
|
if err := printers.PrintTable(table, buf, printers.PrintOptions{NoHeaders: true}); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if buf.String() != test.expect {
|
||||||
|
t.Fatalf("Expected: %s, got: %s", test.expect, buf.String())
|
||||||
|
}
|
||||||
|
buf.Reset()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func verifyTable(t *testing.T, table *metav1beta1.Table) {
|
func verifyTable(t *testing.T, table *metav1beta1.Table) {
|
||||||
var panicErr interface{}
|
var panicErr interface{}
|
||||||
func() {
|
func() {
|
||||||
|
|
|
@ -30,6 +30,9 @@ 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/printers:go_default_library",
|
||||||
|
"//pkg/printers/internalversion:go_default_library",
|
||||||
|
"//pkg/printers/storage:go_default_library",
|
||||||
"//pkg/registry/scheduling/priorityclass:go_default_library",
|
"//pkg/registry/scheduling/priorityclass: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",
|
||||||
|
|
|
@ -27,10 +27,13 @@ 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"
|
||||||
|
"k8s.io/kubernetes/pkg/printers"
|
||||||
|
printersinternal "k8s.io/kubernetes/pkg/printers/internalversion"
|
||||||
|
printerstorage "k8s.io/kubernetes/pkg/printers/storage"
|
||||||
"k8s.io/kubernetes/pkg/registry/scheduling/priorityclass"
|
"k8s.io/kubernetes/pkg/registry/scheduling/priorityclass"
|
||||||
)
|
)
|
||||||
|
|
||||||
// rest implements a RESTStorage for priority classes against etcd
|
// REST implements a RESTStorage for priority classes against etcd
|
||||||
type REST struct {
|
type REST struct {
|
||||||
*genericregistry.Store
|
*genericregistry.Store
|
||||||
}
|
}
|
||||||
|
@ -45,6 +48,8 @@ func NewREST(optsGetter generic.RESTOptionsGetter) *REST {
|
||||||
CreateStrategy: priorityclass.Strategy,
|
CreateStrategy: priorityclass.Strategy,
|
||||||
UpdateStrategy: priorityclass.Strategy,
|
UpdateStrategy: priorityclass.Strategy,
|
||||||
DeleteStrategy: priorityclass.Strategy,
|
DeleteStrategy: priorityclass.Strategy,
|
||||||
|
|
||||||
|
TableConvertor: printerstorage.TableConvertor{TablePrinter: printers.NewTablePrinter().With(printersinternal.AddHandlers)},
|
||||||
}
|
}
|
||||||
options := &generic.StoreOptions{RESTOptions: optsGetter}
|
options := &generic.StoreOptions{RESTOptions: optsGetter}
|
||||||
if err := store.CompleteWithOptions(options); err != nil {
|
if err := store.CompleteWithOptions(options); err != nil {
|
||||||
|
|
Loading…
Reference in New Issue