From 5a7c33c17a04fb2ae0b252f941c9cba1f773f0fa Mon Sep 17 00:00:00 2001 From: jaredevantabor Date: Mon, 31 Oct 2016 11:54:09 -0700 Subject: [PATCH] error handling for job-result route for when there are no job_events for a job --- .../client/src/job-detail/job-detail.route.js | 170 +++++++++--------- .../src/job-results/job-results.route.js | 21 ++- 2 files changed, 101 insertions(+), 90 deletions(-) diff --git a/awx/ui/client/src/job-detail/job-detail.route.js b/awx/ui/client/src/job-detail/job-detail.route.js index 9f288dac34..94088c126b 100644 --- a/awx/ui/client/src/job-detail/job-detail.route.js +++ b/awx/ui/client/src/job-detail/job-detail.route.js @@ -1,91 +1,91 @@ -<<<<<<< 4cf6a946a1aa14b7d64a8e1e8dabecfd3d056f27 -//<<<<<<< bc59236851902d7c768aa26abdb7dc9c9dc27a5a -/************************************************* - * Copyright (c) 2016 Ansible, Inc. - * - * All Rights Reserved - *************************************************/ - -// <<<<<<< a3d9eea2c9ddb4e16deec9ec38dea16bf37c559d -// import { templateUrl } from '../shared/template-url/template-url.factory'; -// -// export default { -// name: 'jobDetail', -// url: '/jobs/{id: int}', -// ncyBreadcrumb: { -// parent: 'jobs', -// label: "{{ job.id }} - {{ job.name }}" -// }, -// data: { -// socket: { -// "groups": { -// "jobs": ["status_changed", "summary"], -// "job_events": [] -// } -// } -// }, -// templateUrl: templateUrl('job-detail/job-detail'), -// controller: 'JobDetailController' -// }; -// ======= -// import {templateUrl} from '../shared/template-url/template-url.factory'; -// -// export default { -// name: 'jobDetail', -// url: '/jobs/:id', -// ncyBreadcrumb: { -// parent: 'jobs', -// label: "{{ job.id }} - {{ job.name }}" -// }, -// socket: { -// "groups":{ -// "jobs": ["status_changed", "summary"], -// "job_events": [] -// } -// }, -// templateUrl: templateUrl('job-detail/job-detail'), -// controller: 'JobDetailController' -// }; -//======= -======= ->>>>>>> Rebase of devel (w/ channels) + socket rework for new job details +// <<<<<<< 4cf6a946a1aa14b7d64a8e1e8dabecfd3d056f27 +// //<<<<<<< bc59236851902d7c768aa26abdb7dc9c9dc27a5a // /************************************************* // * Copyright (c) 2016 Ansible, Inc. // * // * All Rights Reserved // *************************************************/ // -// import {templateUrl} from '../shared/template-url/template-url.factory'; -// -// export default { -// name: 'jobDetail', -// url: '/jobs/:id', -// ncyBreadcrumb: { -// parent: 'jobs', -// label: "{{ job.id }} - {{ job.name }}" -// }, -// socket: { -// "groups":{ -// "jobs": ["status_changed", "summary"], -// "job_events": [] -// } -// }, -// resolve: { -// jobEventsSocket: ['Socket', '$rootScope', function(Socket, $rootScope) { -// if (!$rootScope.event_socket) { -// $rootScope.event_socket = Socket({ -// scope: $rootScope, -// endpoint: "job_events" -// }); -// $rootScope.event_socket.init(); -// // returns should really be providing $rootScope.event_socket -// // otherwise, we have to inject the entire $rootScope into the controller -// return true; -// } else { -// return true; -// } -// }] -// }, -// templateUrl: templateUrl('job-detail/job-detail'), -// controller: 'JobDetailController' -// }; +// // <<<<<<< a3d9eea2c9ddb4e16deec9ec38dea16bf37c559d +// // import { templateUrl } from '../shared/template-url/template-url.factory'; +// // +// // export default { +// // name: 'jobDetail', +// // url: '/jobs/{id: int}', +// // ncyBreadcrumb: { +// // parent: 'jobs', +// // label: "{{ job.id }} - {{ job.name }}" +// // }, +// // data: { +// // socket: { +// // "groups": { +// // "jobs": ["status_changed", "summary"], +// // "job_events": [] +// // } +// // } +// // }, +// // templateUrl: templateUrl('job-detail/job-detail'), +// // controller: 'JobDetailController' +// // }; +// // ======= +// // import {templateUrl} from '../shared/template-url/template-url.factory'; +// // +// // export default { +// // name: 'jobDetail', +// // url: '/jobs/:id', +// // ncyBreadcrumb: { +// // parent: 'jobs', +// // label: "{{ job.id }} - {{ job.name }}" +// // }, +// // socket: { +// // "groups":{ +// // "jobs": ["status_changed", "summary"], +// // "job_events": [] +// // } +// // }, +// // templateUrl: templateUrl('job-detail/job-detail'), +// // controller: 'JobDetailController' +// // }; +// //======= +// ======= +// >>>>>>> Rebase of devel (w/ channels) + socket rework for new job details +// // /************************************************* +// // * Copyright (c) 2016 Ansible, Inc. +// // * +// // * All Rights Reserved +// // *************************************************/ +// // +// // import {templateUrl} from '../shared/template-url/template-url.factory'; +// // +// // export default { +// // name: 'jobDetail', +// // url: '/jobs/:id', +// // ncyBreadcrumb: { +// // parent: 'jobs', +// // label: "{{ job.id }} - {{ job.name }}" +// // }, +// // socket: { +// // "groups":{ +// // "jobs": ["status_changed", "summary"], +// // "job_events": [] +// // } +// // }, +// // resolve: { +// // jobEventsSocket: ['Socket', '$rootScope', function(Socket, $rootScope) { +// // if (!$rootScope.event_socket) { +// // $rootScope.event_socket = Socket({ +// // scope: $rootScope, +// // endpoint: "job_events" +// // }); +// // $rootScope.event_socket.init(); +// // // returns should really be providing $rootScope.event_socket +// // // otherwise, we have to inject the entire $rootScope into the controller +// // return true; +// // } else { +// // return true; +// // } +// // }] +// // }, +// // templateUrl: templateUrl('job-detail/job-detail'), +// // controller: 'JobDetailController' +// // }; diff --git a/awx/ui/client/src/job-results/job-results.route.js b/awx/ui/client/src/job-results/job-results.route.js index 6f52e5c67b..174f0068db 100644 --- a/awx/ui/client/src/job-results/job-results.route.js +++ b/awx/ui/client/src/job-results/job-results.route.js @@ -55,11 +55,22 @@ export default { // "?event=playbook_on_stats"); Rest.get() .success(function(data) { - defer.resolve({ - val: jobResultsService - .getCountsFromStatsEvent(data - .results[0].event_data), - countFinished: true}); + if(!data.results[0]){ + defer.resolve({val: { + ok: 0, + skipped: 0, + unreachable: 0, + failures: 0, + changed: 0 + }, countFinished: false}); + } + else { + defer.resolve({ + val: jobResultsService + .getCountsFromStatsEvent(data + .results[0].event_data), + countFinished: true}); + } }) .error(function() { defer.resolve({val: {