mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-29 14:37:00 +00:00
Support sort-by timestamp in kubectl get
This commit is contained in:
parent
28333a0041
commit
a178b5d553
@ -156,10 +156,10 @@ func isLess(i, j reflect.Value) (bool, error) {
|
|||||||
case reflect.Ptr:
|
case reflect.Ptr:
|
||||||
return isLess(i.Elem(), j.Elem())
|
return isLess(i.Elem(), j.Elem())
|
||||||
case reflect.Struct:
|
case reflect.Struct:
|
||||||
// special case handling
|
// sort unversioned.Time
|
||||||
lessFuncList := []structLessFunc{timeLess}
|
in := i.Interface()
|
||||||
if ok, less := structLess(i, j, lessFuncList); ok {
|
if t, ok := in.(unversioned.Time); ok {
|
||||||
return less, nil
|
return t.Before(j.Interface().(unversioned.Time)), nil
|
||||||
}
|
}
|
||||||
// fallback to the fields comparision
|
// fallback to the fields comparision
|
||||||
for idx := 0; idx < i.NumField(); idx++ {
|
for idx := 0; idx < i.NumField(); idx++ {
|
||||||
@ -183,28 +183,6 @@ func isLess(i, j reflect.Value) (bool, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// structLessFunc checks whether i and j could be compared(the first return value),
|
|
||||||
// and if it could, return whether i is less than j(the second return value)
|
|
||||||
type structLessFunc func(i, j reflect.Value) (bool, bool)
|
|
||||||
|
|
||||||
// structLess returns whether i and j could be compared with the given function list
|
|
||||||
func structLess(i, j reflect.Value, lessFuncList []structLessFunc) (bool, bool) {
|
|
||||||
for _, lessFunc := range lessFuncList {
|
|
||||||
if ok, less := lessFunc(i, j); ok {
|
|
||||||
return ok, less
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false, false
|
|
||||||
}
|
|
||||||
|
|
||||||
// compare two unversioned.Time values.
|
|
||||||
func timeLess(i, j reflect.Value) (bool, bool) {
|
|
||||||
if i.Type() != reflect.TypeOf(unversioned.Unix(0, 0)) {
|
|
||||||
return false, false
|
|
||||||
}
|
|
||||||
return true, i.MethodByName("Before").Call([]reflect.Value{j})[0].Bool()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *RuntimeSort) Less(i, j int) bool {
|
func (r *RuntimeSort) Less(i, j int) bool {
|
||||||
iObj := r.objs[i]
|
iObj := r.objs[i]
|
||||||
jObj := r.objs[j]
|
jObj := r.objs[j]
|
||||||
|
Loading…
Reference in New Issue
Block a user