diff options
Diffstat (limited to 'src/store/modules/HardwareStatus/PowerSupplyStore.js')
-rw-r--r-- | src/store/modules/HardwareStatus/PowerSupplyStore.js | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/src/store/modules/HardwareStatus/PowerSupplyStore.js b/src/store/modules/HardwareStatus/PowerSupplyStore.js new file mode 100644 index 00000000..f7be2809 --- /dev/null +++ b/src/store/modules/HardwareStatus/PowerSupplyStore.js @@ -0,0 +1,78 @@ +import api from '@/store/api'; + +const PowerSupplyStore = { + namespaced: true, + state: { + powerSupplies: [], + }, + getters: { + powerSupplies: (state) => state.powerSupplies, + }, + mutations: { + setPowerSupply: (state, data) => { + state.powerSupplies = data.map((powerSupply) => { + const { + EfficiencyPercent, + FirmwareVersion, + LocationIndicatorActive, + MemberId, + Manufacturer, + Model, + Name, + PartNumber, + PowerInputWatts, + SerialNumber, + SparePartNumber, + Status = {}, + } = powerSupply; + return { + id: MemberId, + health: Status.Health, + partNumber: PartNumber, + serialNumber: SerialNumber, + efficiencyPercent: EfficiencyPercent, + firmwareVersion: FirmwareVersion, + identifyLed: LocationIndicatorActive, + manufacturer: Manufacturer, + model: Model, + powerInputWatts: PowerInputWatts, + name: Name, + sparePartNumber: SparePartNumber, + statusState: Status.State, + }; + }); + }, + }, + actions: { + async getChassisCollection() { + return await api + .get('/redfish/v1/Chassis') + .then(({ data: { Members } }) => + Members.map((member) => member['@odata.id']) + ) + .catch((error) => console.log(error)); + }, + async getAllPowerSupplies({ dispatch, commit }) { + const collection = await dispatch('getChassisCollection'); + if (!collection) return; + return await api + .all(collection.map((chassis) => dispatch('getChassisPower', chassis))) + .then((supplies) => { + let suppliesList = []; + supplies.forEach( + (supply) => (suppliesList = [...suppliesList, ...supply]) + ); + commit('setPowerSupply', suppliesList); + }) + .catch((error) => console.log(error)); + }, + async getChassisPower(_, id) { + return await api + .get(`${id}/Power`) + .then(({ data: { PowerSupplies } }) => PowerSupplies || []) + .catch((error) => console.log(error)); + }, + }, +}; + +export default PowerSupplyStore; |