diff --git a/src/app/core/testing/utils/mock-enclosure.utils.ts b/src/app/core/testing/utils/mock-enclosure.utils.ts index da8d29ba8ad..5598d0bcbf8 100644 --- a/src/app/core/testing/utils/mock-enclosure.utils.ts +++ b/src/app/core/testing/utils/mock-enclosure.utils.ts @@ -125,11 +125,11 @@ export class MockEnclosureUtils { private mockDiskGetUnused(): ApiCallResponse<'disk.get_unused'> { return this.mockStorage.disks.filter((disk: Disk) => { return !Object.keys(disk).includes('pool') || typeof disk.pool === 'undefined' || disk.pool === null; - }).map((disk: Disk) => { + }).map((_: Disk) => { return { - ...disk, - partitions: [{ path: '' }], - exported_zpool: '', + // ...disk, + // partitions: [{ path: '' }], + // exported_zpool: '', } as UnusedDisk; }); } diff --git a/src/app/core/testing/utils/mock-storage-generator.utils.ts b/src/app/core/testing/utils/mock-storage-generator.utils.ts index d267168c304..1297bcbfc9b 100644 --- a/src/app/core/testing/utils/mock-storage-generator.utils.ts +++ b/src/app/core/testing/utils/mock-storage-generator.utils.ts @@ -15,11 +15,10 @@ import { DiskType } from 'app/enums/disk-type.enum'; import { PoolStatus } from 'app/enums/pool-status.enum'; import { TopologyItemType, VdevType } from 'app/enums/v-dev-type.enum'; import { TopologyItemStatus } from 'app/enums/vdev-status.enum'; -import { EnclosureOld, EnclosureOldPool, EnclosureOldSlot } from 'app/interfaces/enclosure-old.interface'; +import { EnclosureOld, EnclosureOldSlot } from 'app/interfaces/enclosure-old.interface'; import { Pool } from 'app/interfaces/pool.interface'; import { - Disk, - EnclosureIdAndSlot, + Disk, EnclosureIdAndSlot, TopologyDisk, TopologyItem, TopologyItemStats, @@ -775,38 +774,39 @@ export class MockStorageGenerator { } private syncEnclosurePoolInfo(enclosures: EnclosureOld[]): EnclosureOld[] { - this.poolState?.topology.data.forEach((item: TopologyItem) => { - if (item.type === TopologyItemType.Disk) { - const stripeDisk: Disk = this.disks.find((dev: Disk) => dev.name === item.disk); - const enclosure: EnclosureOld = enclosures.find((enclosureUi: EnclosureOld) => { - return enclosureUi.id === stripeDisk.enclosure.id; - }); - enclosure.elements['Array Device Slot'][stripeDisk.enclosure?.slot].pool_info = null; - } else { - item.children.forEach((child) => { - const disk: Disk = this.disks.find((dev: Disk) => dev.name === child.disk); - if (disk) { - const enclosure: EnclosureOld = enclosures.find((enclosureUi: EnclosureOld) => { - return enclosureUi.id === disk.enclosure.id; - }); - const poolInfo: EnclosureOldPool = { - pool_name: this.poolState.name, - disk_status: child.status, - vdev_name: item.name, - vdev_type: item.type, - vdev_disks: item.children.filter((unfilteredChild: TopologyDisk) => unfilteredChild.disk !== disk.name) - .map((sibling: TopologyDisk) => { - return { - enclosure_id: enclosure.id, - slot: disk.enclosure.slot, - dev: sibling.disk, - }; - }), - }; - enclosure.elements['Array Device Slot'][disk.enclosure?.slot].pool_info = poolInfo; - } - }); - } + this.poolState?.topology.data.forEach((_: TopologyItem) => { + // TODO: Broken due to enclosure API changes + // if (item.type === TopologyItemType.Disk) { + // const stripeDisk: Disk = this.disks.find((dev: Disk) => dev.name === item.disk); + // const enclosure: EnclosureOld = enclosures.find((enclosureUi: EnclosureOld) => { + // return enclosureUi.id === stripeDisk.enclosure.id; + // }); + // enclosure.elements['Array Device Slot'][stripeDisk.enclosure?.slot].pool_info = null; + // } else { + // item.children.forEach((child) => { + // const disk: Disk = this.disks.find((dev: Disk) => dev.name === child.disk); + // if (disk) { + // const enclosure: EnclosureOld = enclosures.find((enclosureUi: EnclosureOld) => { + // return enclosureUi.id === disk.enclosure.id; + // }); + // const poolInfo: EnclosureOldPool = { + // pool_name: this.poolState.name, + // disk_status: child.status, + // vdev_name: item.name, + // vdev_type: item.type, + // vdev_disks: item.children.filter((unfilteredChild: TopologyDisk) => unfilteredChild.disk !== disk.name) + // .map((sibling: TopologyDisk) => { + // return { + // enclosure_id: enclosure.id, + // slot: disk.enclosure.slot, + // dev: sibling.disk, + // }; + // }), + // }; + // enclosure.elements['Array Device Slot'][disk.enclosure?.slot].pool_info = poolInfo; + // } + // }); + // } }); return enclosures; } @@ -875,12 +875,12 @@ export class MockStorageGenerator { // Update the disk data const updatedDisk: Disk = { ...disk }; // Object.assign({}, disk) - const enclosureAndSlot: EnclosureIdAndSlot = { - id: mockEnclosures[enclosureNumber].data.id, - slot: slotNumber, - number: 0, // TODO: Remove when Disk interface is updated - }; - updatedDisk.enclosure = enclosureAndSlot; + // const enclosureAndSlot: EnclosureIdAndSlot = { + // id: mockEnclosures[enclosureNumber].data.id, + // slot: slotNumber, + // number: 0, // TODO: Remove when Disk interface is updated + // }; + // updatedDisk.enclosure = enclosureAndSlot; updatedDisks.push(updatedDisk); } @@ -902,11 +902,11 @@ export class MockStorageGenerator { private existingDispersal(mockEnclosures: MockEnclosure[], disks: Disk[]): DispersedData { // When working with disks with enclosure data already assigned // eg. UI is pointed at a product that already has enclosure support - disks.forEach((disk: Disk) => { - if (!disk.enclosure) return; - - const mockEnclosure = mockEnclosures[disk.enclosure.number]; - mockEnclosure.addDiskToSlot(disk.name, disk.enclosure.slot); + disks.forEach((_: Disk) => { + // if (!disk.enclosure) return; + // + // const mockEnclosure = mockEnclosures[disk.enclosure.number]; + // mockEnclosure.addDiskToSlot(disk.name, disk.enclosure.slot); }); return { @@ -972,11 +972,12 @@ export class MockStorageGenerator { }; } - private removeDiskFromEnclosure(disk: Disk): this { - const mockEnclosureIndex: number = this.mockEnclosures.findIndex((mockEnclosure: MockEnclosure) => { - return mockEnclosure.data.number === disk.enclosure.number; - }); - this.mockEnclosures[mockEnclosureIndex].removeDiskFromSlot(disk.name, disk.enclosure.slot); + private removeDiskFromEnclosure(_: Disk): this { + // TODO: Enclosure mapping is broken because of API changes. + // const mockEnclosureIndex: number = this.mockEnclosures.findIndex((mockEnclosure: MockEnclosure) => { + // return mockEnclosure.data.number === disk.enclosure.number; + // }); + // this.mockEnclosures[mockEnclosureIndex].removeDiskFromSlot(disk.name, disk.enclosure.slot); return this; } diff --git a/src/app/enums/enclosure-slot-status.enum.ts b/src/app/enums/enclosure-slot-status.enum.ts index 092ba13aed7..663ff501324 100644 --- a/src/app/enums/enclosure-slot-status.enum.ts +++ b/src/app/enums/enclosure-slot-status.enum.ts @@ -1,18 +1,31 @@ -import { TopologyItemStatus } from './vdev-status.enum'; - export enum EnclosureSlotStatus { Clear = 'CLEAR', Fault = 'FAULT', Identify = 'IDENTIFY', } -export enum EnclosureSlotDiskStatus { - Available = 'AVAILABLE', - Fault = 'FAULT', +export enum EnclosureStatus { + Ok = 'OK', + Invop = 'INVOP', + Info = 'INFO', + NonCrit = 'NON-CRIT', + Crit = 'CRIT', + Unrecov = 'UNRECOV', +} + +export enum EnclosureDiskStatus { + Offline = 'OFFLINE', + Removed = 'REMOVED', + Faulted = 'FAULTED', + Split = 'SPLIT', + Unavail = 'UNAVAIL', + Degraded = 'DEGRADED', + Online = 'ONLINE', + Unknown = 'UNKNOWN', } // TODO: Find out what all element name possibilities are to complete the enum -export enum EnclosureElementName { +export enum EnclosureElementType { ArrayDeviceSlot = 'Array Device Slot', Enclosure = 'Enclosure', PowerSupply = 'Power Supply', @@ -25,5 +38,3 @@ export enum EnclosureElementName { CurrentSensor = 'Current Sensor', DoorLock = 'Door Lock', } - -export type EnclosureSlotTopologyStatus = TopologyItemStatus | EnclosureSlotDiskStatus; diff --git a/src/app/interfaces/enclosure.interface.ts b/src/app/interfaces/enclosure.interface.ts index e485920f8b7..53707bb6e1e 100644 --- a/src/app/interfaces/enclosure.interface.ts +++ b/src/app/interfaces/enclosure.interface.ts @@ -1,4 +1,6 @@ import { Overwrite } from 'utility-types'; +import { DiskType } from 'app/enums/disk-type.enum'; +import { EnclosureStatus, EnclosureDiskStatus, EnclosureElementType } from 'app/enums/enclosure-slot-status.enum'; import { VdevType } from 'app/enums/v-dev-type.enum'; export interface Enclosure { @@ -6,7 +8,7 @@ export interface Enclosure { model: string; controller: boolean; dmi: string; - status: string; + status: EnclosureStatus[]; id: string; vendor: string; product: string; @@ -41,20 +43,17 @@ export interface EnclosureSlotMetadata { slot: number; } -export interface EnclosureElements { - 'Array Device Slot': Record; - 'SAS Expander'?: Record; - 'Enclosure'?: Record; - 'Temperature'?: Record; - 'Voltage Sensor'?: Record; - 'Cooling'?: Record; -} +export type EnclosureElements = { + [key in EnclosureElementType]?: Record; +} & { + [EnclosureElementType.ArrayDeviceSlot]: Record; +}; export interface EnclosureElement { descriptor: string; status: string; - value: string; - value_raw: number; + value?: string; + value_raw?: number; } export type DashboardEnclosure = Overwrite; export interface DashboardEnclosureSlot { + drive_bay_number: number; descriptor: string; - status: string; // TODO: Enum? + status: string; dev: string; supports_identify_light: boolean; size: number; model: string; serial: string; - type: string; // TODO: Enum HDD, + type: DiskType; rotationrate: number; pool_info: EnclosureSlotPoolInfo | null; } @@ -82,7 +82,7 @@ export interface EnclosureVdev { export interface EnclosureSlotPoolInfo { pool_name: string; - disk_status: string; // TODO: Enum: ONLINE, + disk_status: EnclosureDiskStatus; disk_read_errors: number; disk_write_errors: number; disk_checksum_errors: number; @@ -92,5 +92,5 @@ export interface EnclosureSlotPoolInfo { } export type DashboardEnclosureElements = Overwrite; + [EnclosureElementType.ArrayDeviceSlot]: Record; }>; diff --git a/src/app/pages/dashboard-old/components/widget-pool/widget-pool.component.ts b/src/app/pages/dashboard-old/components/widget-pool/widget-pool.component.ts index 8c79f5c8870..99b277de43f 100644 --- a/src/app/pages/dashboard-old/components/widget-pool/widget-pool.component.ts +++ b/src/app/pages/dashboard-old/components/widget-pool/widget-pool.component.ts @@ -241,11 +241,8 @@ export class WidgetPoolComponent extends WidgetComponent implements AfterViewIni if ((!currentName || currentName === 'unknown') && disks.length === 0) { this.currentDiskDetails = null; } else if (currentName && disks.length > 0 && currentName === disks[0].name) { - delete disks[0].enclosure; delete disks[0].name; delete disks[0].devname; - delete disks[0].multipath_name; - delete disks[0].multipath_member; delete disks[0].zfs_guid; this.currentDiskDetails = disks[0]; } diff --git a/src/app/pages/storage/components/dashboard-pool/topology-card/topology-card.component.ts b/src/app/pages/storage/components/dashboard-pool/topology-card/topology-card.component.ts index 796216d853a..a9822b32199 100644 --- a/src/app/pages/storage/components/dashboard-pool/topology-card/topology-card.component.ts +++ b/src/app/pages/storage/components/dashboard-pool/topology-card/topology-card.component.ts @@ -203,6 +203,7 @@ export class TopologyCardComponent implements OnInit, OnChanges { return this.poolState?.status === PoolStatus.Offline; } + // TODO: Unclear why this conversion is needed. dashboardDiskToDisk(dashDisk: StorageDashboardDisk): Disk { const output: EmptyDiskObject | Disk = {}; const keys: string[] = Object.keys(dashDisk); diff --git a/src/app/pages/system/enclosure/components/enclosures/drive-tray/drive-tray.component.scss b/src/app/pages/system/enclosure/components/enclosures/drive-tray/drive-tray.component.scss new file mode 100644 index 00000000000..4a4ec78c408 --- /dev/null +++ b/src/app/pages/system/enclosure/components/enclosures/drive-tray/drive-tray.component.scss @@ -0,0 +1,14 @@ +:host { + cursor: pointer; + + // TODO: Check if colors need to be theme specific + .tray-background { + fill: #2d2d2d; + } + + &:hover { + .tray-background { + fill: #ff3; + } + } +} diff --git a/src/app/pages/system/enclosure/components/enclosures/drive-tray/drive-tray.component.svg b/src/app/pages/system/enclosure/components/enclosures/drive-tray/drive-tray.component.svg index d63a33407af..fea3a7225c9 100644 --- a/src/app/pages/system/enclosure/components/enclosures/drive-tray/drive-tray.component.svg +++ b/src/app/pages/system/enclosure/components/enclosures/drive-tray/drive-tray.component.svg @@ -9,8 +9,6 @@ !this.slot().pool_info); - - // TODO: Try with CSS - readonly highlight = signal(false); } diff --git a/src/app/pages/system/enclosure/components/enclosures/m50-enclosure/m50-enclosure.component.ts b/src/app/pages/system/enclosure/components/enclosures/m50-enclosure/m50-enclosure.component.ts index f4e1a3d6fd5..818fde35b0c 100644 --- a/src/app/pages/system/enclosure/components/enclosures/m50-enclosure/m50-enclosure.component.ts +++ b/src/app/pages/system/enclosure/components/enclosures/m50-enclosure/m50-enclosure.component.ts @@ -2,6 +2,7 @@ import { KeyValue } from '@angular/common'; import { ChangeDetectionStrategy, Component, computed, input, TrackByFunction, } from '@angular/core'; +import { EnclosureElementType } from 'app/enums/enclosure-slot-status.enum'; import { DashboardEnclosure, DashboardEnclosureSlot } from 'app/interfaces/enclosure.interface'; import { EnclosureComponent } from 'app/pages/system/enclosure/interfaces/enclosure-component.interface'; import { EnclosureStore } from 'app/pages/system/enclosure/services/enclosure.store'; @@ -17,7 +18,7 @@ export class M50EnclosureComponent implements EnclosureComponent { readonly trackByNumber: TrackByFunction> = (_, slot) => slot.key; - readonly slots = computed(() => this.enclosure().elements['Array Device Slot']); + readonly slots = computed(() => this.enclosure().elements[EnclosureElementType.ArrayDeviceSlot]); getDriveTrayTransformation(slotNumber: string): string { const number = Number(slotNumber); diff --git a/src/app/pages/system/enclosure/tests/mocks/README b/src/app/pages/system/enclosure/tests/mocks/README new file mode 100644 index 00000000000..4a2987b0b17 --- /dev/null +++ b/src/app/pages/system/enclosure/tests/mocks/README @@ -0,0 +1,3 @@ +For now just mock directly in websocket service. + +TODO: Move to CLI mocking utility. diff --git a/src/app/pages/system/enclosure/tests/mocks/m40.ts b/src/app/pages/system/enclosure/tests/mocks/m40.ts new file mode 100644 index 00000000000..77124f81d6a --- /dev/null +++ b/src/app/pages/system/enclosure/tests/mocks/m40.ts @@ -0,0 +1,483 @@ +import { DiskType } from 'app/enums/disk-type.enum'; +import { EnclosureDiskStatus, EnclosureElementType, EnclosureStatus } from 'app/enums/enclosure-slot-status.enum'; +import { VdevType } from 'app/enums/v-dev-type.enum'; +import { DashboardEnclosure } from 'app/interfaces/enclosure.interface'; + +export const m40dashboardEnclosure: DashboardEnclosure[] = [ + { + name: 'iX 4024Sp c205', + model: 'M40', + controller: true, + dmi: 'TRUENAS-M40-HA', + status: [EnclosureStatus.Ok], + id: '5b0bd6d1a30714bf', + vendor: 'iX', + product: '4024Sp', + revision: 'c205', + bsg: '/dev/bsg/0:0:23:0', + sg: '/dev/sg25', + pci: '0:0:23:0', + rackmount: true, + top_loaded: false, + front_slots: 24, + rear_slots: 0, + internal_slots: 0, + elements: { + [EnclosureElementType.ArrayDeviceSlot]: { + 1: { + descriptor: 'slot00', + status: 'OK', + dev: 'sdb', + supports_identify_light: true, + drive_bay_number: 1, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8HG7RJKH', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: null, + }, + 2: { + descriptor: 'slot01', + status: 'OK', + dev: 'sda', + supports_identify_light: true, + drive_bay_number: 2, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8HG7MLTH', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: null, + }, + 3: { + descriptor: 'slot02', + status: 'OK', + dev: 'sdc', + supports_identify_light: true, + drive_bay_number: 3, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8HG2GZ5H', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: null, + }, + 4: { + descriptor: 'slot03', + status: 'OK', + dev: 'sdd', + supports_identify_light: true, + drive_bay_number: 4, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8HG321ZH', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: null, + }, + 5: { + descriptor: 'slot04', + status: 'OK', + dev: 'sde', + supports_identify_light: true, + drive_bay_number: 5, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8HG4TS7H', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: null, + }, + 6: { + descriptor: 'slot05', + status: 'OK', + dev: 'sdg', + supports_identify_light: true, + drive_bay_number: 6, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8HG5ZRMH', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: null, + }, + 7: { + descriptor: 'slot06', + status: 'OK', + dev: 'sdn', + supports_identify_light: true, + drive_bay_number: 7, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8HG29G5H', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: null, + }, + 8: { + descriptor: 'slot07', + status: 'OK', + dev: 'sdf', + supports_identify_light: true, + drive_bay_number: 8, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8HG3USZH', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: null, + }, + 9: { + descriptor: 'slot08', + status: 'OK', + dev: 'sdh', + supports_identify_light: true, + drive_bay_number: 9, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8HG5372H', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: null, + }, + 10: { + descriptor: 'slot09', + status: 'OK', + dev: 'sdl', + supports_identify_light: true, + drive_bay_number: 10, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8HG77D9H', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: null, + }, + 11: { + descriptor: 'slot10', + status: 'OK', + dev: 'sdj', + supports_identify_light: true, + drive_bay_number: 11, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8HG7MZJH', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: { + pool_name: 'pewl', + disk_status: EnclosureDiskStatus.Online, + disk_read_errors: 0, + disk_write_errors: 0, + disk_checksum_errors: 0, + vdev_name: 'stripe', + vdev_type: VdevType.Data, + vdev_disks: [ + { + enclosure_id: '5b0bd6d1a30714bf', + slot: 11, + dev: 'sdj', + }, + ], + }, + }, + 12: { + descriptor: 'slot11', + status: 'OK', + dev: 'sdo', + supports_identify_light: true, + drive_bay_number: 12, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8HG5RPUH', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: null, + }, + 13: { + descriptor: 'slot12', + status: 'OK', + dev: 'sdp', + supports_identify_light: true, + drive_bay_number: 13, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8HG5326H', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: null, + }, + 14: { + descriptor: 'slot13', + status: 'OK', + dev: 'sdq', + supports_identify_light: true, + drive_bay_number: 14, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8DKXTD5H', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: null, + }, + 15: { + descriptor: 'slot14', + status: 'OK', + dev: 'sdr', + supports_identify_light: true, + drive_bay_number: 15, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8HG7L80H', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: null, + }, + 16: { + descriptor: 'slot15', + status: 'OK', + dev: 'sdt', + supports_identify_light: true, + drive_bay_number: 16, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8HG0994H', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: { + pool_name: 'pewl2', + disk_status: EnclosureDiskStatus.Online, + disk_read_errors: 0, + disk_write_errors: 0, + disk_checksum_errors: 0, + vdev_name: 'stripe', + vdev_type: VdevType.Data, + vdev_disks: [ + { + enclosure_id: '5b0bd6d1a30714bf', + slot: 16, + dev: 'sdt', + }, + ], + }, + }, + 17: { + descriptor: 'slot16', + status: 'OK', + dev: 'sdi', + supports_identify_light: true, + drive_bay_number: 17, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8HG3UT9H', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: { + pool_name: 'pewl2', + disk_status: EnclosureDiskStatus.Online, + disk_read_errors: 0, + disk_write_errors: 0, + disk_checksum_errors: 0, + vdev_name: 'stripe', + vdev_type: VdevType.Spare, + vdev_disks: [ + { + enclosure_id: '5b0bd6d1a30714bf', + slot: 17, + dev: 'sdi', + }, + ], + }, + }, + 18: { + descriptor: 'slot17', + status: 'OK', + dev: 'sdm', + supports_identify_light: true, + drive_bay_number: 18, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8HG7MW3H', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: { + pool_name: 'NAS-128173', + disk_status: EnclosureDiskStatus.Online, + disk_read_errors: 0, + disk_write_errors: 0, + disk_checksum_errors: 0, + vdev_name: 'stripe', + vdev_type: VdevType.Data, + vdev_disks: [ + { + enclosure_id: '5b0bd6d1a30714bf', + slot: 18, + dev: 'sdm', + }, + ], + }, + }, + 19: { + descriptor: 'slot18', + status: 'OK', + dev: 'sdk', + supports_identify_light: true, + drive_bay_number: 19, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8DKA6AMH', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: null, + }, + 20: { + descriptor: 'slot19', + status: 'OK', + dev: 'sds', + supports_identify_light: true, + drive_bay_number: 20, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8HG53AGH', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: { + pool_name: 'nmnmn', + disk_status: EnclosureDiskStatus.Online, + disk_read_errors: 0, + disk_write_errors: 0, + disk_checksum_errors: 0, + vdev_name: 'stripe', + vdev_type: VdevType.Data, + vdev_disks: [ + { + enclosure_id: '5b0bd6d1a30714bf', + slot: 20, + dev: 'sds', + }, + ], + }, + }, + 21: { + descriptor: 'slot20', + status: 'OK', + dev: 'sdu', + supports_identify_light: true, + drive_bay_number: 21, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8DJ61EBH', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: null, + }, + 22: { + descriptor: 'slot21', + status: 'OK', + dev: 'sdv', + supports_identify_light: true, + drive_bay_number: 22, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8HG647SH', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: { + pool_name: 'encrypted', + disk_status: EnclosureDiskStatus.Online, + disk_read_errors: 0, + disk_write_errors: 0, + disk_checksum_errors: 0, + vdev_name: 'stripe', + vdev_type: VdevType.Data, + vdev_disks: [ + { + enclosure_id: '5b0bd6d1a30714bf', + slot: 22, + dev: 'sdv', + }, + ], + }, + }, + 23: { + descriptor: 'slot22', + status: 'OK', + dev: 'sdw', + supports_identify_light: true, + drive_bay_number: 23, + size: 12000138625024, + model: 'HUH721212AL4200', + serial: '8HG7NKPH', + type: DiskType.Hdd, + rotationrate: 7200, + pool_info: null, + }, + 24: { + descriptor: 'slot23', + status: 'Not installed', + dev: null, + supports_identify_light: true, + drive_bay_number: 24, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + }, + 'SAS Expander': { + 26: { + descriptor: 'SAS3 Expander', + status: 'OK', + value: null, + value_raw: 16777216, + }, + }, + Enclosure: { + 28: { + descriptor: 'EnclosureElement01', + status: 'OK', + value: null, + value_raw: 16777216, + }, + }, + 'Temperature Sensors': { + 30: { + descriptor: 'Exp Die', + status: 'OK', + value: '67C', + value_raw: 16799488, + }, + 31: { + descriptor: 'Sense BP1', + status: 'OK', + value: '25C', + value_raw: 16788736, + }, + 32: { + descriptor: 'Sense BP2', + status: 'OK', + value: '26C', + value_raw: 16788992, + }, + }, + 'Voltage Sensor': { + 34: { + descriptor: '5V Sensor', + status: 'OK', + value: '5.06V', + value_raw: 16777722, + }, + 35: { + descriptor: '12V Sensor', + status: 'OK', + value: '12.13V', + value_raw: 16778429, + }, + }, + }, + label: 'M Series2', + }, +]; diff --git a/src/app/pages/system/enclosure/tests/mocks/m60-with-12-es102.ts b/src/app/pages/system/enclosure/tests/mocks/m60-with-12-es102.ts new file mode 100644 index 00000000000..234265c11d4 --- /dev/null +++ b/src/app/pages/system/enclosure/tests/mocks/m60-with-12-es102.ts @@ -0,0 +1,2900 @@ +import { GiB } from 'app/constants/bytes.constant'; +import { DiskType } from 'app/enums/disk-type.enum'; +import { EnclosureDiskStatus, EnclosureStatus } from 'app/enums/enclosure-slot-status.enum'; +import { VdevType } from 'app/enums/v-dev-type.enum'; +import { DashboardEnclosure } from 'app/interfaces/enclosure.interface'; + +export const m60With12Es102DashboardEnclosure: DashboardEnclosure[] = [ + { + name: 'iX 4024Ss e001', + model: 'M60', + controller: true, + dmi: 'TRUENAS-M60-HA', + status: [EnclosureStatus.Ok], + id: '5b0bd6d1a309b53f', + vendor: 'iX', + product: '4024Ss', + revision: 'e001', + bsg: '/dev/bsg/17:0:19:0', + sg: '/dev/sg433', + pci: '17:0:19:0', + rackmount: true, + top_loaded: false, + front_slots: 24, + rear_slots: 4, + internal_slots: 0, + elements: { + 'Array Device Slot': { + 1: { + descriptor: 'slot00', + status: 'OK', + dev: 'sdahl', + supports_identify_light: true, + drive_bay_number: 1, + size: 200 * GiB, + model: 'Fudged 200', + serial: 'F-200-1', + type: DiskType.Hdd, + rotationrate: 6000, + pool_info: null, + }, + 2: { + descriptor: 'slot01', + status: 'OK', + dev: 'sdahm', + supports_identify_light: true, + drive_bay_number: 2, + size: 200 * GiB, + model: 'Fudged 200', + serial: 'F-200-1', + type: DiskType.Hdd, + rotationrate: 6000, + pool_info: { + pool_name: 'pewl', + disk_status: EnclosureDiskStatus.Online, + disk_read_errors: 0, + disk_write_errors: 0, + disk_checksum_errors: 0, + vdev_name: 'stripe', + vdev_type: VdevType.Data, + vdev_disks: [ + { + enclosure_id: '5b0bd6d1a30714bf', + slot: 2, + dev: 'sdahm', + }, + ], + }, + }, + 3: { + descriptor: 'slot02', + status: 'OK', + dev: 'sdahn', + supports_identify_light: true, + drive_bay_number: 3, + size: 200 * GiB, + model: 'Fudged 200', + serial: 'F-200-1', + type: DiskType.Hdd, + rotationrate: 6000, + pool_info: null, + }, + 4: { + descriptor: 'slot03', + status: 'OK', + dev: 'sdaho', + supports_identify_light: true, + drive_bay_number: 4, + size: 200 * GiB, + model: 'Fudged 200', + serial: 'F-200-1', + type: DiskType.Hdd, + rotationrate: 6000, + pool_info: null, + }, + 5: { + descriptor: 'slot04', + status: 'OK', + dev: 'sdahp', + supports_identify_light: true, + drive_bay_number: 5, + size: 200 * GiB, + model: 'Fudged 200', + serial: 'F-200-1', + type: DiskType.Hdd, + rotationrate: 6000, + pool_info: null, + }, + 6: { + descriptor: 'slot05', + status: 'OK', + dev: 'sdahq', + supports_identify_light: true, + drive_bay_number: 6, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 7: { + descriptor: 'slot06', + status: 'OK', + dev: 'sdahr', + supports_identify_light: true, + drive_bay_number: 6, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 8: { + descriptor: 'slot07', + status: 'OK', + dev: 'sdahs', + supports_identify_light: true, + drive_bay_number: 7, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 9: { + descriptor: 'slot08', + status: 'OK', + dev: 'sdaht', + supports_identify_light: true, + drive_bay_number: 8, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 10: { + descriptor: 'slot09', + status: 'OK', + dev: 'sdahu', + supports_identify_light: true, + drive_bay_number: 9, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 11: { + descriptor: 'slot10', + status: 'OK', + dev: 'sdahv', + supports_identify_light: true, + drive_bay_number: 10, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 12: { + descriptor: 'slot11', + status: 'OK', + dev: 'sdahw', + supports_identify_light: true, + drive_bay_number: 11, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 13: { + descriptor: 'slot12', + status: 'OK', + dev: 'sdahx', + supports_identify_light: true, + drive_bay_number: 12, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 14: { + descriptor: 'slot13', + status: 'OK', + dev: 'sdahy', + supports_identify_light: true, + drive_bay_number: 13, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 15: { + descriptor: 'slot14', + status: 'OK', + dev: 'sdahz', + supports_identify_light: true, + drive_bay_number: 14, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 16: { + descriptor: 'slot15', + status: 'OK', + dev: 'sdaia', + supports_identify_light: true, + drive_bay_number: 15, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 17: { + descriptor: 'slot16', + status: 'OK', + dev: 'sdaib', + supports_identify_light: true, + drive_bay_number: 16, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 18: { + descriptor: 'slot17', + status: 'OK', + dev: 'sdaic', + supports_identify_light: true, + drive_bay_number: 17, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 19: { + descriptor: 'slot18', + status: 'OK', + dev: 'sdaid', + supports_identify_light: true, + drive_bay_number: 6, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 20: { + descriptor: 'slot19', + status: 'Not installed', + dev: null, + supports_identify_light: true, + drive_bay_number: 18, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 21: { + descriptor: 'slot20', + status: 'Not installed', + dev: null, + supports_identify_light: true, + drive_bay_number: 6, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 22: { + descriptor: 'slot21', + status: 'Not installed', + dev: null, + supports_identify_light: true, + drive_bay_number: 19, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 23: { + descriptor: 'slot22', + status: 'Not installed', + dev: null, + supports_identify_light: true, + drive_bay_number: 20, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 24: { + descriptor: 'slot23', + status: 'Not installed', + dev: null, + supports_identify_light: true, + drive_bay_number: 21, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 25: { + descriptor: 'Disk #1', + status: 'Not installed', + dev: null, + supports_identify_light: false, + drive_bay_number: 22, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 26: { + descriptor: 'Disk #2', + status: 'OK', + dev: 'nvme1n1', + supports_identify_light: false, + drive_bay_number: 23, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 27: { + descriptor: 'Disk #3', + status: 'OK', + dev: 'nvme2n1', + supports_identify_light: false, + drive_bay_number: 24, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 28: { + descriptor: 'Disk #4', + status: 'OK', + dev: 'nvme3n1', + supports_identify_light: false, + drive_bay_number: 25, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + }, + 'SAS Expander': { + 26: { + descriptor: 'SAS3 Expander', + status: 'OK', + value_raw: 16777216, + }, + }, + Enclosure: { + 28: { + descriptor: 'Encl-BpS', + status: 'OK, Swapped', + }, + 29: { + descriptor: 'Encl-PeerP', + status: 'OK', + value_raw: 16777216, + }, + }, + 'Temperature Sensors': { + 31: { + descriptor: 'ExpP-Die', + status: 'OK', + value: '36C', + value_raw: 16791552, + }, + 32: { + descriptor: 'ExpS-Die', + status: 'OK', + value: '35C', + value_raw: 16791296, + }, + 33: { + descriptor: 'Sense BP1', + status: 'OK', + value: '21C', + value_raw: 16787712, + }, + 34: { + descriptor: 'Sense BP2', + status: 'OK', + value: '21C', + value_raw: 16787712, + }, + }, + 'Voltage Sensor': { + 36: { + descriptor: '5V Sensor', + status: 'OK', + value: '5.11V', + value_raw: 16777727, + }, + 37: { + descriptor: '12V Sensor', + status: 'OK', + value: '12.44V', + value_raw: 16778460, + }, + }, + }, + label: 'iX 4024Ss e001', + }, + { + name: 'HGST H4102-J 3010', + model: 'ES102', + controller: false, + dmi: 'TRUENAS-M60-HA', + status: [EnclosureStatus.Info], + id: '5000ccab0510e900', + vendor: 'HGST', + product: 'H4102-J', + revision: '3010', + bsg: '/dev/bsg/19:0:1:0', + sg: '/dev/sg847', + pci: '19:0:1:0', + rackmount: true, + top_loaded: true, + front_slots: 102, + rear_slots: 0, + internal_slots: 0, + elements: { + 'Array Device Slot': { + 1: { + descriptor: 'SLOT 000,3FHXWKGT', + status: 'OK, Swapped', + dev: 'sdala', + supports_identify_light: true, + drive_bay_number: 1, + size: 200 * GiB, + model: 'Fudged 200', + serial: 'F-200-1', + type: DiskType.Hdd, + rotationrate: 6000, + pool_info: null, + }, + 2: { + descriptor: 'SLOT 001,3FJ1RXUT', + status: 'OK, Swapped', + dev: 'sdalb', + supports_identify_light: true, + drive_bay_number: 2, + size: 200 * GiB, + model: 'Fudged 200', + serial: 'F-200-1', + type: DiskType.Hdd, + rotationrate: 6000, + pool_info: { + pool_name: 'secondpool', + disk_status: EnclosureDiskStatus.Online, + disk_read_errors: 0, + disk_write_errors: 0, + disk_checksum_errors: 0, + vdev_name: 'stripe', + vdev_type: VdevType.Data, + vdev_disks: [ + { + enclosure_id: '5b0bd6d1a30714bf', + slot: 2, + dev: 'sds', + }, + ], + }, + }, + 3: { + descriptor: 'SLOT 002,3FH4VJ1T', + status: 'OK, Swapped', + dev: 'sdalc', + supports_identify_light: true, + drive_bay_number: 3, + size: 200 * GiB, + model: 'Fudged 200', + serial: 'F-200-1', + type: DiskType.Hdd, + rotationrate: 6000, + pool_info: null, + }, + 4: { + descriptor: 'SLOT 003,3FH53U2T', + status: 'OK, Swapped', + dev: 'sdald', + supports_identify_light: true, + drive_bay_number: 4, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 5: { + descriptor: 'SLOT 004,3FJ2W7RT', + status: 'OK, Swapped', + dev: 'sdale', + supports_identify_light: true, + drive_bay_number: 5, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 6: { + descriptor: 'SLOT 005,3FJ2W5HT', + status: 'OK, Swapped', + dev: 'sdalf', + supports_identify_light: true, + drive_bay_number: 6, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 7: { + descriptor: 'SLOT 006,3FJ2KLZT', + status: 'OK, Swapped', + dev: 'sdalg', + supports_identify_light: true, + drive_bay_number: 7, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 8: { + descriptor: 'SLOT 007,3FJ2JA8T', + status: 'OK, Swapped', + dev: 'sdalh', + supports_identify_light: true, + drive_bay_number: 8, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 9: { + descriptor: 'SLOT 008,3FJ2NYUT', + status: 'OK, Swapped', + dev: 'sdali', + supports_identify_light: true, + drive_bay_number: 9, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 10: { + descriptor: 'SLOT 009,3FJ2WDPT', + status: 'OK, Swapped', + dev: 'sdalj', + supports_identify_light: true, + drive_bay_number: 10, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 11: { + descriptor: 'SLOT 010,3FH4V0MT', + status: 'OK, Swapped', + dev: 'sdalk', + supports_identify_light: true, + drive_bay_number: 11, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 12: { + descriptor: 'SLOT 011,3FJ16U9T', + status: 'OK, Swapped', + dev: 'sdall', + supports_identify_light: true, + drive_bay_number: 12, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 13: { + descriptor: 'SLOT 012,3FJ29ULT', + status: 'OK, Swapped', + dev: 'sdalm', + supports_identify_light: true, + drive_bay_number: 13, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 14: { + descriptor: 'SLOT 013,3FJ2W47T', + status: 'OK, Swapped', + dev: 'sdaln', + supports_identify_light: true, + drive_bay_number: 14, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 15: { + descriptor: 'SLOT 014,3FJ2JE6T', + status: 'OK, Swapped', + dev: 'sdalo', + supports_identify_light: true, + drive_bay_number: 15, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 16: { + descriptor: 'SLOT 015,3FGK1PWT', + status: 'OK, Swapped', + dev: 'sdalp', + supports_identify_light: true, + drive_bay_number: 16, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 17: { + descriptor: 'SLOT 016,3FJ2P5ZT', + status: 'OK, Swapped', + dev: 'sdalq', + supports_identify_light: true, + drive_bay_number: 17, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 18: { + descriptor: 'SLOT 017,3FJ30GNT', + status: 'OK, Swapped', + dev: 'sdalr', + supports_identify_light: true, + drive_bay_number: 18, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 19: { + descriptor: 'SLOT 018,3FJ1S6XT', + status: 'OK, Swapped', + dev: 'sdals', + supports_identify_light: true, + drive_bay_number: 19, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 20: { + descriptor: 'SLOT 019,3FH4EE4T', + status: 'OK, Swapped', + dev: 'sdalt', + supports_identify_light: true, + drive_bay_number: 20, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 21: { + descriptor: 'SLOT 020,3FH4VK7T', + status: 'OK, Swapped', + dev: 'sdalu', + supports_identify_light: true, + drive_bay_number: 21, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 22: { + descriptor: 'SLOT 021,3FJ2A42T', + status: 'OK, Swapped', + dev: 'sdalv', + supports_identify_light: true, + drive_bay_number: 22, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 23: { + descriptor: 'SLOT 022,3FJ2KSLT', + status: 'OK, Swapped', + dev: 'sdalw', + supports_identify_light: true, + drive_bay_number: 23, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 24: { + descriptor: 'SLOT 023,3FJ10EAT', + status: 'OK, Swapped', + dev: 'sdalx', + supports_identify_light: true, + drive_bay_number: 24, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 25: { + descriptor: 'SLOT 024,3FJ2WEYT', + status: 'OK, Swapped', + dev: 'sdaly', + supports_identify_light: true, + drive_bay_number: 25, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 26: { + descriptor: 'SLOT 025,3FJ2JDJT', + status: 'OK, Swapped', + dev: 'sdalz', + supports_identify_light: true, + drive_bay_number: 26, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 27: { + descriptor: 'SLOT 026,3FJ17R4T', + status: 'OK, Swapped', + dev: 'sdama', + supports_identify_light: true, + drive_bay_number: 27, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 28: { + descriptor: 'SLOT 027,3FJ2MSST', + status: 'OK, Swapped', + dev: 'sdamb', + supports_identify_light: true, + drive_bay_number: 28, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 29: { + descriptor: 'SLOT 028,3FJ2JE9T', + status: 'OK, Swapped', + dev: 'sdamc', + supports_identify_light: true, + drive_bay_number: 29, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 30: { + descriptor: 'SLOT 029,3FJ2G3ST', + status: 'OK, Swapped', + dev: 'sdamd', + supports_identify_light: true, + drive_bay_number: 30, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 31: { + descriptor: 'SLOT 030,3FJ1S27T', + status: 'OK, Swapped', + dev: 'sdamf', + supports_identify_light: true, + drive_bay_number: 31, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 32: { + descriptor: 'SLOT 031,3FH53SHT', + status: 'OK, Swapped', + dev: 'sdame', + supports_identify_light: true, + drive_bay_number: 32, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 33: { + descriptor: 'SLOT 032,3FH4VJJT', + status: 'OK, Swapped', + dev: 'sdamg', + supports_identify_light: true, + drive_bay_number: 33, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 34: { + descriptor: 'SLOT 033,3FH4EE9T', + status: 'OK, Swapped', + dev: 'sdamh', + supports_identify_light: true, + drive_bay_number: 34, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 35: { + descriptor: 'SLOT 034,3FH4EH1T', + status: 'OK, Swapped', + dev: 'sdami', + supports_identify_light: true, + drive_bay_number: 35, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 36: { + descriptor: 'SLOT 035,3FJ08N8T', + status: 'OK, Swapped', + dev: 'sdamj', + supports_identify_light: true, + drive_bay_number: 36, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 37: { + descriptor: 'SLOT 036,3FH4UZ4T', + status: 'OK, Swapped', + dev: 'sdamk', + supports_identify_light: true, + drive_bay_number: 37, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 38: { + descriptor: 'SLOT 037,3FJ2NYRT', + status: 'OK, Swapped', + dev: 'sdaml', + supports_identify_light: true, + drive_bay_number: 38, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 39: { + descriptor: 'SLOT 038,3FJ2AYUT', + status: 'OK, Swapped', + dev: 'sdamn', + supports_identify_light: true, + drive_bay_number: 39, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 40: { + descriptor: 'SLOT 039,3FJ155DT', + status: 'OK, Swapped', + dev: 'sdamm', + supports_identify_light: true, + drive_bay_number: 40, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 41: { + descriptor: 'SLOT 040,3FJ05WGT', + status: 'OK, Swapped', + dev: 'sdamo', + supports_identify_light: true, + drive_bay_number: 41, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 42: { + descriptor: 'SLOT 041,3FJ1U1KT', + status: 'OK, Swapped', + dev: 'sdamp', + supports_identify_light: true, + drive_bay_number: 42, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 43: { + descriptor: 'SLOT 042,3FH53RUT', + status: 'OK, Swapped', + dev: 'sdabm', + supports_identify_light: true, + drive_bay_number: 43, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 44: { + descriptor: 'SLOT 043,3FGMSP1T', + status: 'OK, Swapped', + dev: 'sdamq', + supports_identify_light: true, + drive_bay_number: 44, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 45: { + descriptor: 'SLOT 044,3FJ33PWT', + status: 'OK, Swapped', + dev: 'sdabn', + supports_identify_light: true, + drive_bay_number: 45, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 46: { + descriptor: 'SLOT 045,3FJ17XHT', + status: 'OK, Swapped', + dev: 'sdamr', + supports_identify_light: true, + drive_bay_number: 46, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 47: { + descriptor: 'SLOT 046,3FJ2W9DT', + status: 'OK, Swapped', + dev: 'sdams', + supports_identify_light: true, + drive_bay_number: 47, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 48: { + descriptor: 'SLOT 047,3FJ0DLWT', + status: 'OK, Swapped', + dev: 'sdamt', + supports_identify_light: true, + drive_bay_number: 48, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 49: { + descriptor: 'SLOT 048,3FHZKWMT', + status: 'OK, Swapped', + dev: 'sdamu', + supports_identify_light: true, + drive_bay_number: 49, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 50: { + descriptor: 'SLOT 049,3FJ0ELAT', + status: 'OK, Swapped', + dev: 'sdamv', + supports_identify_light: true, + drive_bay_number: 50, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 51: { + descriptor: 'SLOT 050,3FJ17XMT', + status: 'OK, Swapped', + dev: 'sdamx', + supports_identify_light: true, + drive_bay_number: 51, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 52: { + descriptor: 'SLOT 051,3FH4UYNT', + status: 'OK, Swapped', + dev: 'sdamw', + supports_identify_light: true, + drive_bay_number: 52, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 53: { + descriptor: 'SLOT 052,3FJ2JDWT', + status: 'OK, Swapped', + dev: 'sdamy', + supports_identify_light: true, + drive_bay_number: 53, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 54: { + descriptor: 'SLOT 053,3FJ1S5DT', + status: 'OK, Swapped', + dev: 'sdabq', + supports_identify_light: true, + drive_bay_number: 54, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 55: { + descriptor: 'SLOT 054,3FJ33PXT', + status: 'OK, Swapped', + dev: 'sdabr', + supports_identify_light: true, + drive_bay_number: 55, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 56: { + descriptor: 'SLOT 055,3FJ2W4JT', + status: 'OK, Swapped', + dev: 'sdabt', + supports_identify_light: true, + drive_bay_number: 56, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 57: { + descriptor: 'SLOT 056,3FH53RDT', + status: 'OK, Swapped', + dev: 'sdabv', + supports_identify_light: true, + drive_bay_number: 57, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 58: { + descriptor: 'SLOT 057,3FJ2WBHT', + status: 'OK, Swapped', + dev: 'sdabw', + supports_identify_light: true, + drive_bay_number: 58, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 59: { + descriptor: 'SLOT 058,3FJ0EVYT', + status: 'OK, Swapped', + dev: 'sdabx', + supports_identify_light: true, + drive_bay_number: 59, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 60: { + descriptor: 'SLOT 059,3FJ1S6UT', + status: 'OK, Swapped', + dev: 'sdaby', + supports_identify_light: true, + drive_bay_number: 60, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 61: { + descriptor: 'SLOT 060,3FJ2JGET', + status: 'OK, Swapped', + dev: 'sdacb', + supports_identify_light: true, + drive_bay_number: 61, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 62: { + descriptor: 'SLOT 061,3FJ1NJZT', + status: 'OK, Swapped', + dev: 'sdacc', + supports_identify_light: true, + drive_bay_number: 62, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 63: { + descriptor: 'SLOT 062,3FJ33RLT', + status: 'OK, Swapped', + dev: 'sdace', + supports_identify_light: true, + drive_bay_number: 63, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 64: { + descriptor: 'SLOT 063,3FJ2KRJT', + status: 'OK, Swapped', + dev: 'sdacf', + supports_identify_light: true, + drive_bay_number: 64, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 65: { + descriptor: 'SLOT 064,3FH53TYT', + status: 'OK, Swapped', + dev: 'sdach', + supports_identify_light: true, + drive_bay_number: 65, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 66: { + descriptor: 'SLOT 065,3FJ16V1T', + status: 'OK, Swapped', + dev: 'sdaci', + supports_identify_light: true, + drive_bay_number: 66, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 67: { + descriptor: 'SLOT 066,3FJ2LPWT', + status: 'OK, Swapped', + dev: 'sdack', + supports_identify_light: true, + drive_bay_number: 67, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 68: { + descriptor: 'SLOT 067,3FJ2WAST', + status: 'OK, Swapped', + dev: 'sdacl', + supports_identify_light: true, + drive_bay_number: 68, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 69: { + descriptor: 'SLOT 068,3FJ2G60T', + status: 'OK, Swapped', + dev: 'sdacm', + supports_identify_light: true, + drive_bay_number: 69, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 70: { + descriptor: 'SLOT 069,3FJ142TT', + status: 'OK, Swapped', + dev: 'sdaco', + supports_identify_light: true, + drive_bay_number: 70, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 71: { + descriptor: 'SLOT 070,3FJ26L0T', + status: 'OK, Swapped', + dev: 'sdacp', + supports_identify_light: true, + drive_bay_number: 71, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 72: { + descriptor: 'SLOT 071,3FJ189AT', + status: 'OK, Swapped', + dev: 'sdacr', + supports_identify_light: true, + drive_bay_number: 72, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 73: { + descriptor: 'SLOT 072,3FH4V4JT', + status: 'OK, Swapped', + dev: 'sdact', + supports_identify_light: true, + drive_bay_number: 73, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 74: { + descriptor: 'SLOT 073,3FJ2Z7RT', + status: 'OK, Swapped', + dev: 'sdacv', + supports_identify_light: true, + drive_bay_number: 74, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 75: { + descriptor: 'SLOT 074,3FJ16JTT', + status: 'OK, Swapped', + dev: 'sdacw', + supports_identify_light: true, + drive_bay_number: 75, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 76: { + descriptor: 'SLOT 075,3FJ1SM3T', + status: 'OK, Swapped', + dev: 'sdacx', + supports_identify_light: true, + drive_bay_number: 76, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 77: { + descriptor: 'SLOT 076,3FH53RYT', + status: 'OK, Swapped', + dev: 'sdacz', + supports_identify_light: true, + drive_bay_number: 77, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 78: { + descriptor: 'SLOT 077,3FJ2J89T', + status: 'OK, Swapped', + dev: 'sdadb', + supports_identify_light: true, + drive_bay_number: 78, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 79: { + descriptor: 'SLOT 078,3FJ28D8T', + status: 'OK, Swapped', + dev: 'sdadd', + supports_identify_light: true, + drive_bay_number: 79, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 80: { + descriptor: 'SLOT 079,3FJ1RX8T', + status: 'OK, Swapped', + dev: 'sdadf', + supports_identify_light: true, + drive_bay_number: 80, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 81: { + descriptor: 'SLOT 080,3FH4UXXT', + status: 'OK, Swapped', + dev: 'sdadg', + supports_identify_light: true, + drive_bay_number: 81, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 82: { + descriptor: 'SLOT 081,3FH4V1ZT', + status: 'OK, Swapped', + dev: 'sdadi', + supports_identify_light: true, + drive_bay_number: 82, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 83: { + descriptor: 'SLOT 082,3FH3Z4UT', + status: 'OK, Swapped', + dev: 'sdadk', + supports_identify_light: true, + drive_bay_number: 83, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 84: { + descriptor: 'SLOT 083,3FJ2LNNT', + status: 'OK, Swapped', + dev: 'sdadl', + supports_identify_light: true, + drive_bay_number: 84, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 85: { + descriptor: 'SLOT 084,3FJ1S70T', + status: 'OK, Swapped', + dev: 'sdadn', + supports_identify_light: true, + drive_bay_number: 85, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 86: { + descriptor: 'SLOT 085,3FH4UZWT', + status: 'OK, Swapped', + dev: 'sdadp', + supports_identify_light: true, + drive_bay_number: 86, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 87: { + descriptor: 'SLOT 086,3FJ3J33T', + status: 'OK, Swapped', + dev: 'sdadq', + supports_identify_light: true, + drive_bay_number: 87, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 88: { + descriptor: 'SLOT 087,3FJ0PVST', + status: 'OK, Swapped', + dev: 'sdadr', + supports_identify_light: true, + drive_bay_number: 88, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 89: { + descriptor: 'SLOT 088,3FJ1S3MT', + status: 'OK, Swapped', + dev: 'sdadt', + supports_identify_light: true, + drive_bay_number: 89, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 90: { + descriptor: 'SLOT 089,3FJ2WB9T', + status: 'OK, Swapped', + dev: 'sdadv', + supports_identify_light: true, + drive_bay_number: 90, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 91: { + descriptor: 'SLOT 090,3FJ2J6ZT', + status: 'OK, Swapped', + dev: 'sdady', + supports_identify_light: true, + drive_bay_number: 91, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 92: { + descriptor: 'SLOT 091,3FJ1U1HT', + status: 'OK, Swapped', + dev: 'sdadz', + supports_identify_light: true, + drive_bay_number: 92, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 93: { + descriptor: 'SLOT 092,3FJ2G5HT', + status: 'OK, Swapped', + dev: 'sdaeb', + supports_identify_light: true, + drive_bay_number: 93, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 94: { + descriptor: 'SLOT 093,3FG3RDMV', + status: 'OK, Swapped', + dev: 'sdaed', + supports_identify_light: true, + drive_bay_number: 94, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 95: { + descriptor: 'SLOT 094,3FJ2W9NT', + status: 'OK, Swapped', + dev: 'sdaee', + supports_identify_light: true, + drive_bay_number: 95, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 96: { + descriptor: 'SLOT 095,3FJ19BKT', + status: 'OK, Swapped', + dev: 'sdaei', + supports_identify_light: true, + drive_bay_number: 96, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 97: { + descriptor: 'SLOT 096,3FG3RHNV', + status: 'OK, Swapped', + dev: 'sdaej', + supports_identify_light: true, + drive_bay_number: 97, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 98: { + descriptor: 'SLOT 097,3FJ2W2ET', + status: 'OK, Swapped', + dev: 'sdaek', + supports_identify_light: true, + drive_bay_number: 98, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 99: { + descriptor: 'SLOT 098,3FH4V0UT', + status: 'OK, Swapped', + dev: 'sdael', + supports_identify_light: true, + drive_bay_number: 99, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 100: { + descriptor: 'SLOT 099,3FJ1418T', + status: 'OK, Swapped', + dev: 'sdaen', + supports_identify_light: true, + drive_bay_number: 100, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 101: { + descriptor: 'SLOT 100,3FJ1M7BT', + status: 'OK, Swapped', + dev: 'sdaep', + supports_identify_light: true, + drive_bay_number: 101, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + 102: { + descriptor: 'SLOT 101,3FJ2NYZT', + status: 'OK, Swapped', + dev: 'sdaer', + supports_identify_light: true, + drive_bay_number: 102, + size: null, + model: null, + serial: null, + type: null, + rotationrate: null, + pool_info: null, + }, + }, + Enclosure: { + 104: { + descriptor: 'ENCLOSURE,1ES1846-A3,THCCT03721EA0261,1EB1173-A1,THCCT03621EJ17FA', + status: 'OK', + value_raw: 16777216, + }, + }, + 'Power Supply': { + 106: { + descriptor: 'POWER SUPPLY A,CSU1800AP-3-10,N8681X009RAKZ,,Artesyn,1800W', + status: 'OK', + value: 'Hot swap, RQST on', + value_raw: 16777376, + }, + 107: { + descriptor: 'POWER SUPPLY B,CSU1800AP-3-10,N8681X00EFAKZ,,Artesyn,1800W', + status: 'OK', + value: 'Hot swap, RQST on', + value_raw: 16777376, + }, + }, + Cooling: { + 109: { + descriptor: 'FAN ENCL 1', + status: 'OK', + value: '3420 RPM', + value_raw: 16864930, + }, + 110: { + descriptor: 'FAN ENCL 2', + status: 'OK', + value: '3340 RPM', + value_raw: 16862882, + }, + 111: { + descriptor: 'FAN ENCL 3', + status: 'OK', + value: '3430 RPM', + value_raw: 16865186, + }, + 112: { + descriptor: 'FAN ENCL 4', + status: 'OK', + value: '3440 RPM', + value_raw: 16865442, + }, + 113: { + descriptor: 'FAN IOM 1', + status: 'OK', + value: '20470 RPM', + value_raw: 17301415, + }, + 114: { + descriptor: 'FAN IOM 2', + status: 'OK', + value: '20470 RPM', + value_raw: 17301415, + }, + 115: { + descriptor: 'FAN PSU A', + status: 'OK', + value: '20470 RPM', + value_raw: 17301415, + }, + 116: { + descriptor: 'FAN PSU B', + status: 'OK', + value: '20470 RPM', + value_raw: 17301415, + }, + }, + 'Temperature Sensors': { + 118: { + descriptor: 'TEMP SLOT 000', + status: 'OK, Swapped', + value: '26C', + value_raw: 285224448, + }, + 119: { + descriptor: 'TEMP SLOT 001', + status: 'OK, Swapped', + value: '26C', + value_raw: 285224448, + }, + 120: { + descriptor: 'TEMP SLOT 002', + status: 'OK, Swapped', + value: '26C', + value_raw: 285224448, + }, + 121: { + descriptor: 'TEMP SLOT 003', + status: 'OK, Swapped', + value: '26C', + value_raw: 285224448, + }, + 122: { + descriptor: 'TEMP SLOT 004', + status: 'OK, Swapped', + value: '26C', + value_raw: 285224448, + }, + 123: { + descriptor: 'TEMP SLOT 005', + status: 'OK, Swapped', + value: '26C', + value_raw: 285224448, + }, + 124: { + descriptor: 'TEMP SLOT 006', + status: 'OK, Swapped', + value: '26C', + value_raw: 285224448, + }, + 125: { + descriptor: 'TEMP SLOT 007', + status: 'OK, Swapped', + value: '26C', + value_raw: 285224448, + }, + 126: { + descriptor: 'TEMP SLOT 008', + status: 'OK, Swapped', + value: '27C', + value_raw: 285224704, + }, + 127: { + descriptor: 'TEMP SLOT 009', + status: 'OK, Swapped', + value: '27C', + value_raw: 285224704, + }, + 128: { + descriptor: 'TEMP SLOT 010', + status: 'OK, Swapped', + value: '27C', + value_raw: 285224704, + }, + 129: { + descriptor: 'TEMP SLOT 011', + status: 'OK, Swapped', + value: '27C', + value_raw: 285224704, + }, + 130: { + descriptor: 'TEMP SLOT 012', + status: 'OK, Swapped', + value: '27C', + value_raw: 285224704, + }, + 131: { + descriptor: 'TEMP SLOT 013', + status: 'OK, Swapped', + value: '27C', + value_raw: 285224704, + }, + 132: { + descriptor: 'TEMP SLOT 014', + status: 'OK, Swapped', + value: '30C', + value_raw: 285225472, + }, + 133: { + descriptor: 'TEMP SLOT 015', + status: 'OK, Swapped', + value: '32C', + value_raw: 285225984, + }, + 134: { + descriptor: 'TEMP SLOT 016', + status: 'OK, Swapped', + value: '32C', + value_raw: 285225984, + }, + 135: { + descriptor: 'TEMP SLOT 017', + status: 'OK, Swapped', + value: '32C', + value_raw: 285225984, + }, + 136: { + descriptor: 'TEMP SLOT 018', + status: 'OK, Swapped', + value: '32C', + value_raw: 285225984, + }, + 137: { + descriptor: 'TEMP SLOT 019', + status: 'OK, Swapped', + value: '32C', + value_raw: 285225984, + }, + 138: { + descriptor: 'TEMP SLOT 020', + status: 'OK, Swapped', + value: '32C', + value_raw: 285225984, + }, + 139: { + descriptor: 'TEMP SLOT 021', + status: 'OK, Swapped', + value: '32C', + value_raw: 285225984, + }, + 140: { + descriptor: 'TEMP SLOT 022', + status: 'OK, Swapped', + value: '32C', + value_raw: 285225984, + }, + 141: { + descriptor: 'TEMP SLOT 023', + status: 'OK, Swapped', + value: '33C', + value_raw: 285226240, + }, + 142: { + descriptor: 'TEMP SLOT 024', + status: 'OK, Swapped', + value: '33C', + value_raw: 285226240, + }, + 143: { + descriptor: 'TEMP SLOT 025', + status: 'OK, Swapped', + value: '33C', + value_raw: 285226240, + }, + 144: { + descriptor: 'TEMP SLOT 026', + status: 'OK, Swapped', + value: '33C', + value_raw: 285226240, + }, + 145: { + descriptor: 'TEMP SLOT 027', + status: 'OK, Swapped', + value: '32C', + value_raw: 285225984, + }, + 146: { + descriptor: 'TEMP SLOT 028', + status: 'OK, Swapped', + value: '34C', + value_raw: 285226496, + }, + 147: { + descriptor: 'TEMP SLOT 029', + status: 'OK, Swapped', + value: '36C', + value_raw: 285227008, + }, + 148: { + descriptor: 'TEMP SLOT 030', + status: 'OK, Swapped', + value: '37C', + value_raw: 285227264, + }, + 149: { + descriptor: 'TEMP SLOT 031', + status: 'OK, Swapped', + value: '37C', + value_raw: 285227264, + }, + 150: { + descriptor: 'TEMP SLOT 032', + status: 'OK, Swapped', + value: '37C', + value_raw: 285227264, + }, + 151: { + descriptor: 'TEMP SLOT 033', + status: 'OK, Swapped', + value: '37C', + value_raw: 285227264, + }, + 152: { + descriptor: 'TEMP SLOT 034', + status: 'OK, Swapped', + value: '36C', + value_raw: 285227008, + }, + 153: { + descriptor: 'TEMP SLOT 035', + status: 'OK, Swapped', + value: '36C', + value_raw: 285227008, + }, + 154: { + descriptor: 'TEMP SLOT 036', + status: 'OK, Swapped', + value: '38C', + value_raw: 285227520, + }, + 155: { + descriptor: 'TEMP SLOT 037', + status: 'OK, Swapped', + value: '39C', + value_raw: 285227776, + }, + 156: { + descriptor: 'TEMP SLOT 038', + status: 'OK, Swapped', + value: '38C', + value_raw: 285227520, + }, + 157: { + descriptor: 'TEMP SLOT 039', + status: 'OK, Swapped', + value: '38C', + value_raw: 285227520, + }, + 158: { + descriptor: 'TEMP SLOT 040', + status: 'OK, Swapped', + value: '38C', + value_raw: 285227520, + }, + 159: { + descriptor: 'TEMP SLOT 041', + status: 'OK, Swapped', + value: '36C', + value_raw: 285227008, + }, + 160: { + descriptor: 'TEMP SLOT 042', + status: 'OK, Swapped', + value: '36C', + value_raw: 285227008, + }, + 161: { + descriptor: 'TEMP SLOT 043', + status: 'OK, Swapped', + value: '39C', + value_raw: 285227776, + }, + 162: { + descriptor: 'TEMP SLOT 044', + status: 'OK, Swapped', + value: '41C', + value_raw: 285228288, + }, + 163: { + descriptor: 'TEMP SLOT 045', + status: 'OK, Swapped', + value: '42C', + value_raw: 285228544, + }, + 164: { + descriptor: 'TEMP SLOT 046', + status: 'OK, Swapped', + value: '42C', + value_raw: 285228544, + }, + 165: { + descriptor: 'TEMP SLOT 047', + status: 'OK, Swapped', + value: '40C', + value_raw: 285228032, + }, + 166: { + descriptor: 'TEMP SLOT 048', + status: 'OK, Swapped', + value: '40C', + value_raw: 285228032, + }, + 167: { + descriptor: 'TEMP SLOT 049', + status: 'OK, Swapped', + value: '43C', + value_raw: 285228800, + }, + 168: { + descriptor: 'TEMP SLOT 050', + status: 'OK, Swapped', + value: '44C', + value_raw: 285229056, + }, + 169: { + descriptor: 'TEMP SLOT 051', + status: 'OK, Swapped', + value: '43C', + value_raw: 285228800, + }, + 170: { + descriptor: 'TEMP SLOT 052', + status: 'OK, Swapped', + value: '41C', + value_raw: 285228288, + }, + 171: { + descriptor: 'TEMP SLOT 053', + status: 'OK, Swapped', + value: '37C', + value_raw: 285227264, + }, + 172: { + descriptor: 'TEMP SLOT 054', + status: 'OK, Swapped', + value: '39C', + value_raw: 285227776, + }, + 173: { + descriptor: 'TEMP SLOT 055', + status: 'OK, Swapped', + value: '39C', + value_raw: 285227776, + }, + 174: { + descriptor: 'TEMP SLOT 056', + status: 'OK, Swapped', + value: '38C', + value_raw: 285227520, + }, + 175: { + descriptor: 'TEMP SLOT 057', + status: 'OK, Swapped', + value: '38C', + value_raw: 285227520, + }, + 176: { + descriptor: 'TEMP SLOT 058', + status: 'OK, Swapped', + value: '36C', + value_raw: 285227008, + }, + 177: { + descriptor: 'TEMP SLOT 059', + status: 'OK, Swapped', + value: '34C', + value_raw: 285226496, + }, + 178: { + descriptor: 'TEMP SLOT 060', + status: 'OK, Swapped', + value: '33C', + value_raw: 285226240, + }, + 179: { + descriptor: 'TEMP SLOT 061', + status: 'OK, Swapped', + value: '36C', + value_raw: 285227008, + }, + 180: { + descriptor: 'TEMP SLOT 062', + status: 'OK, Swapped', + value: '38C', + value_raw: 285227520, + }, + 181: { + descriptor: 'TEMP SLOT 063', + status: 'OK, Swapped', + value: '39C', + value_raw: 285227776, + }, + 182: { + descriptor: 'TEMP SLOT 064', + status: 'OK, Swapped', + value: '40C', + value_raw: 285228032, + }, + 183: { + descriptor: 'TEMP SLOT 065', + status: 'OK, Swapped', + value: '39C', + value_raw: 285227776, + }, + 184: { + descriptor: 'TEMP SLOT 066', + status: 'OK, Swapped', + value: '42C', + value_raw: 285228544, + }, + 185: { + descriptor: 'TEMP SLOT 067', + status: 'OK, Swapped', + value: '44C', + value_raw: 285229056, + }, + 186: { + descriptor: 'TEMP SLOT 068', + status: 'OK, Swapped', + value: '44C', + value_raw: 285229056, + }, + 187: { + descriptor: 'TEMP SLOT 069', + status: 'OK, Swapped', + value: '44C', + value_raw: 285229056, + }, + 188: { + descriptor: 'TEMP SLOT 070', + status: 'OK, Swapped', + value: '43C', + value_raw: 285228800, + }, + 189: { + descriptor: 'TEMP SLOT 071', + status: 'OK, Swapped', + value: '41C', + value_raw: 285228288, + }, + 190: { + descriptor: 'TEMP SLOT 072', + status: 'OK, Swapped', + value: '40C', + value_raw: 285228032, + }, + 191: { + descriptor: 'TEMP SLOT 073', + status: 'OK, Swapped', + value: '43C', + value_raw: 285228800, + }, + 192: { + descriptor: 'TEMP SLOT 074', + status: 'OK, Swapped', + value: '45C', + value_raw: 285229312, + }, + 193: { + descriptor: 'TEMP SLOT 075', + status: 'OK, Swapped', + value: '45C', + value_raw: 285229312, + }, + 194: { + descriptor: 'TEMP SLOT 076', + status: 'OK, Swapped', + value: '44C', + value_raw: 285229056, + }, + 195: { + descriptor: 'TEMP SLOT 077', + status: 'OK, Swapped', + value: '42C', + value_raw: 285228544, + }, + 196: { + descriptor: 'TEMP SLOT 078', + status: 'OK, Swapped', + value: '44C', + value_raw: 285229056, + }, + 197: { + descriptor: 'TEMP SLOT 079', + status: 'OK, Swapped', + value: '47C', + value_raw: 285229824, + }, + 198: { + descriptor: 'TEMP SLOT 080', + status: 'OK, Swapped', + value: '49C', + value_raw: 285230336, + }, + 199: { + descriptor: 'TEMP SLOT 081', + status: 'OK, Swapped', + value: '49C', + value_raw: 285230336, + }, + 200: { + descriptor: 'TEMP SLOT 082', + status: 'OK, Swapped', + value: '49C', + value_raw: 285230336, + }, + 201: { + descriptor: 'TEMP SLOT 083', + status: 'OK, Swapped', + value: '47C', + value_raw: 285229824, + }, + 202: { + descriptor: 'TEMP SLOT 084', + status: 'OK, Swapped', + value: '45C', + value_raw: 285229312, + }, + 203: { + descriptor: 'TEMP SLOT 085', + status: 'OK, Swapped', + value: '48C', + value_raw: 285230080, + }, + 204: { + descriptor: 'TEMP SLOT 086', + status: 'OK, Swapped', + value: '49C', + value_raw: 285230336, + }, + 205: { + descriptor: 'TEMP SLOT 087', + status: 'OK, Swapped', + value: '49C', + value_raw: 285230336, + }, + 206: { + descriptor: 'TEMP SLOT 088', + status: 'OK, Swapped', + value: '48C', + value_raw: 285230080, + }, + 207: { + descriptor: 'TEMP SLOT 089', + status: 'OK, Swapped', + value: '44C', + value_raw: 285229056, + }, + 208: { + descriptor: 'TEMP SLOT 090', + status: 'OK, Swapped', + value: '43C', + value_raw: 285228800, + }, + 209: { + descriptor: 'TEMP SLOT 091', + status: 'OK, Swapped', + value: '47C', + value_raw: 285229824, + }, + 210: { + descriptor: 'TEMP SLOT 092', + status: 'OK, Swapped', + value: '48C', + value_raw: 285230080, + }, + 211: { + descriptor: 'TEMP SLOT 093', + status: 'OK, Swapped', + value: '49C', + value_raw: 285230336, + }, + 212: { + descriptor: 'TEMP SLOT 094', + status: 'OK, Swapped', + value: '49C', + value_raw: 285230336, + }, + 213: { + descriptor: 'TEMP SLOT 095', + status: 'OK, Swapped', + value: '47C', + value_raw: 285229824, + }, + 214: { + descriptor: 'TEMP SLOT 096', + status: 'OK, Swapped', + value: '45C', + value_raw: 285229312, + }, + 215: { + descriptor: 'TEMP SLOT 097', + status: 'OK, Swapped', + value: '48C', + value_raw: 285230080, + }, + 216: { + descriptor: 'TEMP SLOT 098', + status: 'OK, Swapped', + value: '49C', + value_raw: 285230336, + }, + 217: { + descriptor: 'TEMP SLOT 099', + status: 'OK, Swapped', + value: '48C', + value_raw: 285230080, + }, + 218: { + descriptor: 'TEMP SLOT 100', + status: 'OK, Swapped', + value: '47C', + value_raw: 285229824, + }, + 219: { + descriptor: 'TEMP SLOT 101', + status: 'OK, Swapped', + value: '44C', + value_raw: 285229056, + }, + 220: { + descriptor: 'TEMP IOM A', + status: 'OK', + value: '49C', + value_raw: 16794880, + }, + 221: { + descriptor: 'TEMP IOM B', + status: 'OK', + value: '52C', + value_raw: 16795648, + }, + 222: { + descriptor: 'TEMP BB 60 1', + status: 'OK', + value: '29C', + value_raw: 16789760, + }, + 223: { + descriptor: 'TEMP BB 60 2', + status: 'OK', + value: '30C', + value_raw: 16790016, + }, + 224: { + descriptor: 'TEMP BB 42 1', + status: 'OK', + value: '20C', + value_raw: 16787456, + }, + 225: { + descriptor: 'TEMP BB 42 2', + status: 'OK', + value: '19C', + value_raw: 16787200, + }, + 226: { + descriptor: 'TEMP PRI A DIE', + status: 'OK', + value: '55C', + value_raw: 16796416, + }, + 227: { + descriptor: 'TEMP SEC1 A DIE', + status: 'OK', + value: '79C', + value_raw: 16802560, + }, + 228: { + descriptor: 'TEMP SEC2 A DIE', + status: 'OK', + value: '62C', + value_raw: 16798208, + }, + 229: { + descriptor: 'TEMP PRI A MEM', + status: 'OK', + value: '46C', + value_raw: 16794112, + }, + 230: { + descriptor: 'TEMP SEC1 A MEM', + status: 'OK', + value: '47C', + value_raw: 16794368, + }, + 231: { + descriptor: 'TEMP SEC2 A MEM', + status: 'OK', + value: '40C', + value_raw: 16792576, + }, + 232: { + descriptor: 'TEMP PRI B DIE', + status: 'OK', + value: '57C', + value_raw: 16796928, + }, + 233: { + descriptor: 'TEMP SEC1 B DIE', + status: 'OK', + value: '84C', + value_raw: 16803840, + }, + 234: { + descriptor: 'TEMP SEC2 B DIE', + status: 'OK', + value: '67C', + value_raw: 16799488, + }, + 235: { + descriptor: 'TEMP PRI B MEM', + status: 'OK', + value: '49C', + value_raw: 16794880, + }, + 236: { + descriptor: 'TEMP SEC1 B MEM', + status: 'OK', + value: '52C', + value_raw: 16795648, + }, + 237: { + descriptor: 'TEMP SEC2 B MEM', + status: 'OK', + value: '42C', + value_raw: 16793088, + }, + 238: { + descriptor: 'TEMP IOM A 5V', + status: 'OK', + value: '51C', + value_raw: 16795392, + }, + 239: { + descriptor: 'TEMP IOM B 5V', + status: 'OK', + value: '48C', + value_raw: 16794624, + }, + 240: { + descriptor: 'TEMP PSU A AMB', + status: 'OK', + value: '39C', + value_raw: 16792320, + }, + 241: { + descriptor: 'TEMP PSU A HOT', + status: 'OK', + value: '48C', + value_raw: 16794624, + }, + 242: { + descriptor: 'TEMP PSU A PRI', + status: 'OK', + value: '43C', + value_raw: 16793344, + }, + 243: { + descriptor: 'TEMP PSU B AMB', + status: 'OK', + value: '35C', + value_raw: 16791296, + }, + 244: { + descriptor: 'TEMP PSU B HOT', + status: 'OK', + value: '49C', + value_raw: 16794880, + }, + 245: { + descriptor: 'TEMP PSU B PRI', + status: 'OK', + value: '43C', + value_raw: 16793344, + }, + }, + 'Enclosure Services Controller Electronics': { + 247: { + descriptor: 'ESCE IOMA,1EA0484-C1 ,THCCT03721EG01DC ,5000CCAB0510E93C,,00:0C:CA:07:42:9E,3.1.11', + status: 'OK', + value_raw: 17825920, + }, + 248: { + descriptor: 'ESCE IOMB,1EA0484-C1 ,THCCT03721EG01DD ,5000CCAB0510E97C,,00:0C:CA:07:42:08,3.1.11', + status: 'OK', + value_raw: 17826176, + }, + }, + 'SAS Expander': { + 250: { + descriptor: 'EXP IOMA 0,3010-007,5000CCAB0510E93D', + status: 'OK', + value_raw: 16777216, + }, + 251: { + descriptor: 'EXP IOMA 1,3010-007,5000CCAB0510E93F', + status: 'OK', + value_raw: 16777216, + }, + 252: { + descriptor: 'EXP IOMA 2,3010-007,5000CCAB0510E97F', + status: 'OK', + value_raw: 16777216, + }, + 253: { + descriptor: 'EXP IOMB 0,3010-007,5000CCAB0510E97D', + status: 'OK', + value_raw: 16777216, + }, + 254: { + descriptor: 'EXP IOMB 1,3010-007,5000CCAB0510E979', + status: 'OK', + value_raw: 16777216, + }, + 255: { + descriptor: 'EXP IOMB 2,3010-007,5000CCAB0510E97B', + status: 'OK', + value_raw: 16777216, + }, + }, + 'SAS Connector': { + 257: { + descriptor: 'CONN HOST 00', + status: 'OK', + value: 'Mini SAS HD 4x receptacle (SFF-8644) [max 4 phys]', + value_raw: 17170304, + }, + 258: { + descriptor: 'CONN HOST 01', + status: 'Not installed', + value: 'Mini SAS HD 4x receptacle (SFF-8644) [max 4 phys]', + value_raw: 84279040, + }, + 259: { + descriptor: 'CONN HOST 02', + status: 'Not installed', + value: 'Mini SAS HD 4x receptacle (SFF-8644) [max 4 phys]', + value_raw: 84279040, + }, + 260: { + descriptor: 'CONN HOST 03', + status: 'Not installed', + value: 'Mini SAS HD 4x receptacle (SFF-8644) [max 4 phys]', + value_raw: 84279040, + }, + 261: { + descriptor: 'CONN HOST 04', + status: 'Not installed', + value: 'Mini SAS HD 4x receptacle (SFF-8644) [max 4 phys]', + value_raw: 84279040, + }, + 262: { + descriptor: 'CONN HOST 05', + status: 'Not installed', + value: 'Mini SAS HD 4x receptacle (SFF-8644) [max 4 phys]', + value_raw: 84279040, + }, + 263: { + descriptor: 'CONN HOST 06', + status: 'OK', + value: 'Mini SAS HD 4x receptacle (SFF-8644) [max 4 phys]', + value_raw: 17170304, + }, + 264: { + descriptor: 'CONN HOST 07', + status: 'Not installed', + value: 'Mini SAS HD 4x receptacle (SFF-8644) [max 4 phys]', + value_raw: 84279040, + }, + 265: { + descriptor: 'CONN HOST 08', + status: 'Not installed', + value: 'Mini SAS HD 4x receptacle (SFF-8644) [max 4 phys]', + value_raw: 84279040, + }, + 266: { + descriptor: 'CONN HOST 09', + status: 'Not installed', + value: 'Mini SAS HD 4x receptacle (SFF-8644) [max 4 phys]', + value_raw: 84279040, + }, + 267: { + descriptor: 'CONN HOST 10', + status: 'Not installed', + value: 'Mini SAS HD 4x receptacle (SFF-8644) [max 4 phys]', + value_raw: 84279040, + }, + 268: { + descriptor: 'CONN HOST 11', + status: 'Not installed', + value: 'Mini SAS HD 4x receptacle (SFF-8644) [max 4 phys]', + value_raw: 84279040, + }, + }, + 'Voltage Sensor': { + 270: { + descriptor: 'VOLT PSU A AC', + status: 'OK', + value: '201.0V', + value_raw: 16797316, + }, + 271: { + descriptor: 'VOLT PSU A 12V', + status: 'OK', + value: '12.27V', + value_raw: 16778443, + }, + 272: { + descriptor: 'VOLT PSU B AC', + status: 'OK', + value: '203.0V', + value_raw: 16797516, + }, + 273: { + descriptor: 'VOLT PSU B 12V', + status: 'OK', + value: '12.29V', + value_raw: 16778445, + }, + 274: { + descriptor: 'VOLT IOM A 5V', + status: 'OK', + value: '5.03V', + value_raw: 16777719, + }, + 275: { + descriptor: 'VOLT IOM A 12V', + status: 'OK', + value: '12.0V', + value_raw: 16778416, + }, + 276: { + descriptor: 'VOLT IOM B 5V', + status: 'OK', + value: '5.03V', + value_raw: 16777719, + }, + 277: { + descriptor: 'VOLT IOM B 12V', + status: 'OK', + value: '12.0V', + value_raw: 16778416, + }, + }, + 'Current Sensor': { + 279: { + descriptor: 'CURR PSU A IN', + status: 'OK', + value: '2.27A', + value_raw: 16777443, + }, + 280: { + descriptor: 'CURR PSU A OUT', + status: 'OK', + value: '33.0A', + value_raw: 16780516, + }, + 281: { + descriptor: 'CURR PSU B IN', + status: 'OK', + value: '2.19A', + value_raw: 16777435, + }, + 282: { + descriptor: 'CURR PSU B OUT', + status: 'OK', + value: '32.38A', + value_raw: 16780454, + }, + 283: { + descriptor: 'CURR IOM A 12V', + status: 'OK', + value: '14.49A', + value_raw: 16778665, + }, + 284: { + descriptor: 'CURR IOM A 5V', + status: 'OK', + value: '20.0A', + value_raw: 16779216, + }, + 285: { + descriptor: 'CURR IOM B 12V', + status: 'OK', + value: '14.04A', + value_raw: 16778620, + }, + 286: { + descriptor: 'CURR IOM B 5V', + status: 'OK', + value: '19.5A', + value_raw: 16779166, + }, + }, + 'Door Lock': { + 288: { + descriptor: 'ENCLOSURE COVER', + status: 'OK', + value_raw: 16777216, + }, + }, + }, + label: 'HGST H4102-J 3010', + }, +]; diff --git a/src/app/pages/system/old-view-enclosure/components/enclosure-disks/enclosure-disks.component.html b/src/app/pages/system/old-view-enclosure/components/enclosure-disks/enclosure-disks.component.html index 405c9c0d2ae..a1d0ad78c14 100644 --- a/src/app/pages/system/old-view-enclosure/components/enclosure-disks/enclosure-disks.component.html +++ b/src/app/pages/system/old-view-enclosure/components/enclosure-disks/enclosure-disks.component.html @@ -13,11 +13,7 @@
{{ currentTab.alias }} on - {{ - selectedEnclosure.label === selectedEnclosure.name - ? selectedEnclosure.model - : selectedEnclosure.label - }} + {{ selectedEnclosure.label || selectedEnclosure.name }} ({{ selectedEnclosureNumber }})
diff --git a/src/app/pages/system/old-view-enclosure/components/enclosure-disks/enclosure-disks.component.ts b/src/app/pages/system/old-view-enclosure/components/enclosure-disks/enclosure-disks.component.ts index 31bf0056141..3685b1862fd 100644 --- a/src/app/pages/system/old-view-enclosure/components/enclosure-disks/enclosure-disks.component.ts +++ b/src/app/pages/system/old-view-enclosure/components/enclosure-disks/enclosure-disks.component.ts @@ -1221,9 +1221,8 @@ export class EnclosureDisksComponent implements AfterContentInit, OnDestroy { // Change enclosure name labelForm(): void { const enclosure: EnclosureOld = this.selectedEnclosure; - const currentLabel = enclosure.label !== enclosure.name ? enclosure.label : enclosure.model; const dialogConfig: SetEnclosureLabelDialogData = { - currentLabel, + currentLabel: enclosure.label || enclosure.name, defaultLabel: enclosure.name, enclosureId: enclosure.id, };