| import api from '@/store/api'; |
| import i18n from '@/i18n'; |
| |
| const PowerControlStore = { |
| namespaced: true, |
| state: { |
| powerCapValue: null, |
| powerCapUri: '', |
| powerConsumptionValue: null, |
| }, |
| getters: { |
| powerCapValue: (state) => state.powerCapValue, |
| powerCapUri: (state) => state.powerCapUri, |
| powerConsumptionValue: (state) => state.powerConsumptionValue, |
| }, |
| mutations: { |
| setPowerCapValue: (state, powerCapValue) => |
| (state.powerCapValue = powerCapValue), |
| setPowerCapUri: (state, powerCapUri) => (state.powerCapUri = powerCapUri), |
| setPowerConsumptionValue: (state, powerConsumptionValue) => |
| (state.powerConsumptionValue = powerConsumptionValue), |
| }, |
| actions: { |
| setPowerCapUpdatedValue({ commit }, value) { |
| commit('setPowerCapValue', value); |
| }, |
| async getChassisCollection() { |
| return await api |
| .get('/redfish/v1/') |
| .then((response) => api.get(response.data.Chassis['@odata.id'])) |
| .then(({ data: { Members } }) => |
| Members.map((member) => member['@odata.id']), |
| ) |
| .catch((error) => console.log(error)); |
| }, |
| async getPowerControl({ dispatch, commit }) { |
| const collection = await dispatch('getChassisCollection'); |
| if (!collection || collection.length === 0) return; |
| return await api |
| .get(`${collection[0]}`) |
| .then((response) => api.get(response.data.Power['@odata.id'])) |
| .then((response) => { |
| const powerControl = response.data.PowerControl; |
| if (!powerControl || powerControl.length === 0) return; |
| const powerCapUri = response.data['@odata.id']; |
| const powerCap = powerControl[0].PowerLimit.LimitInWatts; |
| // If system is powered off, power consumption does not exist in the PowerControl |
| const powerConsumption = powerControl[0].PowerConsumedWatts || null; |
| commit('setPowerCapUri', powerCapUri); |
| commit('setPowerCapValue', powerCap); |
| commit('setPowerConsumptionValue', powerConsumption); |
| }) |
| .catch((error) => { |
| console.log('Power control', error); |
| }); |
| }, |
| async setPowerControl({ state }, powerCapValue) { |
| const data = { |
| PowerControl: [{ PowerLimit: { LimitInWatts: powerCapValue } }], |
| }; |
| return await api |
| .patch(state.powerCapUri, data) |
| .then(() => |
| i18n.global.t('pageServerPowerOperations.toast.successSaveSettings'), |
| ) |
| .catch((error) => { |
| console.log(error); |
| throw new Error( |
| i18n.global.t('pageServerPowerOperations.toast.errorSaveSettings'), |
| ); |
| }); |
| }, |
| }, |
| }; |
| |
| export default PowerControlStore; |