diff --git a/app/scripts/filters/resources.js b/app/scripts/filters/resources.js index 26ebda0ee1..9a09ac37ab 100644 --- a/app/scripts/filters/resources.js +++ b/app/scripts/filters/resources.js @@ -1022,7 +1022,8 @@ angular.module('openshiftConsole') }; }) .filter('podStatus', function() { - // Return results that match kubernetes/pkg/kubectl/resource_printer.go + // Return results that match + // https://github.com/openshift/origin/blob/master/vendor/k8s.io/kubernetes/pkg/printers/internalversion/printers.go#L523-L615 return function(pod) { if (!pod || (!pod.metadata.deletionTimestamp && !pod.status)) { return ''; @@ -1032,32 +1033,68 @@ angular.module('openshiftConsole') return 'Terminating'; } - var reason = pod.status.reason || pod.status.phase; + var initializing = false; + var reason; - // Print detailed container reasons if available. Only the last will be + // Print detailed container reasons if available. Only the first will be // displayed if multiple containers have this detail. - angular.forEach(pod.status.containerStatuses, function(containerStatus) { - var containerReason = _.get(containerStatus, 'state.waiting.reason') || _.get(containerStatus, 'state.terminated.reason'), - signal, - exitCode; - if (containerReason) { - reason = containerReason; + _.each(pod.status.initContainerStatuses, function(initContainerStatus) { + var initContainerState = _.get(initContainerStatus, 'state'); + + if (initContainerState.terminated && initContainerState.terminated.exitCode === 0) { + // initialization is complete return; } - signal = _.get(containerStatus, 'state.terminated.signal'); - if (signal) { - reason = "Signal: " + signal; - return; + if (initContainerState.terminated) { + // initialization is failed + if (!initContainerState.terminated.reason) { + if (initContainerState.terminated.signal) { + reason = "Init Signal: " + initContainerState.terminated.signal; + } else { + reason = "Init Exit Code: " + initContainerState.terminated.exitCode; + } + } else { + reason = "Init " + initContainerState.terminated.reason; + } + initializing = true; + return true; } - exitCode = _.get(containerStatus, 'state.terminated.exitCode'); - if (exitCode) { - reason = "Exit Code: " + exitCode; + if (initContainerState.waiting && initContainerState.waiting.reason && initContainerState.waiting.reason !== 'PodInitializing') { + reason = "Init " + initContainerState.waiting.reason; + initializing = true; } }); + if (!initializing) { + reason = pod.status.reason || pod.status.phase; + + _.each(pod.status.containerStatuses, function(containerStatus) { + var containerReason = _.get(containerStatus, 'state.waiting.reason') || _.get(containerStatus, 'state.terminated.reason'), + signal, + exitCode; + + if (containerReason) { + reason = containerReason; + return true; + } + + signal = _.get(containerStatus, 'state.terminated.signal'); + if (signal) { + reason = "Signal: " + signal; + return true; + } + + exitCode = _.get(containerStatus, 'state.terminated.exitCode'); + if (exitCode) { + reason = "Exit Code: " + exitCode; + return true; + } + }); + } + return reason; }; }) diff --git a/app/views/directives/_status-icon.html b/app/views/directives/_status-icon.html index 413e4c8e2e..4255b3106d 100644 --- a/app/views/directives/_status-icon.html +++ b/app/views/directives/_status-icon.html @@ -16,6 +16,7 @@ + diff --git a/dist/scripts/scripts.js b/dist/scripts/scripts.js index ca68962f5c..625805291c 100644 --- a/dist/scripts/scripts.js +++ b/dist/scripts/scripts.js @@ -15666,11 +15666,14 @@ return o ? t(o.port, o.targetPort, o.protocol) : angular.isString(a) ? t(a, null return function(e) { if (!e || !e.metadata.deletionTimestamp && !e.status) return ""; if (e.metadata.deletionTimestamp) return "Terminating"; -var t = e.status.reason || e.status.phase; -return angular.forEach(e.status.containerStatuses, function(e) { +var t, n = !1; +return _.each(e.status.initContainerStatuses, function(e) { +var r = _.get(e, "state"); +if (!r.terminated || 0 !== r.terminated.exitCode) return r.terminated ? (t = r.terminated.reason ? "Init " + r.terminated.reason : r.terminated.signal ? "Init Signal: " + r.terminated.signal : "Init Exit Code: " + r.terminated.exitCode, n = !0, !0) : void (r.waiting && r.waiting.reason && "PodInitializing" !== r.waiting.reason && (t = "Init " + r.waiting.reason, n = !0)); +}), n || (t = e.status.reason || e.status.phase, _.each(e.status.containerStatuses, function(e) { var n, r, a = _.get(e, "state.waiting.reason") || _.get(e, "state.terminated.reason"); -a ? t = a : (n = _.get(e, "state.terminated.signal")) ? t = "Signal: " + n : (r = _.get(e, "state.terminated.exitCode")) && (t = "Exit Code: " + r); -}), t; +return a ? (t = a, !0) : (n = _.get(e, "state.terminated.signal")) ? (t = "Signal: " + n, !0) : (r = _.get(e, "state.terminated.exitCode")) ? (t = "Exit Code: " + r, !0) : void 0; +})), t; }; }).filter("podStartTime", function() { return function(e) { diff --git a/dist/scripts/templates.js b/dist/scripts/templates.js index 510de21873..8dcce8645b 100644 --- a/dist/scripts/templates.js +++ b/dist/scripts/templates.js @@ -5690,6 +5690,7 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function( "\n" + "\n" + "\n" + + "\n" + "\n" + "\n" + "\n" +