Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
3beae6b7
Commit
3beae6b7
authored
Nov 05, 2015
by
Yu-Ju Hong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add Status in the runtime Container type
This is necessary for the generic PLEG to distinguish container events.
parent
c2dd2761
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
87 additions
and
25 deletions
+87
-25
runtime.go
pkg/kubelet/container/runtime.go
+11
-0
convert.go
pkg/kubelet/dockertools/convert.go
+16
-0
convert_test.go
pkg/kubelet/dockertools/convert_test.go
+20
-0
docker_test.go
pkg/kubelet/dockertools/docker_test.go
+32
-24
rkt.go
pkg/kubelet/rkt/rkt.go
+8
-1
No files found.
pkg/kubelet/container/runtime.go
View file @
3beae6b7
...
...
@@ -198,6 +198,15 @@ func (c *ContainerID) UnmarshalJSON(data []byte) error {
return
c
.
ParseString
(
string
(
data
))
}
type
ContainerStatus
string
const
(
ContainerStatusRunning
ContainerStatus
=
"running"
ContainerStatusExited
ContainerStatus
=
"exited"
// This unknown encompasses all the statuses that we currently don't care.
ContainerStatusUnknown
ContainerStatus
=
"unknown"
)
// Container provides the runtime information for a container, such as ID, hash,
// status of the container.
type
Container
struct
{
...
...
@@ -215,6 +224,8 @@ type Container struct {
// The timestamp of the creation time of the container.
// TODO(yifan): Consider to move it to api.ContainerStatus.
Created
int64
// Status is the status of the container.
Status
ContainerStatus
}
// Basic information about a container image.
...
...
pkg/kubelet/dockertools/convert.go
View file @
3beae6b7
...
...
@@ -18,6 +18,7 @@ package dockertools
import
(
"fmt"
"strings"
docker
"github.com/fsouza/go-dockerclient"
kubecontainer
"k8s.io/kubernetes/pkg/kubelet/container"
...
...
@@ -27,6 +28,19 @@ import (
// This file contains helper functions to convert docker API types to runtime
// (kubecontainer) types.
func
mapStatus
(
status
string
)
kubecontainer
.
ContainerStatus
{
// Parse the status string in docker.APIContainers. This could break when
// we upgrade docker.
switch
{
case
strings
.
HasPrefix
(
status
,
"Up"
)
:
return
kubecontainer
.
ContainerStatusRunning
case
strings
.
HasPrefix
(
status
,
"Exited"
)
:
return
kubecontainer
.
ContainerStatusExited
default
:
return
kubecontainer
.
ContainerStatusUnknown
}
}
// Converts docker.APIContainers to kubecontainer.Container.
func
toRuntimeContainer
(
c
*
docker
.
APIContainers
)
(
*
kubecontainer
.
Container
,
error
)
{
if
c
==
nil
{
...
...
@@ -37,12 +51,14 @@ func toRuntimeContainer(c *docker.APIContainers) (*kubecontainer.Container, erro
if
err
!=
nil
{
return
nil
,
err
}
return
&
kubecontainer
.
Container
{
ID
:
kubetypes
.
DockerID
(
c
.
ID
)
.
ContainerID
(),
Name
:
dockerName
.
ContainerName
,
Image
:
c
.
Image
,
Hash
:
hash
,
Created
:
c
.
Created
,
Status
:
mapStatus
(
c
.
Status
),
},
nil
}
...
...
pkg/kubelet/dockertools/convert_test.go
View file @
3beae6b7
...
...
@@ -24,12 +24,31 @@ import (
kubecontainer
"k8s.io/kubernetes/pkg/kubelet/container"
)
func
TestMapStatus
(
t
*
testing
.
T
)
{
testCases
:=
[]
struct
{
input
string
expected
kubecontainer
.
ContainerStatus
}{
{
input
:
"Up 5 hours"
,
expected
:
kubecontainer
.
ContainerStatusRunning
},
{
input
:
"Exited (0) 2 hours ago"
,
expected
:
kubecontainer
.
ContainerStatusExited
},
{
input
:
"Created"
,
expected
:
kubecontainer
.
ContainerStatusUnknown
},
{
input
:
"Random string"
,
expected
:
kubecontainer
.
ContainerStatusUnknown
},
}
for
i
,
test
:=
range
testCases
{
if
actual
:=
mapStatus
(
test
.
input
);
actual
!=
test
.
expected
{
t
.
Errorf
(
"Test[%d]: expected %q, got %q"
,
i
,
test
.
expected
,
actual
)
}
}
}
func
TestToRuntimeContainer
(
t
*
testing
.
T
)
{
original
:=
&
docker
.
APIContainers
{
ID
:
"ab2cdf"
,
Image
:
"bar_image"
,
Created
:
12345
,
Names
:
[]
string
{
"/k8s_bar.5678_foo_ns_1234_42"
},
Status
:
"Up 5 hours"
,
}
expected
:=
&
kubecontainer
.
Container
{
ID
:
kubecontainer
.
ContainerID
{
"docker"
,
"ab2cdf"
},
...
...
@@ -37,6 +56,7 @@ func TestToRuntimeContainer(t *testing.T) {
Image
:
"bar_image"
,
Hash
:
0x5678
,
Created
:
12345
,
Status
:
kubecontainer
.
ContainerStatusRunning
,
}
actual
,
err
:=
toRuntimeContainer
(
original
)
...
...
pkg/kubelet/dockertools/docker_test.go
View file @
3beae6b7
...
...
@@ -580,14 +580,16 @@ func TestFindContainersByPod(t *testing.T) {
Namespace
:
"ns"
,
Containers
:
[]
*
kubecontainer
.
Container
{
{
ID
:
kubetypes
.
DockerID
(
"foobar"
)
.
ContainerID
(),
Name
:
"foobar"
,
Hash
:
0x1234
,
ID
:
kubetypes
.
DockerID
(
"foobar"
)
.
ContainerID
(),
Name
:
"foobar"
,
Hash
:
0x1234
,
Status
:
kubecontainer
.
ContainerStatusUnknown
,
},
{
ID
:
kubetypes
.
DockerID
(
"baz"
)
.
ContainerID
(),
Name
:
"baz"
,
Hash
:
0x1234
,
ID
:
kubetypes
.
DockerID
(
"baz"
)
.
ContainerID
(),
Name
:
"baz"
,
Hash
:
0x1234
,
Status
:
kubecontainer
.
ContainerStatusUnknown
,
},
},
},
...
...
@@ -597,9 +599,10 @@ func TestFindContainersByPod(t *testing.T) {
Namespace
:
"ns"
,
Containers
:
[]
*
kubecontainer
.
Container
{
{
ID
:
kubetypes
.
DockerID
(
"barbar"
)
.
ContainerID
(),
Name
:
"barbar"
,
Hash
:
0x1234
,
ID
:
kubetypes
.
DockerID
(
"barbar"
)
.
ContainerID
(),
Name
:
"barbar"
,
Hash
:
0x1234
,
Status
:
kubecontainer
.
ContainerStatusUnknown
,
},
},
},
...
...
@@ -638,19 +641,22 @@ func TestFindContainersByPod(t *testing.T) {
Namespace
:
"ns"
,
Containers
:
[]
*
kubecontainer
.
Container
{
{
ID
:
kubetypes
.
DockerID
(
"foobar"
)
.
ContainerID
(),
Name
:
"foobar"
,
Hash
:
0x1234
,
ID
:
kubetypes
.
DockerID
(
"foobar"
)
.
ContainerID
(),
Name
:
"foobar"
,
Hash
:
0x1234
,
Status
:
kubecontainer
.
ContainerStatusUnknown
,
},
{
ID
:
kubetypes
.
DockerID
(
"barfoo"
)
.
ContainerID
(),
Name
:
"barfoo"
,
Hash
:
0x1234
,
ID
:
kubetypes
.
DockerID
(
"barfoo"
)
.
ContainerID
(),
Name
:
"barfoo"
,
Hash
:
0x1234
,
Status
:
kubecontainer
.
ContainerStatusUnknown
,
},
{
ID
:
kubetypes
.
DockerID
(
"baz"
)
.
ContainerID
(),
Name
:
"baz"
,
Hash
:
0x1234
,
ID
:
kubetypes
.
DockerID
(
"baz"
)
.
ContainerID
(),
Name
:
"baz"
,
Hash
:
0x1234
,
Status
:
kubecontainer
.
ContainerStatusUnknown
,
},
},
},
...
...
@@ -660,9 +666,10 @@ func TestFindContainersByPod(t *testing.T) {
Namespace
:
"ns"
,
Containers
:
[]
*
kubecontainer
.
Container
{
{
ID
:
kubetypes
.
DockerID
(
"barbar"
)
.
ContainerID
(),
Name
:
"barbar"
,
Hash
:
0x1234
,
ID
:
kubetypes
.
DockerID
(
"barbar"
)
.
ContainerID
(),
Name
:
"barbar"
,
Hash
:
0x1234
,
Status
:
kubecontainer
.
ContainerStatusUnknown
,
},
},
},
...
...
@@ -672,9 +679,10 @@ func TestFindContainersByPod(t *testing.T) {
Namespace
:
"ns"
,
Containers
:
[]
*
kubecontainer
.
Container
{
{
ID
:
kubetypes
.
DockerID
(
"bazbaz"
)
.
ContainerID
(),
Name
:
"bazbaz"
,
Hash
:
0x1234
,
ID
:
kubetypes
.
DockerID
(
"bazbaz"
)
.
ContainerID
(),
Name
:
"bazbaz"
,
Hash
:
0x1234
,
Status
:
kubecontainer
.
ContainerStatusUnknown
,
},
},
},
...
...
pkg/kubelet/rkt/rkt.go
View file @
3beae6b7
...
...
@@ -793,7 +793,14 @@ func (r *Runtime) GetPods(all bool) ([]*kubecontainer.Pod, error) {
var
pods
[]
*
kubecontainer
.
Pod
for
_
,
u
:=
range
units
{
if
strings
.
HasPrefix
(
u
.
Name
,
kubernetesUnitPrefix
)
{
if
!
all
&&
u
.
SubState
!=
"running"
{
var
status
kubecontainer
.
ContainerStatus
switch
{
case
u
.
SubState
==
"running"
:
status
=
kubecontainer
.
ContainerStatusRunning
default
:
status
=
kubecontainer
.
ContainerStatusExited
}
if
!
all
&&
status
!=
kubecontainer
.
ContainerStatusRunning
{
continue
}
pod
,
_
,
err
:=
r
.
readServiceFile
(
u
.
Name
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment