]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/pybind/mgr/dashboard/frontend/cypress/e2e/cluster/osds.po.ts
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / cypress / e2e / cluster / osds.po.ts
diff --git a/ceph/src/pybind/mgr/dashboard/frontend/cypress/e2e/cluster/osds.po.ts b/ceph/src/pybind/mgr/dashboard/frontend/cypress/e2e/cluster/osds.po.ts
new file mode 100644 (file)
index 0000000..cd812f4
--- /dev/null
@@ -0,0 +1,84 @@
+import { PageHelper } from '../page-helper.po';
+
+const pages = {
+  index: { url: '#/osd', id: 'cd-osd-list' },
+  create: { url: '#/osd/create', id: 'cd-osd-form' }
+};
+
+export class OSDsPageHelper extends PageHelper {
+  pages = pages;
+
+  columnIndex = {
+    id: 3,
+    status: 5
+  };
+
+  create(deviceType: 'hdd' | 'ssd', hostname?: string, expandCluster = false) {
+    cy.get('[aria-label="toggle advanced mode"]').click();
+    // Click Primary devices Add button
+    cy.get('cd-osd-devices-selection-groups[name="Primary"]').as('primaryGroups');
+    cy.get('@primaryGroups').find('button').click();
+
+    // Select all devices with `deviceType`
+    cy.get('cd-osd-devices-selection-modal').within(() => {
+      cy.get('.modal-footer .tc_submitButton').as('addButton').should('be.disabled');
+      this.filterTable('Type', deviceType);
+      if (hostname) {
+        this.filterTable('Hostname', hostname);
+      }
+
+      if (expandCluster) {
+        this.getTableCount('total').should('be.gte', 1);
+      }
+      cy.get('@addButton').click();
+    });
+
+    if (!expandCluster) {
+      cy.get('@primaryGroups').within(() => {
+        this.getTableCount('total').as('newOSDCount');
+      });
+
+      cy.get(`${pages.create.id} .card-footer .tc_submitButton`).click();
+      cy.get(`cd-osd-creation-preview-modal .modal-footer .tc_submitButton`).click();
+    }
+  }
+
+  @PageHelper.restrictTo(pages.index.url)
+  checkStatus(id: number, status: string[]) {
+    this.searchTable(`id:${id}`);
+    this.expectTableCount('found', 1);
+    cy.get(`datatable-body-cell:nth-child(${this.columnIndex.status}) .badge`).should(($ele) => {
+      const allStatus = $ele.toArray().map((v) => v.innerText);
+      for (const s of status) {
+        expect(allStatus).to.include(s);
+      }
+    });
+  }
+
+  @PageHelper.restrictTo(pages.index.url)
+  ensureNoOsd(id: number) {
+    this.searchTable(`id:${id}`);
+    this.expectTableCount('found', 0);
+    this.clearTableSearchInput();
+  }
+
+  @PageHelper.restrictTo(pages.index.url)
+  deleteByIDs(osdIds: number[], replace?: boolean) {
+    this.getTableRows().each(($el) => {
+      const rowOSD = Number(
+        $el.find('datatable-body-cell .datatable-body-cell-label').get(this.columnIndex.id - 1)
+          .textContent
+      );
+      if (osdIds.includes(rowOSD)) {
+        cy.wrap($el).click();
+      }
+    });
+    this.clickActionButton('delete');
+    if (replace) {
+      cy.get('cd-modal label[for="preserve"]').click();
+    }
+    cy.get('cd-modal label[for="confirmation"]').click();
+    cy.contains('cd-modal button', 'Delete').click();
+    cy.get('cd-modal').should('not.exist');
+  }
+}