blob: 3f172d2d8b30ef78edab7de089b956b0013237ba [file] [log] [blame]
Yoshie Muranakab89a53c2020-06-15 13:25:46 -07001import api from '@/store/api';
2
3const FanStore = {
4 namespaced: true,
5 state: {
Derick Montague602e98a2020-10-21 16:20:00 -05006 fans: [],
Yoshie Muranakab89a53c2020-06-15 13:25:46 -07007 },
8 getters: {
Derick Montague602e98a2020-10-21 16:20:00 -05009 fans: (state) => state.fans,
Yoshie Muranakab89a53c2020-06-15 13:25:46 -070010 },
11 mutations: {
12 setFanInfo: (state, data) => {
Derick Montague602e98a2020-10-21 16:20:00 -050013 state.fans = data.map((fan) => {
Dixsie Wolmersdd652d72021-05-13 09:08:53 -050014 const {
15 IndicatorLED,
16 Location,
17 MemberId,
18 Name,
19 Reading,
20 ReadingUnits,
21 Status = {},
22 PartNumber,
23 SerialNumber,
24 } = fan;
Yoshie Muranakab89a53c2020-06-15 13:25:46 -070025 return {
26 id: MemberId,
27 health: Status.Health,
28 partNumber: PartNumber,
29 serialNumber: SerialNumber,
Dixsie Wolmersdd652d72021-05-13 09:08:53 -050030 healthRollup: Status.HealthRollup,
31 identifyLed: IndicatorLED,
32 locationNumber: Location,
33 name: Name,
34 speed: Reading + ' ' + ReadingUnits,
Derick Montague602e98a2020-10-21 16:20:00 -050035 statusState: Status.State,
Yoshie Muranakab89a53c2020-06-15 13:25:46 -070036 };
37 });
Derick Montague602e98a2020-10-21 16:20:00 -050038 },
Yoshie Muranakab89a53c2020-06-15 13:25:46 -070039 },
40 actions: {
MichalX Szopinski6c5418f2022-02-25 13:13:27 +010041 async getChassisCollection() {
Yoshie Muranakab89a53c2020-06-15 13:25:46 -070042 return await api
MichalX Szopinski6c5418f2022-02-25 13:13:27 +010043 .get('/redfish/v1/Chassis')
44 .then(({ data: { Members } }) =>
45 api.all(
46 Members.map((member) =>
47 api.get(member['@odata.id']).then((response) => response.data)
48 )
49 )
50 )
51 .catch((error) => console.log(error));
52 },
53 async getFanInfo({ dispatch, commit }) {
54 const collection = await dispatch('getChassisCollection');
55 if (!collection || collection.length === 0) return;
56 return await api
57 .all(collection.map((chassis) => dispatch('getChassisFans', chassis)))
58 .then((fansFromChassis) => commit('setFanInfo', fansFromChassis.flat()))
59 .catch((error) => console.log(error));
60 },
61 async getChassisFans(_, chassis) {
62 return await api
63 .get(chassis.Thermal['@odata.id'])
64 .then(({ data: { Fans } }) => Fans || [])
Derick Montague602e98a2020-10-21 16:20:00 -050065 .catch((error) => console.log(error));
66 },
67 },
Yoshie Muranakab89a53c2020-06-15 13:25:46 -070068};
69
70export default FanStore;