1import api from '@/store/api'; 2import i18n from '@/i18n'; 3 4const PowerControlStore = { 5 namespaced: true, 6 state: { 7 powerCapValue: null, 8 powerCapUri: '', 9 powerConsumptionValue: null, 10 }, 11 getters: { 12 powerCapValue: (state) => state.powerCapValue, 13 powerCapUri: (state) => state.powerCapUri, 14 powerConsumptionValue: (state) => state.powerConsumptionValue, 15 }, 16 mutations: { 17 setPowerCapValue: (state, powerCapValue) => 18 (state.powerCapValue = powerCapValue), 19 setPowerCapUri: (state, powerCapUri) => (state.powerCapUri = powerCapUri), 20 setPowerConsumptionValue: (state, powerConsumptionValue) => 21 (state.powerConsumptionValue = powerConsumptionValue), 22 }, 23 actions: { 24 setPowerCapUpdatedValue({ commit }, value) { 25 commit('setPowerCapValue', value); 26 }, 27 async getChassisCollection() { 28 return await api 29 .get('/redfish/v1/') 30 .then((response) => api.get(response.data.Chassis['@odata.id'])) 31 .then(({ data: { Members } }) => 32 Members.map((member) => member['@odata.id']), 33 ) 34 .catch((error) => console.log(error)); 35 }, 36 async getPowerControl({ dispatch, commit }) { 37 const collection = await dispatch('getChassisCollection'); 38 if (!collection || collection.length === 0) return; 39 return await api 40 .get(`${collection[0]}`) 41 .then((response) => { 42 const powerUri = response?.data?.Power?.['@odata.id']; 43 if (!powerUri) return; 44 return api.get(powerUri); 45 }) 46 .then((response) => { 47 const powerControl = response?.data?.PowerControl; 48 if (!powerControl || powerControl.length === 0) return; 49 const powerCapUri = response.data['@odata.id']; 50 const powerCap = powerControl[0].PowerLimit.LimitInWatts; 51 // If system is powered off, power consumption does not exist in the PowerControl 52 const powerConsumption = powerControl[0].PowerConsumedWatts || null; 53 commit('setPowerCapUri', powerCapUri); 54 commit('setPowerCapValue', powerCap); 55 commit('setPowerConsumptionValue', powerConsumption); 56 }) 57 .catch((error) => { 58 console.log('Power control', error); 59 }); 60 }, 61 async setPowerControl({ state }, powerCapValue) { 62 const data = { 63 PowerControl: [{ PowerLimit: { LimitInWatts: powerCapValue } }], 64 }; 65 return await api 66 .patch(state.powerCapUri, data) 67 .then(() => 68 i18n.global.t('pageServerPowerOperations.toast.successSaveSettings'), 69 ) 70 .catch((error) => { 71 console.log(error); 72 throw new Error( 73 i18n.global.t('pageServerPowerOperations.toast.errorSaveSettings'), 74 ); 75 }); 76 }, 77 }, 78}; 79 80export default PowerControlStore; 81