add the timeutils package

Docker-DCO-1.1-Signed-off-by: Cristian Staretu <cristian.staretu@gmail.com> (github: unclejack)
This commit is contained in:
unclejack 2014-09-15 21:44:58 +03:00
parent 41e625eb7c
commit 9ae3134dc9
7 changed files with 34 additions and 16 deletions

View File

@ -34,6 +34,7 @@ import (
"github.com/docker/docker/pkg/parsers/filters"
"github.com/docker/docker/pkg/signal"
"github.com/docker/docker/pkg/term"
"github.com/docker/docker/pkg/timeutils"
"github.com/docker/docker/pkg/units"
"github.com/docker/docker/registry"
"github.com/docker/docker/runconfig"
@ -1650,7 +1651,7 @@ func (cli *DockerCli) CmdEvents(args ...string) error {
loc = time.FixedZone(time.Now().Zone())
)
var setTime = func(key, value string) {
format := utils.RFC3339NanoFixed
format := timeutils.RFC3339NanoFixed
if len(value) < len(format) {
format = format[:len(value)]
}

View File

@ -8,12 +8,11 @@ import (
"os"
"strconv"
"github.com/docker/docker/pkg/log"
"github.com/docker/docker/pkg/tailfile"
"github.com/docker/docker/engine"
"github.com/docker/docker/pkg/jsonlog"
"github.com/docker/docker/utils"
"github.com/docker/docker/pkg/log"
"github.com/docker/docker/pkg/tailfile"
"github.com/docker/docker/pkg/timeutils"
)
func (daemon *Daemon) ContainerLogs(job *engine.Job) engine.Status {
@ -35,7 +34,7 @@ func (daemon *Daemon) ContainerLogs(job *engine.Job) engine.Status {
return job.Errorf("You must choose at least one stream")
}
if times {
format = utils.RFC3339NanoFixed
format = timeutils.RFC3339NanoFixed
}
if tail == "" {
tail = "all"

View File

@ -8,7 +8,7 @@ import (
"testing"
"time"
"github.com/docker/docker/utils"
"github.com/docker/docker/pkg/timeutils"
)
// This used to work, it test a log of PageSize-1 (gh#4851)
@ -104,7 +104,7 @@ func TestLogsTimestamps(t *testing.T) {
for _, l := range lines {
if l != "" {
_, err := time.Parse(utils.RFC3339NanoFixed+" ", ts.FindString(l))
_, err := time.Parse(timeutils.RFC3339NanoFixed+" ", ts.FindString(l))
if err != nil {
t.Fatalf("Failed to parse timestamp from %v: %v", l, err)
}

View File

@ -0,0 +1 @@
Cristian Staretu <cristian.staretu@gmail.com> (@unclejack)

23
pkg/timeutils/json.go Normal file
View File

@ -0,0 +1,23 @@
package timeutils
import (
"errors"
"time"
)
const (
// Define our own version of RFC339Nano because we want one
// that pads the nano seconds part with zeros to ensure
// the timestamps are aligned in the logs.
RFC3339NanoFixed = "2006-01-02T15:04:05.000000000Z07:00"
JSONFormat = `"` + time.RFC3339Nano + `"`
)
func FastMarshalJSON(t time.Time) (string, error) {
if y := t.Year(); y < 0 || y >= 10000 {
// RFC 3339 is clear that years are 4 digits exactly.
// See golang.org/issue/4556#c15 for more discussion.
return "", errors.New("Time.MarshalJSON: year outside of range [0,9999]")
}
return t.Format(JSONFormat), nil
}

View File

@ -8,6 +8,7 @@ import (
"time"
"github.com/docker/docker/pkg/term"
"github.com/docker/docker/pkg/timeutils"
"github.com/docker/docker/pkg/units"
)
@ -100,7 +101,7 @@ func (jm *JSONMessage) Display(out io.Writer, isTerminal bool) error {
return nil
}
if jm.Time != 0 {
fmt.Fprintf(out, "%s ", time.Unix(jm.Time, 0).Format(RFC3339NanoFixed))
fmt.Fprintf(out, "%s ", time.Unix(jm.Time, 0).Format(timeutils.RFC3339NanoFixed))
}
if jm.ID != "" {
fmt.Fprintf(out, "%s: ", jm.ID)

View File

@ -24,13 +24,6 @@ import (
"github.com/docker/docker/pkg/log"
)
const (
// Define our own version of RFC339Nano because we want one
// that pads the nano seconds part with zeros to ensure
// the timestamps are aligned in the logs.
RFC3339NanoFixed = "2006-01-02T15:04:05.000000000Z07:00"
)
type KeyValuePair struct {
Key string
Value string