feat: add Filesystems/ObjectStores pages, fix CSI selectors, remove app bar badge (#2)
- Remove AppBarClusterBadge registration (top-bar health bubble) - Fix CSI pod selectors to match actual pod labels in this cluster (was: csi-rbdplugin-provisioner, now: rook-ceph.rbd.csi.ceph.com-ctrlplugin) - Add FilesystemsPage with detail drawer (Active MDS, data pools, status) - Add ObjectStoresPage with detail drawer (gateway port, instances, endpoints) - Register Filesystems and Object Stores as sidebar entries with routes - Enhance PodsPage OSD table with OSD ID, device class, store type, and failure domain columns from pod labels Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Happy <yesreply@happy.engineering>
This commit was merged in pull request #2.
This commit is contained in:
+42
-11
@@ -6,7 +6,6 @@
|
||||
*/
|
||||
|
||||
import {
|
||||
registerAppBarAction,
|
||||
registerDetailsViewSection,
|
||||
registerResourceTableColumnsProcessor,
|
||||
registerRoute,
|
||||
@@ -14,10 +13,11 @@ import {
|
||||
} from '@kinvolk/headlamp-plugin/lib';
|
||||
import React from 'react';
|
||||
import { RookCephDataProvider } from './api/RookCephDataContext';
|
||||
import AppBarClusterBadge from './components/AppBarClusterBadge';
|
||||
import BlockPoolsPage from './components/BlockPoolsPage';
|
||||
import CephPodDetailSection from './components/CephPodDetailSection';
|
||||
import FilesystemsPage from './components/FilesystemsPage';
|
||||
import { buildPVColumns, buildStorageClassColumns } from './components/integrations/StorageClassColumns';
|
||||
import ObjectStoresPage from './components/ObjectStoresPage';
|
||||
import OverviewPage from './components/OverviewPage';
|
||||
import PodsPage from './components/PodsPage';
|
||||
import PVCDetailSection from './components/PVCDetailSection';
|
||||
@@ -53,6 +53,22 @@ registerSidebarEntry({
|
||||
icon: 'mdi:database',
|
||||
});
|
||||
|
||||
registerSidebarEntry({
|
||||
parent: 'rook-ceph',
|
||||
name: 'rook-ceph-filesystems',
|
||||
label: 'Filesystems',
|
||||
url: '/rook-ceph/filesystems',
|
||||
icon: 'mdi:folder-network',
|
||||
});
|
||||
|
||||
registerSidebarEntry({
|
||||
parent: 'rook-ceph',
|
||||
name: 'rook-ceph-objectstores',
|
||||
label: 'Object Stores',
|
||||
url: '/rook-ceph/object-stores',
|
||||
icon: 'mdi:bucket',
|
||||
});
|
||||
|
||||
registerSidebarEntry({
|
||||
parent: 'rook-ceph',
|
||||
name: 'rook-ceph-pods',
|
||||
@@ -89,6 +105,30 @@ registerRoute({
|
||||
),
|
||||
});
|
||||
|
||||
registerRoute({
|
||||
path: '/rook-ceph/filesystems',
|
||||
sidebar: 'rook-ceph-filesystems',
|
||||
name: 'rook-ceph-filesystems',
|
||||
exact: true,
|
||||
component: () => (
|
||||
<RookCephDataProvider>
|
||||
<FilesystemsPage />
|
||||
</RookCephDataProvider>
|
||||
),
|
||||
});
|
||||
|
||||
registerRoute({
|
||||
path: '/rook-ceph/object-stores',
|
||||
sidebar: 'rook-ceph-objectstores',
|
||||
name: 'rook-ceph-objectstores',
|
||||
exact: true,
|
||||
component: () => (
|
||||
<RookCephDataProvider>
|
||||
<ObjectStoresPage />
|
||||
</RookCephDataProvider>
|
||||
),
|
||||
});
|
||||
|
||||
// Storage Classes and Volumes pages accessible via direct URL
|
||||
registerRoute({
|
||||
path: '/rook-ceph/storage-classes',
|
||||
@@ -172,12 +212,3 @@ registerResourceTableColumnsProcessor(({ id, columns }) => {
|
||||
return columns;
|
||||
});
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// App bar action — cluster health badge
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
registerAppBarAction(() => (
|
||||
<RookCephDataProvider>
|
||||
<AppBarClusterBadge />
|
||||
</RookCephDataProvider>
|
||||
));
|
||||
|
||||
Reference in New Issue
Block a user