diff --git a/awx/ui/static/js/controllers/JobDetail.js b/awx/ui/static/js/controllers/JobDetail.js
index a6a651cd49..a1a8a9e6de 100644
--- a/awx/ui/static/js/controllers/JobDetail.js
+++ b/awx/ui/static/js/controllers/JobDetail.js
@@ -478,7 +478,7 @@ function JobDetailController ($location, $rootScope, $scope, $compile, $routePar
scope.selectedPlay = scope.activePlay;
} else {
// if we are here, there are no plays and the job has failed, let the user know they may want to consult stdout
- if (scope.job_status.status === 'failed' || scope.job_status.status === 'error' &&
+ if ( (scope.job_status.status === 'failed' || scope.job_status.status === 'error') &&
(!scope.job_status.explanation)) {
scope.job_status.explanation = "View stdout for more detail ";
}
@@ -671,7 +671,9 @@ function JobDetailController ($location, $rootScope, $scope, $compile, $routePar
scope.job_status.started = data.started;
scope.job_status.status_class = ((data.status === 'error' || data.status === 'failed') && data.job_explanation) ? "alert alert-danger" : "";
scope.job_status.explanation = data.job_explanation;
-
+ if(data.result_traceback) {
+ scope.job_status.traceback = data.result_traceback.trim().split('\n').join('
');
+ }
if (data.status === 'successful' || data.status === 'failed' || data.status === 'error' || data.status === 'canceled') {
scope.job_status.finished = data.finished;
scope.liveEventProcessing = false;
diff --git a/awx/ui/static/partials/job_detail.html b/awx/ui/static/partials/job_detail.html
index 68142f2523..ac073e29aa 100644
--- a/awx/ui/static/partials/job_detail.html
+++ b/awx/ui/static/partials/job_detail.html
@@ -14,7 +14,10 @@