diff --git a/packages/teraslice/src/lib/cluster/services/api.ts b/packages/teraslice/src/lib/cluster/services/api.ts index fb520df4ca0..3639967c3e0 100644 --- a/packages/teraslice/src/lib/cluster/services/api.ts +++ b/packages/teraslice/src/lib/cluster/services/api.ts @@ -271,7 +271,7 @@ export class ApiService { }); v1routes.get('/jobs', (req, res) => { - const { active = '', deleted = 'false' } = req.query; + const { active = '', deleted = 'false', ex } = req.query; const { size, from, sort } = getSearchOptions(req as TerasliceRequest); const requestHandler = handleTerasliceRequest(req as TerasliceRequest, res, 'Could not retrieve list of jobs'); @@ -280,8 +280,9 @@ export class ApiService { const partialQuery = createJobActiveQuery(active as string); const query = addDeletedToQuery(deleted as string, partialQuery); - - return this.jobsStorage.search(query, from, size, sort as string); + return typeof ex === 'string' + ? this.jobsService.getJobsWithExInfo(query, from, size, sort as string, ex.split(',')) + : this.jobsStorage.search(query, from, size, sort as string); }); }); diff --git a/packages/teraslice/src/lib/cluster/services/jobs.ts b/packages/teraslice/src/lib/cluster/services/jobs.ts index 519dccf931b..fb4e075adfb 100644 --- a/packages/teraslice/src/lib/cluster/services/jobs.ts +++ b/packages/teraslice/src/lib/cluster/services/jobs.ts @@ -388,6 +388,31 @@ export class JobsService { return job; } + /** + * Get a list of jobs with the latest ex status for each one + * + * @param {string} query + * @param {number} from + * @param {number} size + * @param {string} sort + * @param {string} [ex_fields] + * @returns {Promise} + */ + async getJobsWithExInfo( + query: string | Record, + from?: number, + size?: number, + sort?: string, + ex_fields?: string[] + ): Promise { + const jobList = await this.jobsStorage.search(query, from, size, sort); + const finalList: JobConfig[] = []; + for (const job of jobList) { + finalList.push(await this.getJobWithExInfo(job.job_id, ex_fields)); + } + return finalList; + } + /** * Get the active execution *