From 52fc8a14950c36d40fd6b0d8a0f7799757f1b3be Mon Sep 17 00:00:00 2001 From: Naman Munet Date: Wed, 17 Jul 2024 15:34:55 +0530 Subject: [PATCH] mgr/dashboard: rgw sync policy routing fixes Fixes: https://tracker.ceph.com/issues/66977 Signed-off-by: Naman Munet (cherry picked from commit ca4759b8f48fc62ff61fd290657586abd75c293c) Conflicts: src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-details/rgw-multisite-details.component.html src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-details/rgw-multisite-details.component.ts src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-wizard/rgw-multisite-wizard.component.ts src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw.module.ts --- .../cypress/e2e/rgw/multisite.e2e.spec.ts | 25 +- .../frontend/cypress/e2e/rgw/multisite.po.ts | 19 +- .../rgw-multisite-details.component.html | 261 ++++++++---------- .../rgw-multisite-details.component.ts | 21 +- ...w-multisite-sync-flow-modal.component.html | 123 ++++----- ...rgw-multisite-sync-flow-modal.component.ts | 1 + ...w-multisite-sync-pipe-modal.component.html | 165 +++++------ ...rgw-multisite-sync-pipe-modal.component.ts | 1 + ...-multisite-sync-policy-form.component.html | 50 ++-- ...gw-multisite-sync-policy-form.component.ts | 22 +- .../rgw-multisite-sync-policy.component.html | 4 + .../rgw-multisite-sync-policy.component.ts | 35 +-- .../rgw-multisite-tabs.component.html | 16 ++ .../rgw-multisite-tabs.component.scss | 0 .../rgw-multisite-tabs.component.spec.ts | 22 ++ .../rgw-multisite-tabs.component.ts | 8 + .../frontend/src/app/ceph/rgw/rgw.module.ts | 38 ++- 17 files changed, 389 insertions(+), 422 deletions(-) create mode 100644 src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-tabs/rgw-multisite-tabs.component.html create mode 100644 src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-tabs/rgw-multisite-tabs.component.scss create mode 100644 src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-tabs/rgw-multisite-tabs.component.spec.ts create mode 100644 src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-tabs/rgw-multisite-tabs.component.ts diff --git a/src/pybind/mgr/dashboard/frontend/cypress/e2e/rgw/multisite.e2e.spec.ts b/src/pybind/mgr/dashboard/frontend/cypress/e2e/rgw/multisite.e2e.spec.ts index a0306f126b321..9110f723d5dc3 100644 --- a/src/pybind/mgr/dashboard/frontend/cypress/e2e/rgw/multisite.e2e.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/cypress/e2e/rgw/multisite.e2e.spec.ts @@ -5,20 +5,12 @@ describe('Multisite page', () => { beforeEach(() => { cy.login(); - multisite.navigateTo(); }); - describe('tabs and table tests', () => { - it('should show two tabs', () => { - multisite.getTabsCount().should('eq', 2); - }); - - it('should show Configuration tab as a first tab', () => { - multisite.getTabText(0).should('eq', 'Configuration'); - }); - - it('should show sync policy tab as a second tab', () => { - multisite.getTabText(1).should('eq', 'Sync Policy'); + describe('table tests', () => { + it('should show table on sync-policy page', () => { + multisite.navigateTo(); + multisite.tableExist(); }); }); @@ -30,11 +22,12 @@ describe('Multisite page', () => { }); it('should edit policy status', () => { + multisite.navigateTo(); multisite.edit('test', 'Forbidden'); }); it('should delete policy', () => { - multisite.getTab('Sync Policy').click(); + multisite.navigateTo(); multisite.delete('test'); }); }); @@ -47,7 +40,7 @@ describe('Multisite page', () => { }); describe('symmetrical Flow creation started', () => { beforeEach(() => { - multisite.getTab('Sync Policy').click(); + multisite.navigateTo(); multisite.getExpandCollapseElement().click(); }); @@ -67,7 +60,7 @@ describe('Multisite page', () => { describe('create, edit & delete directional sync Flow', () => { beforeEach(() => { - multisite.getTab('Sync Policy').click(); + multisite.navigateTo(); multisite.getExpandCollapseElement().click(); }); @@ -82,7 +75,7 @@ describe('Multisite page', () => { describe('create, edit, delete pipe', () => { beforeEach(() => { - multisite.getTab('Sync Policy').click(); + multisite.navigateTo(); multisite.getExpandCollapseElement().click(); }); diff --git a/src/pybind/mgr/dashboard/frontend/cypress/e2e/rgw/multisite.po.ts b/src/pybind/mgr/dashboard/frontend/cypress/e2e/rgw/multisite.po.ts index 11a43a7b8b30b..ffcae7197aaf8 100644 --- a/src/pybind/mgr/dashboard/frontend/cypress/e2e/rgw/multisite.po.ts +++ b/src/pybind/mgr/dashboard/frontend/cypress/e2e/rgw/multisite.po.ts @@ -2,9 +2,12 @@ import { PageHelper } from '../page-helper.po'; const WAIT_TIMER = 1000; const pages = { - index: { url: '#/rgw/multisite', id: 'cd-rgw-multisite-details' }, - create: { url: '#/rgw/multisite/sync-policy/create', id: 'cd-rgw-multisite-sync-policy-form' }, - edit: { url: '#/rgw/multisite/sync-policy/edit', id: 'cd-rgw-multisite-sync-policy-form' } + index: { url: '#/rgw/multisite/sync-policy', id: 'cd-rgw-multisite-sync-policy' }, + create: { + url: '#/rgw/multisite/sync-policy/(modal:create)', + id: 'cd-rgw-multisite-sync-policy-form' + }, + edit: { url: '#/rgw/multisite/sync-policy/(modal:edit', id: 'cd-rgw-multisite-sync-policy-form' } }; export class MultisitePageHelper extends PageHelper { pages = pages; @@ -13,6 +16,11 @@ export class MultisitePageHelper extends PageHelper { status: 4 }; + tableExist() { + cy.get('cd-rgw-multisite-sync-policy cd-table').should('exist'); + cy.get('cd-rgw-multisite-sync-policy cd-table-actions').should('exist'); + } + @PageHelper.restrictTo(pages.create.url) create(group_id: string, status: string) { // Enter in group_id @@ -28,7 +36,7 @@ export class MultisitePageHelper extends PageHelper { @PageHelper.restrictTo(pages.index.url) edit(group_id: string, status: string) { - cy.visit(`${pages.edit.url}/${group_id}`); + cy.visit(`${pages.edit.url}/${group_id})`); // Change the status field this.selectOption('status', status); @@ -42,9 +50,6 @@ export class MultisitePageHelper extends PageHelper { @PageHelper.restrictTo(pages.index.url) createSymmetricalFlow(flow_id: string, zones: string[]) { - cy.get('cd-rgw-multisite-sync-policy-details').should('exist'); - this.getTab('Flow').should('exist'); - this.getTab('Flow').click(); cy.request({ method: 'GET', url: '/api/rgw/daemon', diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-details/rgw-multisite-details.component.html b/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-details/rgw-multisite-details.component.html index 921a2dfe3eb7d..3e7ac5eb8b673 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-details/rgw-multisite-details.component.html +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-details/rgw-multisite-details.component.html @@ -1,156 +1,113 @@ - - -
+ + + diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-details/rgw-multisite-details.component.ts b/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-details/rgw-multisite-details.component.ts index 4b65b7e37bd45..ae2b1a03035b6 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-details/rgw-multisite-details.component.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-details/rgw-multisite-details.component.ts @@ -37,6 +37,7 @@ import { RgwDaemonService } from '~/app/shared/api/rgw-daemon.service'; import { MgrModuleService } from '~/app/shared/api/mgr-module.service'; import { BlockUI, NgBlockUI } from 'ng-block-ui'; import { Router } from '@angular/router'; +import { RgwMultisiteSyncPolicyComponent } from '../rgw-multisite-sync-policy/rgw-multisite-sync-policy.component'; @Component({ selector: 'cd-rgw-multisite-details', @@ -47,6 +48,7 @@ export class RgwMultisiteDetailsComponent implements OnDestroy, OnInit { private sub = new Subscription(); @ViewChild('tree') tree: TreeComponent; + @ViewChild(RgwMultisiteSyncPolicyComponent) syncPolicyComp: RgwMultisiteSyncPolicyComponent; messages = { noDefaultRealm: $localize`Please create a default realm first to enable this feature`, @@ -116,10 +118,6 @@ export class RgwMultisiteDetailsComponent implements OnDestroy, OnInit { private notificationService: NotificationService ) { this.permission = this.authStorageService.getPermissions().rgw; - const activeId = this.router.getCurrentNavigation()?.extras?.state?.activeId; - if (activeId) { - this.activeId = activeId; - } } openModal(entity: any, edit = false) { @@ -593,19 +591,4 @@ export class RgwMultisiteDetailsComponent implements OnDestroy, OnInit { } ); } - - onNavChange(event: any) { - if (event.nextId == 'configuration') { - this.metadata = null; - /* - It is a known issue with angular2-tree package when tree is hidden (for example inside tab or modal), - it is not rendered when it becomes visible. Solution is to call this.tree.sizeChanged() which recalculates - the rendered nodes according to the actual viewport size. (https://angular2-tree.readme.io/docs/common-issues) - */ - setTimeout(() => { - this.tree.sizeChanged(); - this.onUpdateData(); - }, 200); - } - } } diff --git a/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-flow-modal/rgw-multisite-sync-flow-modal.component.html b/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-flow-modal/rgw-multisite-sync-flow-modal.component.html index 974474c593878..b7f614ef16b6f 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-flow-modal/rgw-multisite-sync-flow-modal.component.html +++ b/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-sync-flow-modal/rgw-multisite-sync-flow-modal.component.html @@ -1,29 +1,24 @@ - {{ action | titlecase }} {{ groupType | upperFirst }} Flow + {{ action | titlecase }} {{ groupType | upperFirst }} Flow -
+