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" +