1import api from '@/store/api'; 2 3const FanStore = { 4 namespaced: true, 5 state: { 6 fans: [], 7 }, 8 getters: { 9 fans: (state) => state.fans, 10 }, 11 mutations: { 12 setFanInfo: (state, data) => { 13 state.fans = data.map((fan) => { 14 const ThermalSubsystem = 15 process.env.VUE_APP_FAN_DATA_FROM_THERMAL_SUBSYSTEM === 'true' 16 ? true 17 : false; 18 if (ThermalSubsystem) { 19 const { 20 Id, 21 Name, 22 PartNumber, 23 SerialNumber, 24 SpeedPercent = {}, 25 Status = {}, 26 } = fan; 27 return { 28 id: Id, 29 health: Status.Health, 30 name: Name, 31 speed: SpeedPercent.Reading, 32 statusState: Status.State, 33 healthRollup: Status.HealthRollup, 34 partNumber: PartNumber, 35 serialNumber: SerialNumber, 36 }; 37 } else { 38 const { 39 MemberId, 40 Name, 41 Reading, 42 Status = {}, 43 PartNumber, 44 SerialNumber, 45 } = fan; 46 return { 47 id: MemberId, 48 health: Status.Health, 49 partNumber: PartNumber, 50 serialNumber: SerialNumber, 51 healthRollup: Status.HealthRollup, 52 name: Name, 53 speed: Reading, 54 statusState: Status.State, 55 }; 56 } 57 }); 58 }, 59 }, 60 actions: { 61 async getChassisCollection() { 62 return await api 63 .get('/redfish/v1/Chassis') 64 .then(({ data: { Members } }) => 65 api.all( 66 Members.map((member) => 67 api.get(member['@odata.id']).then((response) => response.data) 68 ) 69 ) 70 ) 71 .catch((error) => console.log(error)); 72 }, 73 async getFanInfo({ dispatch, commit }) { 74 const collection = await dispatch('getChassisCollection'); 75 if (!collection || collection.length === 0) return; 76 return await api 77 .all(collection.map((chassis) => dispatch('getChassisFans', chassis))) 78 .then((fansFromChassis) => commit('setFanInfo', fansFromChassis.flat())) 79 .catch((error) => console.log(error)); 80 }, 81 async getChassisFans(_, chassis) { 82 const ThermalSubsystem = 83 process.env.VUE_APP_FAN_DATA_FROM_THERMAL_SUBSYSTEM === 'true' 84 ? true 85 : false; 86 if (ThermalSubsystem) { 87 return await api 88 .get(chassis.ThermalSubsystem['@odata.id']) 89 .then((response) => { 90 return api.get(`${response.data.Fans['@odata.id']}`); 91 }) 92 .then(({ data: { Members } }) => { 93 const promises = Members.map((member) => 94 api.get(member['@odata.id']) 95 ); 96 return api.all(promises); 97 }) 98 .then((response) => { 99 const data = response.map(({ data }) => data); 100 return data; 101 }) 102 .catch((error) => console.log(error)); 103 } else { 104 return await api 105 .get(chassis.Thermal['@odata.id']) 106 .then(({ data: { Fans } }) => { 107 return Fans || []; 108 }) 109 .catch((error) => console.log(error)); 110 } 111 }, 112 }, 113}; 114 115export default FanStore; 116