Change the timestamp unit to nanosecond.

This commit is contained in:
Random-Liu 2016-10-06 14:52:40 -07:00
parent a6aad1591b
commit 76056a47f9
6 changed files with 25 additions and 17 deletions

View File

@ -812,7 +812,7 @@ type PodSandboxStatus struct {
Metadata *PodSandboxMetadata `protobuf:"bytes,2,opt,name=metadata" json:"metadata,omitempty"` Metadata *PodSandboxMetadata `protobuf:"bytes,2,opt,name=metadata" json:"metadata,omitempty"`
// State of the sandbox. // State of the sandbox.
State *PodSandBoxState `protobuf:"varint,3,opt,name=state,enum=runtime.PodSandBoxState" json:"state,omitempty"` State *PodSandBoxState `protobuf:"varint,3,opt,name=state,enum=runtime.PodSandBoxState" json:"state,omitempty"`
// Creation timestamp of the sandbox // Creation timestamp of the sandbox in nanoseconds.
CreatedAt *int64 `protobuf:"varint,4,opt,name=created_at,json=createdAt" json:"created_at,omitempty"` CreatedAt *int64 `protobuf:"varint,4,opt,name=created_at,json=createdAt" json:"created_at,omitempty"`
// Network contains network status if network is handled by the runtime. // Network contains network status if network is handled by the runtime.
Network *PodSandboxNetworkStatus `protobuf:"bytes,5,opt,name=network" json:"network,omitempty"` Network *PodSandboxNetworkStatus `protobuf:"bytes,5,opt,name=network" json:"network,omitempty"`
@ -971,7 +971,7 @@ type PodSandbox struct {
Metadata *PodSandboxMetadata `protobuf:"bytes,2,opt,name=metadata" json:"metadata,omitempty"` Metadata *PodSandboxMetadata `protobuf:"bytes,2,opt,name=metadata" json:"metadata,omitempty"`
// The state of the PodSandbox // The state of the PodSandbox
State *PodSandBoxState `protobuf:"varint,3,opt,name=state,enum=runtime.PodSandBoxState" json:"state,omitempty"` State *PodSandBoxState `protobuf:"varint,3,opt,name=state,enum=runtime.PodSandBoxState" json:"state,omitempty"`
// Creation timestamps of the sandbox // Creation timestamps of the sandbox in nanoseconds
CreatedAt *int64 `protobuf:"varint,4,opt,name=created_at,json=createdAt" json:"created_at,omitempty"` CreatedAt *int64 `protobuf:"varint,4,opt,name=created_at,json=createdAt" json:"created_at,omitempty"`
// The labels of the PodSandbox // The labels of the PodSandbox
Labels map[string]string `protobuf:"bytes,5,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` Labels map[string]string `protobuf:"bytes,5,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
@ -1740,7 +1740,7 @@ type Container struct {
ImageRef *string `protobuf:"bytes,5,opt,name=image_ref,json=imageRef" json:"image_ref,omitempty"` ImageRef *string `protobuf:"bytes,5,opt,name=image_ref,json=imageRef" json:"image_ref,omitempty"`
// State is the state of the container. // State is the state of the container.
State *ContainerState `protobuf:"varint,6,opt,name=state,enum=runtime.ContainerState" json:"state,omitempty"` State *ContainerState `protobuf:"varint,6,opt,name=state,enum=runtime.ContainerState" json:"state,omitempty"`
// Creation time of the container. // Creation time of the container in nanoseconds.
CreatedAt *int64 `protobuf:"varint,7,opt,name=created_at,json=createdAt" json:"created_at,omitempty"` CreatedAt *int64 `protobuf:"varint,7,opt,name=created_at,json=createdAt" json:"created_at,omitempty"`
// Labels are key value pairs that may be used to scope and select individual resources. // Labels are key value pairs that may be used to scope and select individual resources.
Labels map[string]string `protobuf:"bytes,8,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` Labels map[string]string `protobuf:"bytes,8,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
@ -1862,11 +1862,11 @@ type ContainerStatus struct {
Metadata *ContainerMetadata `protobuf:"bytes,2,opt,name=metadata" json:"metadata,omitempty"` Metadata *ContainerMetadata `protobuf:"bytes,2,opt,name=metadata" json:"metadata,omitempty"`
// Status of the container. // Status of the container.
State *ContainerState `protobuf:"varint,3,opt,name=state,enum=runtime.ContainerState" json:"state,omitempty"` State *ContainerState `protobuf:"varint,3,opt,name=state,enum=runtime.ContainerState" json:"state,omitempty"`
// Creation time of the container. // Creation time of the container in nanoseconds.
CreatedAt *int64 `protobuf:"varint,4,opt,name=created_at,json=createdAt" json:"created_at,omitempty"` CreatedAt *int64 `protobuf:"varint,4,opt,name=created_at,json=createdAt" json:"created_at,omitempty"`
// Start time of the container. // Start time of the container in nanoseconds.
StartedAt *int64 `protobuf:"varint,5,opt,name=started_at,json=startedAt" json:"started_at,omitempty"` StartedAt *int64 `protobuf:"varint,5,opt,name=started_at,json=startedAt" json:"started_at,omitempty"`
// Finish time of the container. // Finish time of the container in nanoseconds.
FinishedAt *int64 `protobuf:"varint,6,opt,name=finished_at,json=finishedAt" json:"finished_at,omitempty"` FinishedAt *int64 `protobuf:"varint,6,opt,name=finished_at,json=finishedAt" json:"finished_at,omitempty"`
// Exit code of the container. // Exit code of the container.
ExitCode *int32 `protobuf:"varint,7,opt,name=exit_code,json=exitCode" json:"exit_code,omitempty"` ExitCode *int32 `protobuf:"varint,7,opt,name=exit_code,json=exitCode" json:"exit_code,omitempty"`

View File

@ -251,7 +251,7 @@ message PodSandboxStatus {
optional PodSandboxMetadata metadata = 2; optional PodSandboxMetadata metadata = 2;
// State of the sandbox. // State of the sandbox.
optional PodSandBoxState state = 3; optional PodSandBoxState state = 3;
// Creation timestamp of the sandbox // Creation timestamp of the sandbox in nanoseconds.
optional int64 created_at = 4; optional int64 created_at = 4;
// Network contains network status if network is handled by the runtime. // Network contains network status if network is handled by the runtime.
optional PodSandboxNetworkStatus network = 5; optional PodSandboxNetworkStatus network = 5;
@ -296,7 +296,7 @@ message PodSandbox {
optional PodSandboxMetadata metadata = 2; optional PodSandboxMetadata metadata = 2;
// The state of the PodSandbox // The state of the PodSandbox
optional PodSandBoxState state = 3; optional PodSandBoxState state = 3;
// Creation timestamps of the sandbox // Creation timestamps of the sandbox in nanoseconds
optional int64 created_at = 4; optional int64 created_at = 4;
// The labels of the PodSandbox // The labels of the PodSandbox
map<string, string> labels = 5; map<string, string> labels = 5;
@ -533,7 +533,7 @@ message Container {
optional string image_ref = 5; optional string image_ref = 5;
// State is the state of the container. // State is the state of the container.
optional ContainerState state = 6; optional ContainerState state = 6;
// Creation time of the container. // Creation time of the container in nanoseconds.
optional int64 created_at = 7; optional int64 created_at = 7;
// Labels are key value pairs that may be used to scope and select individual resources. // Labels are key value pairs that may be used to scope and select individual resources.
map<string, string> labels = 8; map<string, string> labels = 8;
@ -560,11 +560,11 @@ message ContainerStatus {
optional ContainerMetadata metadata = 2; optional ContainerMetadata metadata = 2;
// Status of the container. // Status of the container.
optional ContainerState state = 3; optional ContainerState state = 3;
// Creation time of the container. // Creation time of the container in nanoseconds.
optional int64 created_at = 4; optional int64 created_at = 4;
// Start time of the container. // Start time of the container in nanoseconds.
optional int64 started_at = 5; optional int64 started_at = 5;
// Finish time of the container. // Finish time of the container in nanoseconds.
optional int64 finished_at = 6; optional int64 finished_at = 6;
// Exit code of the container. // Exit code of the container.
optional int32 exit_code = 7; optional int32 exit_code = 7;

View File

@ -19,6 +19,7 @@ package dockershim
import ( import (
"fmt" "fmt"
"strings" "strings"
"time"
dockertypes "github.com/docker/engine-api/types" dockertypes "github.com/docker/engine-api/types"
@ -57,6 +58,8 @@ func toRuntimeAPIContainer(c *dockertypes.Container) (*runtimeApi.Container, err
} }
labels, annotations := extractLabels(c.Labels) labels, annotations := extractLabels(c.Labels)
sandboxID := c.Labels[sandboxIDLabelKey] sandboxID := c.Labels[sandboxIDLabelKey]
// The timestamp in dockertypes.Container is in seconds.
createdAt := c.Created * int64(time.Second)
return &runtimeApi.Container{ return &runtimeApi.Container{
Id: &c.ID, Id: &c.ID,
PodSandboxId: &sandboxID, PodSandboxId: &sandboxID,
@ -64,6 +67,7 @@ func toRuntimeAPIContainer(c *dockertypes.Container) (*runtimeApi.Container, err
Image: &runtimeApi.ImageSpec{Image: &c.Image}, Image: &runtimeApi.ImageSpec{Image: &c.Image},
ImageRef: &c.ImageID, ImageRef: &c.ImageID,
State: &state, State: &state,
CreatedAt: &createdAt,
Labels: labels, Labels: labels,
Annotations: annotations, Annotations: annotations,
}, nil }, nil
@ -117,11 +121,13 @@ func toRuntimeAPISandbox(c *dockertypes.Container) (*runtimeApi.PodSandbox, erro
return nil, err return nil, err
} }
labels, annotations := extractLabels(c.Labels) labels, annotations := extractLabels(c.Labels)
// The timestamp in dockertypes.Container is in seconds.
createdAt := c.Created * int64(time.Second)
return &runtimeApi.PodSandbox{ return &runtimeApi.PodSandbox{
Id: &c.ID, Id: &c.ID,
Metadata: metadata, Metadata: metadata,
State: &state, State: &state,
CreatedAt: &c.Created, CreatedAt: &createdAt,
Labels: labels, Labels: labels,
Annotations: annotations, Annotations: annotations,
}, nil }, nil

View File

@ -61,6 +61,7 @@ func TestListContainers(t *testing.T) {
expected := []*runtimeApi.Container{} expected := []*runtimeApi.Container{}
state := runtimeApi.ContainerState_RUNNING state := runtimeApi.ContainerState_RUNNING
var createdAt int64 = 0
for i := range configs { for i := range configs {
// We don't care about the sandbox id; pass a bogus one. // We don't care about the sandbox id; pass a bogus one.
sandboxID := fmt.Sprintf("sandboxid%d", i) sandboxID := fmt.Sprintf("sandboxid%d", i)
@ -77,6 +78,7 @@ func TestListContainers(t *testing.T) {
Id: &id, Id: &id,
PodSandboxId: &sandboxID, PodSandboxId: &sandboxID,
State: &state, State: &state,
CreatedAt: &createdAt,
Image: configs[i].Image, Image: configs[i].Image,
ImageRef: &imageRef, ImageRef: &imageRef,
Labels: configs[i].Labels, Labels: configs[i].Labels,

View File

@ -379,16 +379,16 @@ func (m *kubeGenericRuntimeManager) getPodContainerStatuses(uid kubetypes.UID, n
Hash: annotatedInfo.Hash, Hash: annotatedInfo.Hash,
RestartCount: annotatedInfo.RestartCount, RestartCount: annotatedInfo.RestartCount,
State: toKubeContainerState(c.GetState()), State: toKubeContainerState(c.GetState()),
CreatedAt: time.Unix(status.GetCreatedAt(), 0), CreatedAt: time.Unix(0, status.GetCreatedAt()),
} }
if c.GetState() == runtimeApi.ContainerState_RUNNING { if c.GetState() == runtimeApi.ContainerState_RUNNING {
cStatus.StartedAt = time.Unix(status.GetStartedAt(), 0) cStatus.StartedAt = time.Unix(0, status.GetStartedAt())
} else { } else {
cStatus.Reason = status.GetReason() cStatus.Reason = status.GetReason()
cStatus.Message = status.GetMessage() cStatus.Message = status.GetMessage()
cStatus.ExitCode = int(status.GetExitCode()) cStatus.ExitCode = int(status.GetExitCode())
cStatus.FinishedAt = time.Unix(status.GetFinishedAt(), 0) cStatus.FinishedAt = time.Unix(0, status.GetFinishedAt())
} }
tMessage := getTerminationMessage(status, cStatus, annotatedInfo.TerminationMessagePath) tMessage := getTerminationMessage(status, cStatus, annotatedInfo.TerminationMessagePath)

View File

@ -141,7 +141,7 @@ func (cgc *containerGC) evictableContainers(minAge time.Duration) (containersByE
continue continue
} }
createdAt := time.Unix(container.GetCreatedAt(), 0) createdAt := time.Unix(0, container.GetCreatedAt())
if newestGCTime.Before(createdAt) { if newestGCTime.Before(createdAt) {
continue continue
} }