xref: /openbmc/webui-vue/src/store/modules/ResourceManagement/PowerControlStore.js (revision de23ea23d88451a2fa2774ec72053772603c23ae)
13145d4d9SDixsie Wolmersimport api from '@/store/api';
23145d4d9SDixsie Wolmersimport i18n from '@/i18n';
33145d4d9SDixsie Wolmers
43145d4d9SDixsie Wolmersconst PowerControlStore = {
53145d4d9SDixsie Wolmers  namespaced: true,
63145d4d9SDixsie Wolmers  state: {
73145d4d9SDixsie Wolmers    powerCapValue: null,
8f4328edfSMichalX Szopinski    powerCapUri: '',
93145d4d9SDixsie Wolmers    powerConsumptionValue: null,
103145d4d9SDixsie Wolmers  },
113145d4d9SDixsie Wolmers  getters: {
123145d4d9SDixsie Wolmers    powerCapValue: (state) => state.powerCapValue,
13f4328edfSMichalX Szopinski    powerCapUri: (state) => state.powerCapUri,
143145d4d9SDixsie Wolmers    powerConsumptionValue: (state) => state.powerConsumptionValue,
153145d4d9SDixsie Wolmers  },
163145d4d9SDixsie Wolmers  mutations: {
173145d4d9SDixsie Wolmers    setPowerCapValue: (state, powerCapValue) =>
183145d4d9SDixsie Wolmers      (state.powerCapValue = powerCapValue),
19f4328edfSMichalX Szopinski    setPowerCapUri: (state, powerCapUri) => (state.powerCapUri = powerCapUri),
203145d4d9SDixsie Wolmers    setPowerConsumptionValue: (state, powerConsumptionValue) =>
213145d4d9SDixsie Wolmers      (state.powerConsumptionValue = powerConsumptionValue),
223145d4d9SDixsie Wolmers  },
233145d4d9SDixsie Wolmers  actions: {
243145d4d9SDixsie Wolmers    setPowerCapUpdatedValue({ commit }, value) {
253145d4d9SDixsie Wolmers      commit('setPowerCapValue', value);
263145d4d9SDixsie Wolmers    },
27f4328edfSMichalX Szopinski    async getChassisCollection() {
283145d4d9SDixsie Wolmers      return await api
29f4328edfSMichalX Szopinski        .get('/redfish/v1/')
30f4328edfSMichalX Szopinski        .then((response) => api.get(response.data.Chassis['@odata.id']))
31f4328edfSMichalX Szopinski        .then(({ data: { Members } }) =>
328132399cSEd Tanous          Members.map((member) => member['@odata.id']),
33f4328edfSMichalX Szopinski        )
34f4328edfSMichalX Szopinski        .catch((error) => console.log(error));
35f4328edfSMichalX Szopinski    },
36f4328edfSMichalX Szopinski    async getPowerControl({ dispatch, commit }) {
37f4328edfSMichalX Szopinski      const collection = await dispatch('getChassisCollection');
38f4328edfSMichalX Szopinski      if (!collection || collection.length === 0) return;
39f4328edfSMichalX Szopinski      return await api
40f4328edfSMichalX Szopinski        .get(`${collection[0]}`)
41f4328edfSMichalX Szopinski        .then((response) => api.get(response.data.Power['@odata.id']))
423145d4d9SDixsie Wolmers        .then((response) => {
433145d4d9SDixsie Wolmers          const powerControl = response.data.PowerControl;
44f4328edfSMichalX Szopinski          if (!powerControl || powerControl.length === 0) return;
452f2f64d2SDamian Celico          const powerCapUri = response.data['@odata.id'];
463145d4d9SDixsie Wolmers          const powerCap = powerControl[0].PowerLimit.LimitInWatts;
473145d4d9SDixsie Wolmers          // If system is powered off, power consumption does not exist in the PowerControl
483145d4d9SDixsie Wolmers          const powerConsumption = powerControl[0].PowerConsumedWatts || null;
49f4328edfSMichalX Szopinski          commit('setPowerCapUri', powerCapUri);
503145d4d9SDixsie Wolmers          commit('setPowerCapValue', powerCap);
513145d4d9SDixsie Wolmers          commit('setPowerConsumptionValue', powerConsumption);
523145d4d9SDixsie Wolmers        })
533145d4d9SDixsie Wolmers        .catch((error) => {
543145d4d9SDixsie Wolmers          console.log('Power control', error);
553145d4d9SDixsie Wolmers        });
563145d4d9SDixsie Wolmers    },
57f4328edfSMichalX Szopinski    async setPowerControl({ state }, powerCapValue) {
583145d4d9SDixsie Wolmers      const data = {
593145d4d9SDixsie Wolmers        PowerControl: [{ PowerLimit: { LimitInWatts: powerCapValue } }],
603145d4d9SDixsie Wolmers      };
613145d4d9SDixsie Wolmers      return await api
62f4328edfSMichalX Szopinski        .patch(state.powerCapUri, data)
633145d4d9SDixsie Wolmers        .then(() =>
64*de23ea23SSurya V          i18n.global.t('pageServerPowerOperations.toast.successSaveSettings'),
653145d4d9SDixsie Wolmers        )
663145d4d9SDixsie Wolmers        .catch((error) => {
673145d4d9SDixsie Wolmers          console.log(error);
683145d4d9SDixsie Wolmers          throw new Error(
69*de23ea23SSurya V            i18n.global.t('pageServerPowerOperations.toast.errorSaveSettings'),
703145d4d9SDixsie Wolmers          );
713145d4d9SDixsie Wolmers        });
723145d4d9SDixsie Wolmers    },
733145d4d9SDixsie Wolmers  },
743145d4d9SDixsie Wolmers};
753145d4d9SDixsie Wolmers
763145d4d9SDixsie Wolmersexport default PowerControlStore;
77