mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-29 14:37:00 +00:00
Merge pull request #8923 from caesarxuchao/TerminationToTerminated
Update ContainerState.Termination to ContainerState.Terminated
This commit is contained in:
commit
233ce46b83
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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 {
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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 {
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
||||||
|
}
|
||||||
|
@ -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,
|
||||||
|
@ -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")
|
||||||
}
|
}
|
||||||
|
@ -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",
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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",
|
||||||
},
|
},
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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()
|
||||||
|
@ -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++
|
||||||
|
@ -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{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -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),
|
||||||
},
|
},
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user