mirror of
https://github.com/ansible/awx.git
synced 2026-01-15 20:00:43 -03:30
request job details and initial events dataset concurrently
This commit is contained in:
parent
4c93c68a29
commit
5e9da2d772
@ -26,19 +26,20 @@ const PAGE_LIMIT = 5;
|
||||
const PAGE_SIZE = 50;
|
||||
const ORDER_BY = 'counter';
|
||||
const WS_PREFIX = 'ws';
|
||||
const API_ROOT = '/api/v2/';
|
||||
|
||||
function resolveResource (
|
||||
$state,
|
||||
$stateParams,
|
||||
Job,
|
||||
ProjectUpdate,
|
||||
AdHocCommand,
|
||||
SystemJob,
|
||||
WorkflowJob,
|
||||
InventoryUpdate,
|
||||
$stateParams,
|
||||
qs,
|
||||
Wait,
|
||||
eventsApi,
|
||||
Events,
|
||||
) {
|
||||
const { id, type, handleErrors } = $stateParams;
|
||||
const { job_event_search } = $stateParams; // eslint-disable-line camelcase
|
||||
@ -46,24 +47,28 @@ function resolveResource (
|
||||
const { name, key } = getWebSocketResource(type);
|
||||
|
||||
let Resource;
|
||||
let related = 'events';
|
||||
let related;
|
||||
|
||||
switch (type) {
|
||||
case 'project':
|
||||
Resource = ProjectUpdate;
|
||||
related = `project_updates/${id}/events/`;
|
||||
break;
|
||||
case 'playbook':
|
||||
Resource = Job;
|
||||
related = 'job_events';
|
||||
related = `jobs/${id}/job_events/`;
|
||||
break;
|
||||
case 'command':
|
||||
Resource = AdHocCommand;
|
||||
related = `ad_hoc_commands/${id}/events/`;
|
||||
break;
|
||||
case 'system':
|
||||
Resource = SystemJob;
|
||||
related = `system_jobs/${id}/events/`;
|
||||
break;
|
||||
case 'inventory':
|
||||
Resource = InventoryUpdate;
|
||||
related = `inventory_updates/${id}/events/`;
|
||||
break;
|
||||
// case 'workflow':
|
||||
// todo: integrate workflow chart components into this view
|
||||
@ -89,21 +94,15 @@ function resolveResource (
|
||||
Object.assign(config.params, query);
|
||||
}
|
||||
|
||||
Wait('start');
|
||||
const resourcePromise = new Resource(['get', 'options'], [id, id])
|
||||
.then(model => {
|
||||
const endpoint = `${model.get('url')}${related}/`;
|
||||
eventsApi.init(endpoint, config.params);
|
||||
Events.init(`${API_ROOT}${related}`, config.params);
|
||||
|
||||
return eventsApi.fetch()
|
||||
.then(events => ([model, events]));
|
||||
})
|
||||
Wait('start');
|
||||
const promise = Promise.all([new Resource(['get', 'options'], [id, id]), Events.fetch()])
|
||||
.then(([model, events]) => ({
|
||||
id,
|
||||
type,
|
||||
model,
|
||||
events,
|
||||
related,
|
||||
ws: {
|
||||
events: `${WS_PREFIX}-${key}-${id}`,
|
||||
status: `${WS_PREFIX}-${name}`,
|
||||
@ -116,13 +115,14 @@ function resolveResource (
|
||||
}));
|
||||
|
||||
if (!handleErrors) {
|
||||
return resourcePromise
|
||||
return promise
|
||||
.finally(() => Wait('stop'));
|
||||
}
|
||||
|
||||
return resourcePromise
|
||||
return promise
|
||||
.catch(({ data, status }) => {
|
||||
qs.error(data, status);
|
||||
|
||||
return $state.go($state.current, $state.params, { reload: true });
|
||||
})
|
||||
.finally(() => Wait('stop'));
|
||||
@ -209,13 +209,13 @@ function JobsRun ($stateRegistry, $filter, strings) {
|
||||
],
|
||||
resource: [
|
||||
'$state',
|
||||
'$stateParams',
|
||||
'JobModel',
|
||||
'ProjectUpdateModel',
|
||||
'AdHocCommandModel',
|
||||
'SystemJobModel',
|
||||
'WorkflowJobModel',
|
||||
'InventoryUpdateModel',
|
||||
'$stateParams',
|
||||
'QuerySet',
|
||||
'Wait',
|
||||
'JobEventsApiService',
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user