import api from '@/store/api'; import i18n from '@/i18n'; const FanStore = { namespaced: true, state: { fans: [], fansLastHour: [], limits: [], isLoading: false, }, getters: { fans: (state) => state.fans, fansLastHour: (state) => state.fansLastHour, limits: (state) => state.limits, isLoading: (state) => state.isLoading, }, mutations: { setFanInfo: (state, data) => { state.fans = data.map((fan) => { const { IndicatorLED, Location, MemberId, Name, Reading, ReadingUnits, Status = {}, PartNumber, SerialNumber, } = fan; return { id: MemberId, health: Status.Health, partNumber: PartNumber, serialNumber: SerialNumber, healthRollup: Status.HealthRollup, identifyLed: IndicatorLED, locationNumber: Location, name: Name, speed: Reading + ' ' + ReadingUnits, speedRPM: Reading, statusState: Status.State, }; }); }, setFans: (state, data) => { state.fans = data; }, setFansLastHour: (state, data) => { state.fansLastHour = data; }, setLimits: (state, data) => { state.limits = data; }, setIsLoading: (state, data) => { state.isLoading = data; }, }, actions: { async patchLimits({ dispatch }, { warning, critical, groups }) { return await api .patch('/redfish/v1/Chassis/SILA_Baseboard/Thermal', { Fans: groups.map((group) => { return { MemberId: group, UpperThresholdNonCritical: warning, }; }), }) .then(async () => { return await api.patch('/redfish/v1/Chassis/SILA_Baseboard/Thermal', { Fans: groups.map((group) => { return { MemberId: group, UpperThresholdCritical: critical, }; }), }); }) .catch((error) => { console.log(error); throw new Error(i18n.t('pageMemory.toast.errorLimitUpdate')); }) .finally(() => dispatch('getLimits')); }, async getLimits({ commit }) { return await api .get('/redfish/v1/Chassis/SILA_Baseboard/Thermal') .then(({ data: { Fans = [] } }) => { commit('setLimits', Fans); }) .catch((error) => console.log(error)); }, async getFans({ commit }, { lastHour }) { let url = null; if (lastHour) { url = '/redfish/v1/TelemetryService/MetricReports/fans&period=last_hour'; } else { url = '/redfish/v1/TelemetryService/MetricReports/fans'; } return await api .get(url) .then(({ data: { MetricValues = [] } }) => { if (lastHour) { commit('setFansLastHour', MetricValues); } else { commit('setFans', MetricValues); } }) .catch((error) => console.log(error)); }, async getFanInfo({ commit }) { return await api .get('/redfish/v1/Chassis/chassis/Thermal') .then(({ data: { Fans = [] } }) => commit('setFanInfo', Fans)) .catch((error) => console.log(error)); }, }, }; export default FanStore;