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