blob: 832ef634ac234d7ead0af26b597e45712e1ffc4e [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) => {
Sivaprabu Ganesan582ac0d2023-07-25 15:12:46 +053014 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 }
Yoshie Muranakab89a53c2020-06-15 13:25:46 -070057 });
Derick Montague602e98a2020-10-21 16:20:00 -050058 },
Yoshie Muranakab89a53c2020-06-15 13:25:46 -070059 },
60 actions: {
MichalX Szopinski6c5418f2022-02-25 13:13:27 +010061 async getChassisCollection() {
Yoshie Muranakab89a53c2020-06-15 13:25:46 -070062 return await api
MichalX Szopinski6c5418f2022-02-25 13:13:27 +010063 .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) {
Sivaprabu Ganesan582ac0d2023-07-25 15:12:46 +053082 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 }
Derick Montague602e98a2020-10-21 16:20:00 -0500111 },
112 },
Yoshie Muranakab89a53c2020-06-15 13:25:46 -0700113};
114
115export default FanStore;