mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-09-11 14:00:29 +00:00
Hide Backup column on non-Proxmox workload surfaces
The workload table's Backup column reads exclusively from resource.proxmox.lastBackup (useWorkloads.ts line 486), which Proxmox VE populates from its built-in vzdump scheduler / PBS integration. No other adapter populates a backup field — vCenter has no native backup concept (third-party tools like Veeam own that), Docker / Podman / Kubernetes don't expose a workload-row "last backup" either. So the column rendered a permanently blank cell on every platform except Proxmox. This is structurally different from the earlier (wrong) instinct to hide DISK and Uptime on vSphere: those had real upstream sources (guest filesystem REST + PerformanceManager uptime counters) that were properly fixed by extending the backend adapter. Backup has no upstream source at this integration layer, so hiding it is the canonical product call rather than a stopgap. Hide by default on: - vSphere via VMWARE_WORKLOAD_DEFAULT_HIDDEN_COLUMN_IDS in VmwarePageSurface.tsx - Kubernetes via additionalDefaultHiddenColumnIds in KubernetesPageSurface.tsx - Docker / Podman / TrueNAS apps via the shared APP_CONTAINER_BASE_DEFAULT_HIDDEN_COLUMNS constant in appContainerColumns.ts (Docker test list updated to match) Proxmox keeps Backup visible by default since that's the only platform whose adapter populates the underlying field. Users on any platform can still toggle the column back on from the Columns menu.
This commit is contained in:
@@ -103,7 +103,7 @@ describe('dockerPageModel', () => {
|
||||
buildDockerContainerDefaultHiddenColumnIds([
|
||||
makeResource({ id: 'ctr-1', type: 'app-container' }),
|
||||
]),
|
||||
).toEqual(['disk', 'tags', 'netIo', 'diskIo']);
|
||||
).toEqual(['disk', 'tags', 'backup', 'netIo', 'diskIo']);
|
||||
});
|
||||
|
||||
it('keeps Docker container I/O columns default-visible once telemetry exists', () => {
|
||||
@@ -116,7 +116,7 @@ describe('dockerPageModel', () => {
|
||||
diskIO: { readRate: 0, writeRate: 0 },
|
||||
}),
|
||||
]),
|
||||
).toEqual(['disk', 'tags']);
|
||||
).toEqual(['disk', 'tags', 'backup']);
|
||||
});
|
||||
|
||||
it('decides Docker container network and disk I/O defaults independently', () => {
|
||||
@@ -128,7 +128,7 @@ describe('dockerPageModel', () => {
|
||||
network: { rxBytes: 128, txBytes: 64 },
|
||||
}),
|
||||
]),
|
||||
).toEqual(['disk', 'tags', 'diskIo']);
|
||||
).toEqual(['disk', 'tags', 'backup', 'diskIo']);
|
||||
|
||||
expect(
|
||||
buildDockerContainerDefaultHiddenColumnIds([
|
||||
@@ -138,7 +138,7 @@ describe('dockerPageModel', () => {
|
||||
diskIO: { readRate: 128, writeRate: 64 },
|
||||
}),
|
||||
]),
|
||||
).toEqual(['disk', 'tags', 'netIo']);
|
||||
).toEqual(['disk', 'tags', 'backup', 'netIo']);
|
||||
});
|
||||
|
||||
it('builds host-identity badges for Docker workload group rows', () => {
|
||||
|
||||
@@ -109,6 +109,11 @@ function KubernetesOverview(props: KubernetesOverviewProps) {
|
||||
suppressPlatformFilter: true,
|
||||
allowEmbeddedScopeFilters: true,
|
||||
columnVisibilityStorageScope: KUBERNETES_WORKLOAD_COLUMN_SCOPE,
|
||||
// Backup column is driven exclusively by Proxmox vzdump / PBS data
|
||||
// (`resource.proxmox.lastBackup` in useWorkloads); Kubernetes
|
||||
// workloads have no equivalent source at this integration layer, so
|
||||
// the column would always render blank. Hide by default.
|
||||
additionalDefaultHiddenColumnIds: ['backup'],
|
||||
compactGroupHeaders: true,
|
||||
});
|
||||
const showSharedFilterToolbar = createMemo(
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
import type { Resource } from '@/types/resource';
|
||||
|
||||
export const APP_CONTAINER_BASE_DEFAULT_HIDDEN_COLUMNS = ['disk', 'tags'] as const;
|
||||
// Default-hidden columns for app-container workloads. `disk` and `tags` are
|
||||
// existing hides; `backup` is added because the workload-table Backup column
|
||||
// is driven exclusively by `resource.proxmox.lastBackup`, which Proxmox VE
|
||||
// populates from its vzdump scheduler / PBS integration. App containers
|
||||
// (Docker, Podman, TrueNAS apps) have no equivalent source — the cell is
|
||||
// not just empty, the concept doesn't exist at this integration layer.
|
||||
export const APP_CONTAINER_BASE_DEFAULT_HIDDEN_COLUMNS = ['disk', 'tags', 'backup'] as const;
|
||||
|
||||
export const APP_CONTAINER_COLUMN_LABEL_OVERRIDES = {
|
||||
disk: 'Writable layer',
|
||||
|
||||
@@ -46,6 +46,14 @@ const VALID_TABS = new Set<VmwarePageTabId>(VMWARE_TAB_SPECS.map((tab) => tab.id
|
||||
const VMWARE_PLATFORM_FILTER = 'vmware-vsphere';
|
||||
const VMWARE_WORKLOAD_STATUS_STORAGE_SCOPE = 'vmware';
|
||||
const VMWARE_WORKLOAD_COLUMN_VISIBILITY_SCOPE = 'vmware-vms';
|
||||
// Backup column on the workload table is driven exclusively by Proxmox
|
||||
// vzdump / PBS data (`resource.proxmox.lastBackup` in useWorkloads).
|
||||
// vCenter has no native backup concept — vSphere backups happen in
|
||||
// third-party products (Veeam, Commvault, Rubrik, Cohesity, Dell
|
||||
// PowerProtect) or VMware's separately-licensed Live Recovery / SRM,
|
||||
// none of which surface through vCenter's inventory API. Hide the
|
||||
// column by default rather than render a permanently blank cell.
|
||||
const VMWARE_WORKLOAD_DEFAULT_HIDDEN_COLUMN_IDS: readonly string[] = ['backup'];
|
||||
const VMWARE_WORKLOAD_STATUS_OPTIONS: readonly WorkloadsStatusOption[] = [
|
||||
{ value: 'all', label: 'All' },
|
||||
{ value: 'running', label: 'Powered on' },
|
||||
@@ -233,6 +241,7 @@ function VmwareOverview(props: VmwareOverviewProps) {
|
||||
allowEmbeddedScopeFilters: true,
|
||||
statusModeStorageScope: VMWARE_WORKLOAD_STATUS_STORAGE_SCOPE,
|
||||
columnVisibilityStorageScope: VMWARE_WORKLOAD_COLUMN_VISIBILITY_SCOPE,
|
||||
additionalDefaultHiddenColumnIds: [...VMWARE_WORKLOAD_DEFAULT_HIDDEN_COLUMN_IDS],
|
||||
compactGroupHeaders: true,
|
||||
groupNodeDrawerMode: 'disabled',
|
||||
metricDisplayMode: props.metricDisplayMode,
|
||||
|
||||
Reference in New Issue
Block a user