From d6b057bdcd6481b0babd5c5747bb86f9778fcedb Mon Sep 17 00:00:00 2001 From: Tiago Melo Date: Mon, 5 Nov 2018 11:39:29 +0000 Subject: [PATCH] mgr/dashboard: Fix duplicate tasks In certain situations a new task is already in the current summary before we manually push it to the running task list. Since we were not checking that, at the end of the operation we would have 2 entries for the same task and that would be displayed in the UI. Signed-off-by: Tiago Melo --- .../app/shared/services/summary.service.spec.ts | 17 +++++++++++++++++ .../src/app/shared/services/summary.service.ts | 7 ++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/services/summary.service.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/services/summary.service.spec.ts index 4dd03110c13..1c31f414c40 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/shared/services/summary.service.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/services/summary.service.spec.ts @@ -95,5 +95,22 @@ describe('SummaryService', () => { name: 'rbd/delete' }); }); + + it('should call addRunningTask with duplicate task', () => { + let result = summaryService.getCurrentSummary(); + const exec_task = new ExecutingTask('rbd/delete', { + pool_name: 'somePool', + image_name: 'someImage' + }); + + result.executing_tasks = [exec_task]; + summaryService['summaryDataSource'].next(result); + result = summaryService.getCurrentSummary(); + expect(result.executing_tasks.length).toBe(1); + + summaryService.addRunningTask(exec_task); + result = summaryService.getCurrentSummary(); + expect(result.executing_tasks.length).toBe(1); + }); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/services/summary.service.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/services/summary.service.ts index fad4dd9435a..d90c16f74c7 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/shared/services/summary.service.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/services/summary.service.ts @@ -76,7 +76,12 @@ export class SummaryService { } if (_.isArray(current.executing_tasks)) { - current.executing_tasks.push(task); + const exists = current.executing_tasks.find((element) => { + return element.name === task.name && _.isEqual(element.metadata, task.metadata); + }); + if (!exists) { + current.executing_tasks.push(task); + } } else { current.executing_tasks = [task]; } -- 2.39.5