mirror of
https://github.com/rancher/types.git
synced 2025-09-23 02:47:07 +00:00
Show state on containers and fix jobs
This commit is contained in:
@@ -472,6 +472,7 @@ func podTypes(schemas *types.Schemas) *types.Schemas {
|
||||
&m.AnnotationField{Field: "description"},
|
||||
&m.AnnotationField{Field: "publicEndpoints", List: true},
|
||||
mapper.ContainerPorts{},
|
||||
mapper.ContainerStatus{},
|
||||
).
|
||||
// Must import handlers before Container
|
||||
MustImport(&Version, v1.ContainerPort{}, struct {
|
||||
@@ -489,9 +490,13 @@ func podTypes(schemas *types.Schemas) *types.Schemas {
|
||||
MustImport(&Version, v1.Handler{}, handlerOverride{}).
|
||||
MustImport(&Version, v1.Probe{}, handlerOverride{}).
|
||||
MustImport(&Version, v1.Container{}, struct {
|
||||
Environment map[string]string
|
||||
EnvironmentFrom []EnvironmentFrom
|
||||
InitContainer bool
|
||||
Environment map[string]string
|
||||
EnvironmentFrom []EnvironmentFrom
|
||||
InitContainer bool
|
||||
State string
|
||||
TransitioningMessage string
|
||||
ExitCode *int
|
||||
RestartCount int
|
||||
}{}).
|
||||
MustImport(&Version, v1.PodSpec{}, struct {
|
||||
Scheduling *Scheduling
|
||||
|
73
mapper/container_status.go
Normal file
73
mapper/container_status.go
Normal file
@@ -0,0 +1,73 @@
|
||||
package mapper
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/rancher/norman/types"
|
||||
"github.com/rancher/norman/types/convert"
|
||||
"github.com/rancher/norman/types/values"
|
||||
)
|
||||
|
||||
type ContainerStatus struct {
|
||||
}
|
||||
|
||||
type containerState struct {
|
||||
state string
|
||||
message string
|
||||
exitCode interface{}
|
||||
restartCount int64
|
||||
}
|
||||
|
||||
func (n ContainerStatus) FromInternal(data map[string]interface{}) {
|
||||
containerStates := map[string]containerState{}
|
||||
containerStatus := convert.ToMapSlice(values.GetValueN(data, "status", "containerStatuses"))
|
||||
for _, status := range containerStatus {
|
||||
name := convert.ToString(status["name"])
|
||||
restartCount, _ := convert.ToNumber(status["restartCount"])
|
||||
s := containerState{
|
||||
state: "pending",
|
||||
restartCount: restartCount,
|
||||
}
|
||||
for k, v := range convert.ToMapInterface(status["state"]) {
|
||||
m := convert.ToMapInterface(v)
|
||||
switch k {
|
||||
case "terminated":
|
||||
s.state = "terminated"
|
||||
s.message = fmt.Sprintf("%s: %s", m["reason"], m["message"])
|
||||
s.exitCode = m["exitCode"]
|
||||
case "running":
|
||||
s.state = "running"
|
||||
case "waiting":
|
||||
s.state = "waiting"
|
||||
s.message = fmt.Sprintf("%s: %s", m["reason"], m["message"])
|
||||
}
|
||||
}
|
||||
|
||||
containerStates[name] = s
|
||||
}
|
||||
|
||||
containers := convert.ToMapSlice(values.GetValueN(data, "containers"))
|
||||
for _, container := range containers {
|
||||
if container == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
name := convert.ToString(container["name"])
|
||||
state, ok := containerStates[name]
|
||||
if ok {
|
||||
container["state"] = state.state
|
||||
container["transitioningMessage"] = state.message
|
||||
container["restartCount"] = state.restartCount
|
||||
container["exitCode"] = state.exitCode
|
||||
} else {
|
||||
container["state"] = "unknown"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (n ContainerStatus) ToInternal(data map[string]interface{}) {
|
||||
}
|
||||
|
||||
func (n ContainerStatus) ModifySchema(schema *types.Schema, schemas *types.Schemas) error {
|
||||
return nil
|
||||
}
|
@@ -226,10 +226,12 @@ func genericStatus(data map[string]interface{}) {
|
||||
}
|
||||
}
|
||||
|
||||
if state == "" {
|
||||
val, ok := values.GetValueN(data, "status", "phase").(string)
|
||||
if val != "" && ok {
|
||||
state = val
|
||||
phase, ok := values.GetValueN(data, "status", "phase").(string)
|
||||
if phase != "" && ok {
|
||||
if phase == "Succeeded" {
|
||||
state = "succeeded"
|
||||
} else if state == "" {
|
||||
state = phase
|
||||
}
|
||||
}
|
||||
|
||||
@@ -260,7 +262,7 @@ func genericStatus(data map[string]interface{}) {
|
||||
data["state"] = strings.ToLower(state)
|
||||
data["transitioningMessage"] = message
|
||||
|
||||
val, ok := values.GetValue(data, "metadata", "removed")
|
||||
val, ok = values.GetValue(data, "metadata", "removed")
|
||||
if ok && val != "" && val != nil {
|
||||
data["state"] = "removing"
|
||||
data["transitioning"] = "yes"
|
||||
|
Reference in New Issue
Block a user