Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 53 additions & 16 deletions app/scripts/filters/resources.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 '';
Expand All @@ -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;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should return true after this line, too, so we stop looking at other containers like the other checks above. Otherwise it'll keep iterating.

return true;
}
});
}

return reason;
};
})
Expand Down
1 change: 1 addition & 0 deletions app/views/directives/_status-icon.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
<span ng-switch-when="Unknown" class="fa fa-question text-danger" aria-hidden="true"></span>

<!-- Container Runtime States -->
<span ng-switch-when="Init Error" class="fa fa-times text-danger" aria-hidden="true"></span>
<span ng-switch-when="ContainerCreating" class="fa fa-hourglass-half" aria-hidden="true"></span>
<span ng-switch-when="CrashLoopBackOff" class="fa fa-times text-danger" aria-hidden="true"></span>
<span ng-switch-when="ImagePullBackOff" class="fa fa-times text-danger" aria-hidden="true"></span>
Expand Down
11 changes: 7 additions & 4 deletions dist/scripts/scripts.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
1 change: 1 addition & 0 deletions dist/scripts/templates.js
Original file line number Diff line number Diff line change
Expand Up @@ -5690,6 +5690,7 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function(
"<span ng-switch-when=\"Terminated\" class=\"fa fa-times text-danger\" aria-hidden=\"true\"></span>\n" +
"<span ng-switch-when=\"Unknown\" class=\"fa fa-question text-danger\" aria-hidden=\"true\"></span>\n" +
"\n" +
"<span ng-switch-when=\"Init Error\" class=\"fa fa-times text-danger\" aria-hidden=\"true\"></span>\n" +
"<span ng-switch-when=\"ContainerCreating\" class=\"fa fa-hourglass-half\" aria-hidden=\"true\"></span>\n" +
"<span ng-switch-when=\"CrashLoopBackOff\" class=\"fa fa-times text-danger\" aria-hidden=\"true\"></span>\n" +
"<span ng-switch-when=\"ImagePullBackOff\" class=\"fa fa-times text-danger\" aria-hidden=\"true\"></span>\n" +
Expand Down