Commit d30f6206 authored by Damian Szidiropulosz's avatar Damian Szidiropulosz
Browse files

NAS-123778: Mack utility support for mini x/x+/e+

(cherry picked from commit a76f6ab8)
parent 105e77c5
Showing with 297 additions and 0 deletions
+297 -0
......@@ -24,6 +24,18 @@
"model": "MINI-R",
"systemProduct": "TRUENAS-MINI-R"
},
"MINI-X": {
"model": "MINI-3.0-X",
"systemProduct": "TRUENAS-MINI-3.0-X"
},
"MINI-X+": {
"model": "MINI-3.0-X+",
"systemProduct": "TRUENAS-MINI-3.0-X+"
},
"MINI-E+": {
"model": "MINI-3.0-E+",
"systemProduct": "TRUENAS-MINI-3.0-E+"
},
"MINI-XL+": {
"model": "MINI-3.0-XL+",
"systemProduct": "TRUENAS-MINI-3.0-XL+"
......
import {
Enclosure,
EnclosureElement,
} from 'app/interfaces/enclosure.interface';
import { MockEnclosure } from './mock-enclosure-template';
export class MockMini30Eplus extends MockEnclosure {
readonly totalSlotsFront: number = 6;
readonly totalSlotsRear: number = 0;
readonly totalSlotsInternal: number = 0;
readonly emptySlotTemplate: EnclosureElement = {
slot: 2,
data: {
Descriptor: '',
Status: 'Not installed',
Value: 'None',
Device: '',
},
name: 'Array Device Slot',
descriptor: '',
status: 'Not installed',
value: 'None',
value_raw: '0x5000000',
original: {
enclosure_id: '3000000000000001',
slot: 1,
},
};
readonly slotTemplate: EnclosureElement = {
slot: 1,
data: {
Descriptor: 'Disk #1',
Status: 'OK',
Value: 'None',
Device: 'sdg',
},
name: 'Array Device Slot',
descriptor: 'Disk #1',
status: 'OK',
value: 'None',
value_raw: '0x1000000',
original: {
enclosure_id: '3000000000000001',
slot: 6,
},
};
data = {
id: 'mapped_enclosure_0',
name: 'Drive Bays',
model: 'FREENAS-MINI-3.0-E+',
controller: true,
elements: [
{
name: 'Array Device Slot',
descriptor: 'Drive Slots',
header: [
'Descriptor',
'Status',
'Value',
'Device',
],
elements: [],
has_slot_status: false,
},
],
number: 0,
label: 'Drive Bays',
} as Enclosure;
constructor(number: number) {
super(number);
this.enclosureNumber = number;
this.enclosureInit();
}
processSlotTemplate(template: EnclosureElement): EnclosureElement {
const updatedTemplate = { ...template };
const original = { ...template.original };
if (template.slot > 4) {
original.slot = template.slot - 4;
} else {
original.slot = template.slot;
}
updatedTemplate.original = original;
return updatedTemplate;
}
}
import {
Enclosure,
EnclosureElement,
} from 'app/interfaces/enclosure.interface';
import { MockEnclosure } from './mock-enclosure-template';
export class MockMini30Xplus extends MockEnclosure {
readonly totalSlotsFront: number = 7;
readonly totalSlotsRear: number = 0;
readonly totalSlotsInternal: number = 0;
readonly emptySlotTemplate: EnclosureElement = {
slot: 2,
data: {
Descriptor: '',
Status: 'Not installed',
Value: 'None',
Device: '',
},
name: 'Array Device Slot',
descriptor: '',
status: 'Not installed',
value: 'None',
value_raw: '0x5000000',
original: {
enclosure_id: '3000000000000001',
slot: 1,
},
};
readonly slotTemplate: EnclosureElement = {
slot: 1,
data: {
Descriptor: 'Disk #1',
Status: 'OK',
Value: 'None',
Device: 'sdg',
},
name: 'Array Device Slot',
descriptor: 'Disk #1',
status: 'OK',
value: 'None',
value_raw: '0x1000000',
original: {
enclosure_id: '3000000000000001',
slot: 6,
},
};
data = {
id: 'mapped_enclosure_0',
name: 'Drive Bays',
model: 'FREENAS-MINI-3.0-X+',
controller: true,
elements: [
{
name: 'Array Device Slot',
descriptor: 'Drive Slots',
header: [
'Descriptor',
'Status',
'Value',
'Device',
],
elements: [],
has_slot_status: false,
},
],
number: 0,
label: 'Drive Bays',
} as Enclosure;
constructor(number: number) {
super(number);
this.enclosureNumber = number;
this.enclosureInit();
}
processSlotTemplate(template: EnclosureElement): EnclosureElement {
const updatedTemplate = { ...template };
const original = { ...template.original };
original.slot = template.slot;
updatedTemplate.original = original;
return updatedTemplate;
}
}
import {
Enclosure,
EnclosureElement,
} from 'app/interfaces/enclosure.interface';
import { MockEnclosure } from './mock-enclosure-template';
export class MockMini30X extends MockEnclosure {
readonly totalSlotsFront: number = 7;
readonly totalSlotsRear: number = 0;
readonly totalSlotsInternal: number = 0;
readonly emptySlotTemplate: EnclosureElement = {
slot: 2,
data: {
Descriptor: '',
Status: 'Not installed',
Value: 'None',
Device: '',
},
name: 'Array Device Slot',
descriptor: '',
status: 'Not installed',
value: 'None',
value_raw: '0x5000000',
original: {
enclosure_id: '3000000000000001',
slot: 1,
},
};
readonly slotTemplate: EnclosureElement = {
slot: 1,
data: {
Descriptor: 'Disk #1',
Status: 'OK',
Value: 'None',
Device: 'sdg',
},
name: 'Array Device Slot',
descriptor: 'Disk #1',
status: 'OK',
value: 'None',
value_raw: '0x1000000',
original: {
enclosure_id: '3000000000000002',
slot: 6,
},
};
data = {
id: 'mapped_enclosure_0',
bsg: 'bsg/4:0:0:0',
name: 'Drive Bays',
model: 'FREENAS-MINI-3.0-X',
controller: true,
elements: [
{
name: 'Array Device Slot',
descriptor: 'Drive Slots',
header: [
'Descriptor',
'Status',
'Value',
'Device',
],
elements: [],
has_slot_status: false,
},
],
number: 0,
label: 'Drive Bays',
} as Enclosure;
constructor(number: number) {
super(number);
this.enclosureNumber = number;
this.enclosureInit();
}
processSlotTemplate(template: EnclosureElement): EnclosureElement {
const updatedTemplate = { ...template };
const original = { ...template.original };
if (template.slot === 7) {
original.slot = 4;
original.enclosure_id = '3000000000000002';
} else if (template.slot > 4) {
original.slot = template.slot - 4;
original.enclosure_id = '3000000000000002';
} else {
original.slot = template.slot;
original.enclosure_id = '3000000000000001';
}
updatedTemplate.original = original;
return updatedTemplate;
}
}
......@@ -32,6 +32,9 @@ import { MockF60 } from './enclosure-templates/mock-f60';
import { MockM40 } from './enclosure-templates/mock-m40';
import { MockM50 } from './enclosure-templates/mock-m50';
import { MockM50Rear } from './enclosure-templates/mock-m50-rear';
import { MockMini30Eplus } from './enclosure-templates/mock-mini-3.0-e+';
import { MockMini30X } from './enclosure-templates/mock-mini-3.0-x';
import { MockMini30Xplus } from './enclosure-templates/mock-mini-3.0-x+';
import { MockMini30Xl } from './enclosure-templates/mock-mini-3.0-xl+';
import { MockMiniR } from './enclosure-templates/mock-mini-r';
import { MockR20 } from './enclosure-templates/mock-r20';
......@@ -652,6 +655,15 @@ export class MockStorageGenerator {
case 'MINI-R':
chassis = new MockMiniR(enclosureNumber);
break;
case 'MINI-3.0-E+':
chassis = new MockMini30Eplus(enclosureNumber);
break;
case 'MINI-3.0-X':
chassis = new MockMini30X(enclosureNumber);
break;
case 'MINI-3.0-X+':
chassis = new MockMini30Xplus(enclosureNumber);
break;
case 'MINI-3.0-XL+':
chassis = new MockMini30Xl(enclosureNumber);
break;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment