Change the timestamp unit to nanosecond.
This commit is contained in:
parent
a6aad1591b
commit
76056a47f9
@ -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"`
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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,
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user