diff --git a/pkg/fission-cli/logdb/influxdb.go b/pkg/fission-cli/logdb/influxdb.go index 01c6fada..aca6201f 100644 --- a/pkg/fission-cli/logdb/influxdb.go +++ b/pkg/fission-cli/logdb/influxdb.go @@ -22,6 +22,7 @@ import ( "net/http" "net/url" "path" + "sort" "strconv" "strings" "time" @@ -130,6 +131,8 @@ func (influx InfluxDB) GetLogs(filter LogFilter) ([]LogEntry, error) { } } + sort.Sort(ByTimestamp(logEntries, filter.Reverse)) + return logEntries, nil } diff --git a/pkg/fission-cli/logdb/logdb.go b/pkg/fission-cli/logdb/logdb.go index 41d61a51..feb88bc9 100644 --- a/pkg/fission-cli/logdb/logdb.go +++ b/pkg/fission-cli/logdb/logdb.go @@ -50,6 +50,25 @@ type LogEntry struct { Pod string } +type ByTimestampSort struct { + entries []LogEntry + desc bool +} + +func (a ByTimestampSort) Len() int { return len(a.entries) } +func (a ByTimestampSort) Swap(i, j int) { a.entries[i], a.entries[j] = a.entries[j], a.entries[i] } +func (a ByTimestampSort) Less(i, j int) bool { + if a.desc { + return a.entries[i].Timestamp.UnixNano() > a.entries[j].Timestamp.UnixNano() + } else { + return a.entries[i].Timestamp.UnixNano() < a.entries[j].Timestamp.UnixNano() + } +} + +func ByTimestamp(entries []LogEntry, desc bool) ByTimestampSort { + return ByTimestampSort{entries, desc} +} + func GetLogDB(dbType string, serverURL string) (LogDatabase, error) { switch dbType { case INFLUXDB: