From c11096e407cc28fa536e60ede813142e10dc6a37 Mon Sep 17 00:00:00 2001 From: Nizamudeen A Date: Tue, 1 Mar 2022 01:53:19 +0530 Subject: [PATCH] mgr/dashboard: extend daemon actions to host details The daemon actions are only available in the service details section but not on the host details. This takes care of that. Fixes: https://tracker.ceph.com/issues/54559 Signed-off-by: Nizamudeen A --- .../integration/cluster/services.po.ts | 4 +- .../workflow/09-services.e2e-spec.ts | 37 ++++++++-------- .../cypress/integration/page-helper.po.ts | 8 +++- .../service-daemon-list.component.html | 44 +++++++++---------- .../service-daemon-list.component.ts | 10 +---- 5 files changed, 51 insertions(+), 52 deletions(-) diff --git a/src/pybind/mgr/dashboard/frontend/cypress/integration/cluster/services.po.ts b/src/pybind/mgr/dashboard/frontend/cypress/integration/cluster/services.po.ts index 821be43bbab5f..c32a9f21d439c 100644 --- a/src/pybind/mgr/dashboard/frontend/cypress/integration/cluster/services.po.ts +++ b/src/pybind/mgr/dashboard/frontend/cypress/integration/cluster/services.po.ts @@ -17,7 +17,7 @@ export class ServicesPageHelper extends PageHelper { }; serviceDetailColumnIndex = { - daemonName: 1, + daemonName: 2, status: 7 }; @@ -120,7 +120,7 @@ export class ServicesPageHelper extends PageHelper { // we'll need to manually override the indexes when this check is being // done for the daemons in host details page. So we'll get the url and // verify if the current page is not the services index page - cy.url().then(url => { + cy.url().then((url) => { if (!url.includes(pages.index.url)) { daemonNameIndex = 1; statusIndex = 6; diff --git a/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/09-services.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/09-services.e2e-spec.ts index d4acf0d72d5df..360bb3a92e9ee 100644 --- a/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/09-services.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/cypress/integration/orchestrator/workflow/09-services.e2e-spec.ts @@ -4,6 +4,7 @@ import { ServicesPageHelper } from '../../cluster/services.po'; describe('Services page', () => { const services = new ServicesPageHelper(); + const mdsDaemonName = 'mds.test'; beforeEach(() => { cy.login(); Cypress.Cookies.preserveOnce('token'); @@ -17,51 +18,51 @@ describe('Services page', () => { it('should create an mds service', () => { services.navigateTo('create'); services.addService('mds', false); - services.checkExist('mds.test', true); + services.checkExist(mdsDaemonName, true); - services.clickServiceTab('mds.test', 'Details'); + services.clickServiceTab(mdsDaemonName, 'Details'); cy.get('cd-service-details').within(() => { - services.checkServiceStatus('mds'); + services.checkServiceStatus(mdsDaemonName); }); }); it('should stop a daemon', () => { - services.clickServiceTab('mds.test', 'Details'); - services.checkServiceStatus('mds'); + services.clickServiceTab(mdsDaemonName, 'Details'); + services.checkServiceStatus(mdsDaemonName); services.daemonAction('mds', 'stop'); - services.checkServiceStatus('mds', 'stopped'); + services.checkServiceStatus(mdsDaemonName, 'stopped'); }); it('should restart a daemon', () => { - services.checkExist('mds.test', true); - services.clickServiceTab('mds.test', 'Details'); + services.checkExist(mdsDaemonName, true); + services.clickServiceTab(mdsDaemonName, 'Details'); services.daemonAction('mds', 'restart'); - services.checkServiceStatus('mds', 'running'); + services.checkServiceStatus(mdsDaemonName, 'running'); }); it('should redeploy a daemon', () => { - services.checkExist('mds.test', true); - services.clickServiceTab('mds.test', 'Details'); + services.checkExist(mdsDaemonName, true); + services.clickServiceTab(mdsDaemonName, 'Details'); services.daemonAction('mds', 'stop'); - services.checkServiceStatus('mds', 'stopped'); + services.checkServiceStatus(mdsDaemonName, 'stopped'); services.daemonAction('mds', 'redeploy'); - services.checkServiceStatus('mds', 'running'); + services.checkServiceStatus(mdsDaemonName, 'running'); }); it('should start a daemon', () => { - services.checkExist('mds.test', true); - services.clickServiceTab('mds.test', 'Details'); + services.checkExist(mdsDaemonName, true); + services.clickServiceTab(mdsDaemonName, 'Details'); services.daemonAction('mds', 'stop'); - services.checkServiceStatus('mds', 'stopped'); + services.checkServiceStatus(mdsDaemonName, 'stopped'); services.daemonAction('mds', 'start'); - services.checkServiceStatus('mds', 'running'); + services.checkServiceStatus(mdsDaemonName, 'running'); }); it('should delete an mds service', () => { - services.deleteService('mds.test'); + services.deleteService(mdsDaemonName); }); it('should create and delete snmp-gateway service with version V2c', () => { diff --git a/src/pybind/mgr/dashboard/frontend/cypress/integration/page-helper.po.ts b/src/pybind/mgr/dashboard/frontend/cypress/integration/page-helper.po.ts index 72d811065a8ce..4531a70bb7fed 100644 --- a/src/pybind/mgr/dashboard/frontend/cypress/integration/page-helper.po.ts +++ b/src/pybind/mgr/dashboard/frontend/cypress/integration/page-helper.po.ts @@ -196,10 +196,16 @@ export abstract class PageHelper { } } - getTableCell(columnIndex: number, exactContent: string) { + getTableCell(columnIndex: number, exactContent: string, partialMatch = false) { this.waitDataTableToLoad(); this.clearTableSearchInput(); this.searchTable(exactContent); + if (partialMatch) { + return cy.contains( + `datatable-body-row datatable-body-cell:nth-child(${columnIndex})`, + exactContent + ); + } return cy.contains( `datatable-body-row datatable-body-cell:nth-child(${columnIndex})`, new RegExp(`^${exactContent}$`) diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-daemon-list/service-daemon-list.component.html b/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-daemon-list/service-daemon-list.component.html index 5b631453f8b3d..9091651842649 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-daemon-list/service-daemon-list.component.html +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-daemon-list/service-daemon-list.component.html @@ -1,13 +1,7 @@
- - +
@@ -20,22 +14,7 @@ Details - - - - +
  • @@ -89,3 +68,22 @@ + + + + + + + diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-daemon-list/service-daemon-list.component.ts b/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-daemon-list/service-daemon-list.component.ts index ba8068b23be17..3decf45e773d8 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-daemon-list/service-daemon-list.component.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/services/service-daemon-list/service-daemon-list.component.ts @@ -130,14 +130,8 @@ export class ServiceDaemonListComponent implements OnInit, OnChanges, AfterViewI filterable: true }, { - name: $localize`Daemon type`, - prop: 'daemon_type', - flexGrow: 1, - filterable: true - }, - { - name: $localize`Daemon ID`, - prop: 'daemon_id', + name: $localize`Daemon name`, + prop: 'daemon_name', flexGrow: 1, filterable: true }, -- 2.39.5