Merge pull request #8923 from caesarxuchao/TerminationToTerminated

Update ContainerState.Termination to ContainerState.Terminated
This commit is contained in:
Rohit Jnagal 2015-05-29 14:51:09 -07:00
commit 233ce46b83
20 changed files with 217 additions and 169 deletions

View File

@ -305,13 +305,13 @@ func deepCopy_api_ContainerState(in ContainerState, out *ContainerState, c *conv
} else { } else {
out.Running = nil out.Running = nil
} }
if in.Termination != nil { if in.Terminated != nil {
out.Termination = new(ContainerStateTerminated) out.Terminated = new(ContainerStateTerminated)
if err := deepCopy_api_ContainerStateTerminated(*in.Termination, out.Termination, c); err != nil { if err := deepCopy_api_ContainerStateTerminated(*in.Terminated, out.Terminated, c); err != nil {
return err return err
} }
} else { } else {
out.Termination = nil out.Terminated = nil
} }
return nil return nil
} }

View File

@ -740,9 +740,9 @@ type ContainerStateTerminated struct {
// Only one of its members may be specified. // Only one of its members may be specified.
// If none of them is specified, the default one is ContainerStateWaiting. // If none of them is specified, the default one is ContainerStateWaiting.
type ContainerState struct { type ContainerState struct {
Waiting *ContainerStateWaiting `json:"waiting,omitempty"` Waiting *ContainerStateWaiting `json:"waiting,omitempty"`
Running *ContainerStateRunning `json:"running,omitempty"` Running *ContainerStateRunning `json:"running,omitempty"`
Termination *ContainerStateTerminated `json:"termination,omitempty"` Terminated *ContainerStateTerminated `json:"terminated,omitempty"`
} }
type ContainerStatus struct { type ContainerStatus struct {

View File

@ -257,13 +257,13 @@ func convert_api_ContainerState_To_v1_ContainerState(in *api.ContainerState, out
} else { } else {
out.Running = nil out.Running = nil
} }
if in.Termination != nil { if in.Terminated != nil {
out.Termination = new(ContainerStateTerminated) out.Terminated = new(ContainerStateTerminated)
if err := convert_api_ContainerStateTerminated_To_v1_ContainerStateTerminated(in.Termination, out.Termination, s); err != nil { if err := convert_api_ContainerStateTerminated_To_v1_ContainerStateTerminated(in.Terminated, out.Terminated, s); err != nil {
return err return err
} }
} else { } else {
out.Termination = nil out.Terminated = nil
} }
return nil return nil
} }
@ -2532,13 +2532,13 @@ func convert_v1_ContainerState_To_api_ContainerState(in *ContainerState, out *ap
} else { } else {
out.Running = nil out.Running = nil
} }
if in.Termination != nil { if in.Terminated != nil {
out.Termination = new(api.ContainerStateTerminated) out.Terminated = new(api.ContainerStateTerminated)
if err := convert_v1_ContainerStateTerminated_To_api_ContainerStateTerminated(in.Termination, out.Termination, s); err != nil { if err := convert_v1_ContainerStateTerminated_To_api_ContainerStateTerminated(in.Terminated, out.Terminated, s); err != nil {
return err return err
} }
} else { } else {
out.Termination = nil out.Terminated = nil
} }
return nil return nil
} }

View File

@ -246,13 +246,13 @@ func deepCopy_v1_ContainerState(in ContainerState, out *ContainerState, c *conve
} else { } else {
out.Running = nil out.Running = nil
} }
if in.Termination != nil { if in.Terminated != nil {
out.Termination = new(ContainerStateTerminated) out.Terminated = new(ContainerStateTerminated)
if err := deepCopy_v1_ContainerStateTerminated(*in.Termination, out.Termination, c); err != nil { if err := deepCopy_v1_ContainerStateTerminated(*in.Terminated, out.Terminated, c); err != nil {
return err return err
} }
} else { } else {
out.Termination = nil out.Terminated = nil
} }
return nil return nil
} }

View File

@ -750,9 +750,9 @@ type ContainerStateTerminated struct {
// Only one of its members may be specified. // Only one of its members may be specified.
// If none of them is specified, the default one is ContainerStateWaiting. // If none of them is specified, the default one is ContainerStateWaiting.
type ContainerState struct { type ContainerState struct {
Waiting *ContainerStateWaiting `json:"waiting,omitempty" description:"details about a waiting container"` Waiting *ContainerStateWaiting `json:"waiting,omitempty" description:"details about a waiting container"`
Running *ContainerStateRunning `json:"running,omitempty" description:"details about a running container"` Running *ContainerStateRunning `json:"running,omitempty" description:"details about a running container"`
Termination *ContainerStateTerminated `json:"termination,omitempty" description:"details about a terminated container"` Terminated *ContainerStateTerminated `json:"terminated,omitempty" description:"details about a terminated container"`
} }
type ContainerStatus struct { type ContainerStatus struct {

View File

@ -1632,6 +1632,30 @@ func addConversionFuncs() {
out.SecretName = in.Target.ID out.SecretName = in.Target.ID
return nil return nil
}, },
func(in *api.ContainerState, out *ContainerState, s conversion.Scope) error {
if err := s.Convert(&in.Waiting, &out.Waiting, 0); err != nil {
return err
}
if err := s.Convert(&in.Running, &out.Running, 0); err != nil {
return err
}
if err := s.Convert(&in.Terminated, &out.Termination, 0); err != nil {
return err
}
return nil
},
func(in *ContainerState, out *api.ContainerState, s conversion.Scope) error {
if err := s.Convert(&in.Waiting, &out.Waiting, 0); err != nil {
return err
}
if err := s.Convert(&in.Running, &out.Running, 0); err != nil {
return err
}
if err := s.Convert(&in.Termination, &out.Terminated, 0); err != nil {
return err
}
return nil
},
) )
if err != nil { if err != nil {
// If one of the conversion functions is malformed, detect it immediately. // If one of the conversion functions is malformed, detect it immediately.

View File

@ -1547,6 +1547,30 @@ func addConversionFuncs() {
out.SecretName = in.Target.ID out.SecretName = in.Target.ID
return nil return nil
}, },
func(in *api.ContainerState, out *ContainerState, s conversion.Scope) error {
if err := s.Convert(&in.Waiting, &out.Waiting, 0); err != nil {
return err
}
if err := s.Convert(&in.Running, &out.Running, 0); err != nil {
return err
}
if err := s.Convert(&in.Terminated, &out.Termination, 0); err != nil {
return err
}
return nil
},
func(in *ContainerState, out *api.ContainerState, s conversion.Scope) error {
if err := s.Convert(&in.Waiting, &out.Waiting, 0); err != nil {
return err
}
if err := s.Convert(&in.Running, &out.Running, 0); err != nil {
return err
}
if err := s.Convert(&in.Termination, &out.Terminated, 0); err != nil {
return err
}
return nil
},
) )
if err != nil { if err != nil {
// If one of the conversion functions is malformed, detect it immediately. // If one of the conversion functions is malformed, detect it immediately.

View File

@ -33,6 +33,10 @@ func addConversionFuncs() {
convert_api_ServiceSpec_To_v1beta3_ServiceSpec, convert_api_ServiceSpec_To_v1beta3_ServiceSpec,
convert_v1beta3_PodSpec_To_api_PodSpec, convert_v1beta3_PodSpec_To_api_PodSpec,
convert_api_PodSpec_To_v1beta3_PodSpec, convert_api_PodSpec_To_v1beta3_PodSpec,
convert_v1beta3_ContainerState_To_api_ContainerState,
convert_api_ContainerState_To_v1beta3_ContainerState,
convert_api_ContainerStateTerminated_To_v1beta3_ContainerStateTerminated,
convert_v1beta3_ContainerStateTerminated_To_api_ContainerStateTerminated,
) )
if err != nil { if err != nil {
// If one of the conversion functions is malformed, detect it immediately. // If one of the conversion functions is malformed, detect it immediately.
@ -546,3 +550,101 @@ func convert_api_PodSpec_To_v1beta3_PodSpec(in *api.PodSpec, out *PodSpec, s con
} }
return nil return nil
} }
func convert_api_ContainerState_To_v1beta3_ContainerState(in *api.ContainerState, out *ContainerState, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*api.ContainerState))(in)
}
if in.Waiting != nil {
out.Waiting = new(ContainerStateWaiting)
if err := convert_api_ContainerStateWaiting_To_v1beta3_ContainerStateWaiting(in.Waiting, out.Waiting, s); err != nil {
return err
}
} else {
out.Waiting = nil
}
if in.Running != nil {
out.Running = new(ContainerStateRunning)
if err := convert_api_ContainerStateRunning_To_v1beta3_ContainerStateRunning(in.Running, out.Running, s); err != nil {
return err
}
} else {
out.Running = nil
}
if in.Terminated != nil {
out.Termination = new(ContainerStateTerminated)
if err := convert_api_ContainerStateTerminated_To_v1beta3_ContainerStateTerminated(in.Terminated, out.Termination, s); err != nil {
return err
}
} else {
out.Termination = nil
}
return nil
}
func convert_v1beta3_ContainerState_To_api_ContainerState(in *ContainerState, out *api.ContainerState, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*ContainerState))(in)
}
if in.Waiting != nil {
out.Waiting = new(api.ContainerStateWaiting)
if err := convert_v1beta3_ContainerStateWaiting_To_api_ContainerStateWaiting(in.Waiting, out.Waiting, s); err != nil {
return err
}
} else {
out.Waiting = nil
}
if in.Running != nil {
out.Running = new(api.ContainerStateRunning)
if err := convert_v1beta3_ContainerStateRunning_To_api_ContainerStateRunning(in.Running, out.Running, s); err != nil {
return err
}
} else {
out.Running = nil
}
if in.Termination != nil {
out.Terminated = new(api.ContainerStateTerminated)
if err := convert_v1beta3_ContainerStateTerminated_To_api_ContainerStateTerminated(in.Termination, out.Terminated, s); err != nil {
return err
}
} else {
out.Terminated = nil
}
return nil
}
func convert_api_ContainerStateTerminated_To_v1beta3_ContainerStateTerminated(in *api.ContainerStateTerminated, out *ContainerStateTerminated, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*api.ContainerStateTerminated))(in)
}
out.ExitCode = in.ExitCode
out.Signal = in.Signal
out.Reason = in.Reason
out.Message = in.Message
if err := s.Convert(&in.StartedAt, &out.StartedAt, 0); err != nil {
return err
}
if err := s.Convert(&in.FinishedAt, &out.FinishedAt, 0); err != nil {
return err
}
out.ContainerID = in.ContainerID
return nil
}
func convert_v1beta3_ContainerStateTerminated_To_api_ContainerStateTerminated(in *ContainerStateTerminated, out *api.ContainerStateTerminated, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*ContainerStateTerminated))(in)
}
out.ExitCode = in.ExitCode
out.Signal = in.Signal
out.Reason = in.Reason
out.Message = in.Message
if err := s.Convert(&in.StartedAt, &out.StartedAt, 0); err != nil {
return err
}
if err := s.Convert(&in.FinishedAt, &out.FinishedAt, 0); err != nil {
return err
}
out.ContainerID = in.ContainerID
return nil
}

View File

@ -144,37 +144,6 @@ func convert_api_ContainerPort_To_v1beta3_ContainerPort(in *api.ContainerPort, o
return nil return nil
} }
func convert_api_ContainerState_To_v1beta3_ContainerState(in *api.ContainerState, out *ContainerState, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*api.ContainerState))(in)
}
if in.Waiting != nil {
out.Waiting = new(ContainerStateWaiting)
if err := convert_api_ContainerStateWaiting_To_v1beta3_ContainerStateWaiting(in.Waiting, out.Waiting, s); err != nil {
return err
}
} else {
out.Waiting = nil
}
if in.Running != nil {
out.Running = new(ContainerStateRunning)
if err := convert_api_ContainerStateRunning_To_v1beta3_ContainerStateRunning(in.Running, out.Running, s); err != nil {
return err
}
} else {
out.Running = nil
}
if in.Termination != nil {
out.Termination = new(ContainerStateTerminated)
if err := convert_api_ContainerStateTerminated_To_v1beta3_ContainerStateTerminated(in.Termination, out.Termination, s); err != nil {
return err
}
} else {
out.Termination = nil
}
return nil
}
func convert_api_ContainerStateRunning_To_v1beta3_ContainerStateRunning(in *api.ContainerStateRunning, out *ContainerStateRunning, s conversion.Scope) error { func convert_api_ContainerStateRunning_To_v1beta3_ContainerStateRunning(in *api.ContainerStateRunning, out *ContainerStateRunning, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found { if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*api.ContainerStateRunning))(in) defaulting.(func(*api.ContainerStateRunning))(in)
@ -185,24 +154,6 @@ func convert_api_ContainerStateRunning_To_v1beta3_ContainerStateRunning(in *api.
return nil return nil
} }
func convert_api_ContainerStateTerminated_To_v1beta3_ContainerStateTerminated(in *api.ContainerStateTerminated, out *ContainerStateTerminated, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*api.ContainerStateTerminated))(in)
}
out.ExitCode = in.ExitCode
out.Signal = in.Signal
out.Reason = in.Reason
out.Message = in.Message
if err := s.Convert(&in.StartedAt, &out.StartedAt, 0); err != nil {
return err
}
if err := s.Convert(&in.FinishedAt, &out.FinishedAt, 0); err != nil {
return err
}
out.ContainerID = in.ContainerID
return nil
}
func convert_api_ContainerStateWaiting_To_v1beta3_ContainerStateWaiting(in *api.ContainerStateWaiting, out *ContainerStateWaiting, s conversion.Scope) error { func convert_api_ContainerStateWaiting_To_v1beta3_ContainerStateWaiting(in *api.ContainerStateWaiting, out *ContainerStateWaiting, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found { if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*api.ContainerStateWaiting))(in) defaulting.(func(*api.ContainerStateWaiting))(in)
@ -2290,37 +2241,6 @@ func convert_v1beta3_ContainerPort_To_api_ContainerPort(in *ContainerPort, out *
return nil return nil
} }
func convert_v1beta3_ContainerState_To_api_ContainerState(in *ContainerState, out *api.ContainerState, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*ContainerState))(in)
}
if in.Waiting != nil {
out.Waiting = new(api.ContainerStateWaiting)
if err := convert_v1beta3_ContainerStateWaiting_To_api_ContainerStateWaiting(in.Waiting, out.Waiting, s); err != nil {
return err
}
} else {
out.Waiting = nil
}
if in.Running != nil {
out.Running = new(api.ContainerStateRunning)
if err := convert_v1beta3_ContainerStateRunning_To_api_ContainerStateRunning(in.Running, out.Running, s); err != nil {
return err
}
} else {
out.Running = nil
}
if in.Termination != nil {
out.Termination = new(api.ContainerStateTerminated)
if err := convert_v1beta3_ContainerStateTerminated_To_api_ContainerStateTerminated(in.Termination, out.Termination, s); err != nil {
return err
}
} else {
out.Termination = nil
}
return nil
}
func convert_v1beta3_ContainerStateRunning_To_api_ContainerStateRunning(in *ContainerStateRunning, out *api.ContainerStateRunning, s conversion.Scope) error { func convert_v1beta3_ContainerStateRunning_To_api_ContainerStateRunning(in *ContainerStateRunning, out *api.ContainerStateRunning, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found { if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*ContainerStateRunning))(in) defaulting.(func(*ContainerStateRunning))(in)
@ -2331,24 +2251,6 @@ func convert_v1beta3_ContainerStateRunning_To_api_ContainerStateRunning(in *Cont
return nil return nil
} }
func convert_v1beta3_ContainerStateTerminated_To_api_ContainerStateTerminated(in *ContainerStateTerminated, out *api.ContainerStateTerminated, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*ContainerStateTerminated))(in)
}
out.ExitCode = in.ExitCode
out.Signal = in.Signal
out.Reason = in.Reason
out.Message = in.Message
if err := s.Convert(&in.StartedAt, &out.StartedAt, 0); err != nil {
return err
}
if err := s.Convert(&in.FinishedAt, &out.FinishedAt, 0); err != nil {
return err
}
out.ContainerID = in.ContainerID
return nil
}
func convert_v1beta3_ContainerStateWaiting_To_api_ContainerStateWaiting(in *ContainerStateWaiting, out *api.ContainerStateWaiting, s conversion.Scope) error { func convert_v1beta3_ContainerStateWaiting_To_api_ContainerStateWaiting(in *ContainerStateWaiting, out *api.ContainerStateWaiting, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found { if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*ContainerStateWaiting))(in) defaulting.(func(*ContainerStateWaiting))(in)
@ -4327,9 +4229,7 @@ func init() {
convert_api_ComponentStatus_To_v1beta3_ComponentStatus, convert_api_ComponentStatus_To_v1beta3_ComponentStatus,
convert_api_ContainerPort_To_v1beta3_ContainerPort, convert_api_ContainerPort_To_v1beta3_ContainerPort,
convert_api_ContainerStateRunning_To_v1beta3_ContainerStateRunning, convert_api_ContainerStateRunning_To_v1beta3_ContainerStateRunning,
convert_api_ContainerStateTerminated_To_v1beta3_ContainerStateTerminated,
convert_api_ContainerStateWaiting_To_v1beta3_ContainerStateWaiting, convert_api_ContainerStateWaiting_To_v1beta3_ContainerStateWaiting,
convert_api_ContainerState_To_v1beta3_ContainerState,
convert_api_ContainerStatus_To_v1beta3_ContainerStatus, convert_api_ContainerStatus_To_v1beta3_ContainerStatus,
convert_api_DeleteOptions_To_v1beta3_DeleteOptions, convert_api_DeleteOptions_To_v1beta3_DeleteOptions,
convert_api_EmptyDirVolumeSource_To_v1beta3_EmptyDirVolumeSource, convert_api_EmptyDirVolumeSource_To_v1beta3_EmptyDirVolumeSource,
@ -4438,9 +4338,7 @@ func init() {
convert_v1beta3_ComponentStatus_To_api_ComponentStatus, convert_v1beta3_ComponentStatus_To_api_ComponentStatus,
convert_v1beta3_ContainerPort_To_api_ContainerPort, convert_v1beta3_ContainerPort_To_api_ContainerPort,
convert_v1beta3_ContainerStateRunning_To_api_ContainerStateRunning, convert_v1beta3_ContainerStateRunning_To_api_ContainerStateRunning,
convert_v1beta3_ContainerStateTerminated_To_api_ContainerStateTerminated,
convert_v1beta3_ContainerStateWaiting_To_api_ContainerStateWaiting, convert_v1beta3_ContainerStateWaiting_To_api_ContainerStateWaiting,
convert_v1beta3_ContainerState_To_api_ContainerState,
convert_v1beta3_ContainerStatus_To_api_ContainerStatus, convert_v1beta3_ContainerStatus_To_api_ContainerStatus,
convert_v1beta3_DeleteOptions_To_api_DeleteOptions, convert_v1beta3_DeleteOptions_To_api_DeleteOptions,
convert_v1beta3_EmptyDirVolumeSource_To_api_EmptyDirVolumeSource, convert_v1beta3_EmptyDirVolumeSource_To_api_EmptyDirVolumeSource,

View File

@ -349,20 +349,20 @@ func describeContainers(containers []api.ContainerStatus, out io.Writer) {
if container.State.Waiting.Reason != "" { if container.State.Waiting.Reason != "" {
fmt.Fprintf(out, " Reason:\t%s\n", container.State.Waiting.Reason) fmt.Fprintf(out, " Reason:\t%s\n", container.State.Waiting.Reason)
} }
case container.State.Termination != nil: case container.State.Terminated != nil:
fmt.Fprintf(out, " State:\tTerminated\n") fmt.Fprintf(out, " State:\tTerminated\n")
if container.State.Termination.Reason != "" { if container.State.Terminated.Reason != "" {
fmt.Fprintf(out, " Reason:\t%s\n", container.State.Termination.Reason) fmt.Fprintf(out, " Reason:\t%s\n", container.State.Terminated.Reason)
} }
if container.State.Termination.Message != "" { if container.State.Terminated.Message != "" {
fmt.Fprintf(out, " Message:\t%s\n", container.State.Termination.Message) fmt.Fprintf(out, " Message:\t%s\n", container.State.Terminated.Message)
} }
fmt.Fprintf(out, " Exit Code:\t%d\n", container.State.Termination.ExitCode) fmt.Fprintf(out, " Exit Code:\t%d\n", container.State.Terminated.ExitCode)
if container.State.Termination.Signal > 0 { if container.State.Terminated.Signal > 0 {
fmt.Fprintf(out, " Signal:\t%d\n", container.State.Termination.Signal) fmt.Fprintf(out, " Signal:\t%d\n", container.State.Terminated.Signal)
} }
fmt.Fprintf(out, " Started:\t%s\n", container.State.Termination.StartedAt.Time.Format(time.RFC1123Z)) fmt.Fprintf(out, " Started:\t%s\n", container.State.Terminated.StartedAt.Time.Format(time.RFC1123Z))
fmt.Fprintf(out, " Finished:\t%s\n", container.State.Termination.FinishedAt.Time.Format(time.RFC1123Z)) fmt.Fprintf(out, " Finished:\t%s\n", container.State.Terminated.FinishedAt.Time.Format(time.RFC1123Z))
default: default:
fmt.Fprintf(out, " State:\tWaiting\n") fmt.Fprintf(out, " State:\tWaiting\n")
} }

View File

@ -157,7 +157,7 @@ func TestDescribeContainers(t *testing.T) {
input: api.ContainerStatus{ input: api.ContainerStatus{
Name: "test", Name: "test",
State: api.ContainerState{ State: api.ContainerState{
Termination: &api.ContainerStateTerminated{ Terminated: &api.ContainerStateTerminated{
StartedAt: util.NewTime(time.Now()), StartedAt: util.NewTime(time.Now()),
FinishedAt: util.NewTime(time.Now()), FinishedAt: util.NewTime(time.Now()),
Reason: "potato", Reason: "potato",

View File

@ -381,7 +381,7 @@ func interpretContainerStatus(status *api.ContainerStatus) (string, string, stri
} else if state.Running != nil { } else if state.Running != nil {
// Get the information of the last termination state. This is useful if // Get the information of the last termination state. This is useful if
// a container is stuck in a crash loop. // a container is stuck in a crash loop.
message := getTermMsg(status.LastTerminationState.Termination) message := getTermMsg(status.LastTerminationState.Terminated)
if message != "" { if message != "" {
message = "last termination: " + message message = "last termination: " + message
} }
@ -390,8 +390,8 @@ func interpretContainerStatus(status *api.ContainerStatus) (string, string, stri
stateMsg = stateMsg + " *not ready*" stateMsg = stateMsg + " *not ready*"
} }
return stateMsg, translateTimestamp(state.Running.StartedAt), message, nil return stateMsg, translateTimestamp(state.Running.StartedAt), message, nil
} else if state.Termination != nil { } else if state.Terminated != nil {
return "Terminated", translateTimestamp(state.Termination.StartedAt), getTermMsg(state.Termination), nil return "Terminated", translateTimestamp(state.Terminated.StartedAt), getTermMsg(state.Terminated), nil
} }
return "", "", "", fmt.Errorf("unknown container state %#v", *state) return "", "", "", fmt.Errorf("unknown container state %#v", *state)
} }

View File

@ -838,7 +838,7 @@ func TestInterpretContainerStatus(t *testing.T) {
{ {
status: &api.ContainerStatus{ status: &api.ContainerStatus{
State: api.ContainerState{ State: api.ContainerState{
Termination: &api.ContainerStateTerminated{ Terminated: &api.ContainerStateTerminated{
ExitCode: 3, ExitCode: 3,
}, },
}, },
@ -851,7 +851,7 @@ func TestInterpretContainerStatus(t *testing.T) {
{ {
status: &api.ContainerStatus{ status: &api.ContainerStatus{
State: api.ContainerState{ State: api.ContainerState{
Termination: &api.ContainerStateTerminated{ Terminated: &api.ContainerStateTerminated{
ExitCode: 5, ExitCode: 5,
Reason: "test reason", Reason: "test reason",
}, },

View File

@ -57,7 +57,7 @@ func ShouldContainerBeRestarted(container *api.Container, pod *api.Pod, podStatu
// Get all dead container status. // Get all dead container status.
var resultStatus []*api.ContainerStatus var resultStatus []*api.ContainerStatus
for i, containerStatus := range podStatus.ContainerStatuses { for i, containerStatus := range podStatus.ContainerStatuses {
if containerStatus.Name == container.Name && containerStatus.State.Termination != nil { if containerStatus.Name == container.Name && containerStatus.State.Terminated != nil {
resultStatus = append(resultStatus, &podStatus.ContainerStatuses[i]) resultStatus = append(resultStatus, &podStatus.ContainerStatuses[i])
} }
} }
@ -76,7 +76,7 @@ func ShouldContainerBeRestarted(container *api.Container, pod *api.Pod, podStatu
if pod.Spec.RestartPolicy == api.RestartPolicyOnFailure { if pod.Spec.RestartPolicy == api.RestartPolicyOnFailure {
// Check the exit code of last run. Note: This assumes the result is sorted // Check the exit code of last run. Note: This assumes the result is sorted
// by the created time in reverse order. // by the created time in reverse order.
if resultStatus[0].State.Termination.ExitCode == 0 { if resultStatus[0].State.Terminated.ExitCode == 0 {
glog.V(4).Infof("Already successfully ran container %q of pod %q, do nothing", container.Name, podFullName) glog.V(4).Infof("Already successfully ran container %q of pod %q, do nothing", container.Name, podFullName)
return false return false
} }

View File

@ -290,7 +290,7 @@ func (dm *DockerManager) inspectContainer(dockerID, containerName, tPath string)
} else { } else {
reason = inspectResult.State.Error reason = inspectResult.State.Error
} }
result.status.State.Termination = &api.ContainerStateTerminated{ result.status.State.Terminated = &api.ContainerStateTerminated{
ExitCode: inspectResult.State.ExitCode, ExitCode: inspectResult.State.ExitCode,
Reason: reason, Reason: reason,
StartedAt: util.NewTime(inspectResult.State.StartedAt), StartedAt: util.NewTime(inspectResult.State.StartedAt),
@ -304,7 +304,7 @@ func (dm *DockerManager) inspectContainer(dockerID, containerName, tPath string)
if err != nil { if err != nil {
glog.Errorf("Error on reading termination-log %s: %v", path, err) glog.Errorf("Error on reading termination-log %s: %v", path, err)
} else { } else {
result.status.State.Termination.Message = string(data) result.status.State.Terminated.Message = string(data)
} }
} }
} }
@ -329,8 +329,8 @@ func (dm *DockerManager) GetPodStatus(pod *api.Pod) (*api.PodStatus, error) {
lastObservedTime := make(map[string]util.Time, len(pod.Spec.Containers)) lastObservedTime := make(map[string]util.Time, len(pod.Spec.Containers))
for _, status := range pod.Status.ContainerStatuses { for _, status := range pod.Status.ContainerStatuses {
oldStatuses[status.Name] = status oldStatuses[status.Name] = status
if status.LastTerminationState.Termination != nil { if status.LastTerminationState.Terminated != nil {
lastObservedTime[status.Name] = status.LastTerminationState.Termination.FinishedAt lastObservedTime[status.Name] = status.LastTerminationState.Terminated.FinishedAt
} }
} }
@ -381,19 +381,19 @@ func (dm *DockerManager) GetPodStatus(pod *api.Pod) (*api.PodStatus, error) {
result := dm.inspectContainer(value.ID, dockerContainerName, terminationMessagePath) result := dm.inspectContainer(value.ID, dockerContainerName, terminationMessagePath)
if result.err != nil { if result.err != nil {
return nil, result.err return nil, result.err
} else if result.status.State.Termination != nil { } else if result.status.State.Terminated != nil {
terminationState = &result.status.State terminationState = &result.status.State
} }
if containerStatus, found := statuses[dockerContainerName]; found { if containerStatus, found := statuses[dockerContainerName]; found {
if containerStatus.LastTerminationState.Termination == nil && terminationState != nil { if containerStatus.LastTerminationState.Terminated == nil && terminationState != nil {
// Populate the last termination state. // Populate the last termination state.
containerStatus.LastTerminationState = *terminationState containerStatus.LastTerminationState = *terminationState
} }
count := true count := true
// Only count dead containers terminated after last time we observed, // Only count dead containers terminated after last time we observed,
if lastObservedTime, ok := lastObservedTime[dockerContainerName]; ok { if lastObservedTime, ok := lastObservedTime[dockerContainerName]; ok {
if terminationState != nil && terminationState.Termination.FinishedAt.After(lastObservedTime.Time) { if terminationState != nil && terminationState.Terminated.FinishedAt.After(lastObservedTime.Time) {
count = false count = false
} else { } else {
// The container finished before the last observation. No // The container finished before the last observation. No

View File

@ -1567,8 +1567,8 @@ func TestGetPodStatusWithLastTermination(t *testing.T) {
} }
terminatedContainers := []string{} terminatedContainers := []string{}
for _, cs := range status.ContainerStatuses { for _, cs := range status.ContainerStatuses {
if cs.LastTerminationState.Termination != nil { if cs.LastTerminationState.Terminated != nil {
terminatedContainers = append(terminatedContainers, cs.LastTerminationState.Termination.ContainerID) terminatedContainers = append(terminatedContainers, cs.LastTerminationState.Terminated.ContainerID)
} }
} }
sort.StringSlice(terminatedContainers).Sort() sort.StringSlice(terminatedContainers).Sort()

View File

@ -1668,10 +1668,10 @@ func (kl *Kubelet) validateContainerStatus(podStatus *api.PodStatus, containerNa
return "", fmt.Errorf("container %q not found in pod", containerName) return "", fmt.Errorf("container %q not found in pod", containerName)
} }
if previous { if previous {
if cStatus.LastTerminationState.Termination == nil { if cStatus.LastTerminationState.Terminated == nil {
return "", fmt.Errorf("previous terminated container %q not found in pod", containerName) return "", fmt.Errorf("previous terminated container %q not found in pod", containerName)
} }
cID = cStatus.LastTerminationState.Termination.ContainerID cID = cStatus.LastTerminationState.Terminated.ContainerID
} else { } else {
if cStatus.State.Waiting != nil { if cStatus.State.Waiting != nil {
return "", fmt.Errorf("container %q is in waiting state.", containerName) return "", fmt.Errorf("container %q is in waiting state.", containerName)
@ -1983,9 +1983,9 @@ func getPhase(spec *api.PodSpec, info []api.ContainerStatus) api.PodPhase {
if containerStatus, ok := api.GetContainerStatus(info, container.Name); ok { if containerStatus, ok := api.GetContainerStatus(info, container.Name); ok {
if containerStatus.State.Running != nil { if containerStatus.State.Running != nil {
running++ running++
} else if containerStatus.State.Termination != nil { } else if containerStatus.State.Terminated != nil {
stopped++ stopped++
if containerStatus.State.Termination.ExitCode == 0 { if containerStatus.State.Terminated.ExitCode == 0 {
succeeded++ succeeded++
} else { } else {
failed++ failed++

View File

@ -1712,7 +1712,7 @@ func stoppedState(cName string) api.ContainerStatus {
return api.ContainerStatus{ return api.ContainerStatus{
Name: cName, Name: cName,
State: api.ContainerState{ State: api.ContainerState{
Termination: &api.ContainerStateTerminated{}, Terminated: &api.ContainerStateTerminated{},
}, },
} }
} }
@ -1720,7 +1720,7 @@ func succeededState(cName string) api.ContainerStatus {
return api.ContainerStatus{ return api.ContainerStatus{
Name: cName, Name: cName,
State: api.ContainerState{ State: api.ContainerState{
Termination: &api.ContainerStateTerminated{ Terminated: &api.ContainerStateTerminated{
ExitCode: 0, ExitCode: 0,
}, },
}, },
@ -1730,7 +1730,7 @@ func failedState(cName string) api.ContainerStatus {
return api.ContainerStatus{ return api.ContainerStatus{
Name: cName, Name: cName,
State: api.ContainerState{ State: api.ContainerState{
Termination: &api.ContainerStateTerminated{ Terminated: &api.ContainerStateTerminated{
ExitCode: -1, ExitCode: -1,
}, },
}, },
@ -2577,7 +2577,7 @@ func TestValidateContainerStatus(t *testing.T) {
Running: &api.ContainerStateRunning{}, Running: &api.ContainerStateRunning{},
}, },
LastTerminationState: api.ContainerState{ LastTerminationState: api.ContainerState{
Termination: &api.ContainerStateTerminated{}, Terminated: &api.ContainerStateTerminated{},
}, },
}, },
}, },
@ -2588,7 +2588,7 @@ func TestValidateContainerStatus(t *testing.T) {
{ {
Name: containerName, Name: containerName,
State: api.ContainerState{ State: api.ContainerState{
Termination: &api.ContainerStateTerminated{}, Terminated: &api.ContainerStateTerminated{},
}, },
}, },
}, },

View File

@ -136,7 +136,7 @@ func (p *podInfo) getContainerStatus(container *kubecontainer.Container) api.Con
} }
exitCode = -1 exitCode = -1
status.State = api.ContainerState{ status.State = api.ContainerState{
Termination: &api.ContainerStateTerminated{ Terminated: &api.ContainerStateTerminated{
ExitCode: exitCode, ExitCode: exitCode,
StartedAt: util.Unix(container.Created, 0), StartedAt: util.Unix(container.Created, 0),
}, },

View File

@ -299,15 +299,15 @@ func waitForPodSuccessInNamespace(c *client.Client, podName string, contName str
if !ok { if !ok {
Logf("No Status.Info for container '%s' in pod '%s' yet", contName, podName) Logf("No Status.Info for container '%s' in pod '%s' yet", contName, podName)
} else { } else {
if ci.State.Termination != nil { if ci.State.Terminated != nil {
if ci.State.Termination.ExitCode == 0 { if ci.State.Terminated.ExitCode == 0 {
By("Saw pod success") By("Saw pod success")
return true, nil return true, nil
} else { } else {
return true, fmt.Errorf("pod '%s' terminated with failure: %+v", podName, ci.State.Termination) return true, fmt.Errorf("pod '%s' terminated with failure: %+v", podName, ci.State.Terminated)
} }
} else { } else {
Logf("Nil State.Termination for container '%s' in pod '%s' in namespace '%s' so far", contName, podName, namespace) Logf("Nil State.Terminated for container '%s' in pod '%s' in namespace '%s' so far", contName, podName, namespace)
} }
} }
return false, nil return false, nil
@ -903,10 +903,10 @@ func FailedContainers(pod api.Pod) map[string]ContainerFailures {
return nil return nil
} else { } else {
for _, status := range statuses { for _, status := range statuses {
if status.State.Termination != nil { if status.State.Terminated != nil {
states[status.ContainerID] = ContainerFailures{status: status.State.Termination} states[status.ContainerID] = ContainerFailures{status: status.State.Terminated}
} else if status.LastTerminationState.Termination != nil { } else if status.LastTerminationState.Terminated != nil {
states[status.ContainerID] = ContainerFailures{status: status.LastTerminationState.Termination} states[status.ContainerID] = ContainerFailures{status: status.LastTerminationState.Terminated}
} }
if status.RestartCount > 0 { if status.RestartCount > 0 {
var ok bool var ok bool