blob: 5163c81547018fa7168f54f1b73c72c1346b19af [file] [log] [blame]
SurenNeware61859092020-10-01 09:37:32 +05301import api from '@/store/api';
Sukanya Pandey9055d982020-03-31 17:37:53 +05302import i18n from '@/i18n';
Dixsie Wolmers4c69f5b2020-02-26 11:23:52 -06003
4const PowerControlStore = {
5 namespaced: true,
6 state: {
7 powerCapValue: null,
MichalX Szopinskif4328ed2021-07-12 12:59:30 +02008 powerCapUri: '',
Derick Montague602e98a2020-10-21 16:20:00 -05009 powerConsumptionValue: null,
Dixsie Wolmers4c69f5b2020-02-26 11:23:52 -060010 },
11 getters: {
Derick Montague602e98a2020-10-21 16:20:00 -050012 powerCapValue: (state) => state.powerCapValue,
MichalX Szopinskif4328ed2021-07-12 12:59:30 +020013 powerCapUri: (state) => state.powerCapUri,
Derick Montague602e98a2020-10-21 16:20:00 -050014 powerConsumptionValue: (state) => state.powerConsumptionValue,
Dixsie Wolmers4c69f5b2020-02-26 11:23:52 -060015 },
16 mutations: {
17 setPowerCapValue: (state, powerCapValue) =>
18 (state.powerCapValue = powerCapValue),
MichalX Szopinskif4328ed2021-07-12 12:59:30 +020019 setPowerCapUri: (state, powerCapUri) => (state.powerCapUri = powerCapUri),
Dixsie Wolmers4c69f5b2020-02-26 11:23:52 -060020 setPowerConsumptionValue: (state, powerConsumptionValue) =>
Derick Montague602e98a2020-10-21 16:20:00 -050021 (state.powerConsumptionValue = powerConsumptionValue),
Dixsie Wolmers4c69f5b2020-02-26 11:23:52 -060022 },
23 actions: {
Sukanya Pandey9055d982020-03-31 17:37:53 +053024 setPowerCapUpdatedValue({ commit }, value) {
25 commit('setPowerCapValue', value);
26 },
MichalX Szopinskif4328ed2021-07-12 12:59:30 +020027 async getChassisCollection() {
Yoshie Muranaka598bf7e2020-05-01 12:26:00 -070028 return await api
MichalX Szopinskif4328ed2021-07-12 12:59:30 +020029 .get('/redfish/v1/')
30 .then((response) => api.get(response.data.Chassis['@odata.id']))
31 .then(({ data: { Members } }) =>
Ed Tanous81323992024-02-27 11:26:24 -080032 Members.map((member) => member['@odata.id']),
MichalX Szopinskif4328ed2021-07-12 12:59:30 +020033 )
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]}`)
Derick Montague602e98a2020-10-21 16:20:00 -050041 .then((response) => {
jason westoverd36ac8a2025-11-03 20:58:59 -060042 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;
MichalX Szopinskif4328ed2021-07-12 12:59:30 +020048 if (!powerControl || powerControl.length === 0) return;
Damian Celico2f2f64d2022-12-05 21:48:02 +010049 const powerCapUri = response.data['@odata.id'];
Dixsie Wolmers4c69f5b2020-02-26 11:23:52 -060050 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;
MichalX Szopinskif4328ed2021-07-12 12:59:30 +020053 commit('setPowerCapUri', powerCapUri);
Dixsie Wolmers4c69f5b2020-02-26 11:23:52 -060054 commit('setPowerCapValue', powerCap);
55 commit('setPowerConsumptionValue', powerConsumption);
56 })
Derick Montague602e98a2020-10-21 16:20:00 -050057 .catch((error) => {
Dixsie Wolmers4c69f5b2020-02-26 11:23:52 -060058 console.log('Power control', error);
59 });
Sukanya Pandey9055d982020-03-31 17:37:53 +053060 },
MichalX Szopinskif4328ed2021-07-12 12:59:30 +020061 async setPowerControl({ state }, powerCapValue) {
Sukanya Pandey9055d982020-03-31 17:37:53 +053062 const data = {
Derick Montague602e98a2020-10-21 16:20:00 -050063 PowerControl: [{ PowerLimit: { LimitInWatts: powerCapValue } }],
Sukanya Pandey9055d982020-03-31 17:37:53 +053064 };
Sukanya Pandey9055d982020-03-31 17:37:53 +053065 return await api
MichalX Szopinskif4328ed2021-07-12 12:59:30 +020066 .patch(state.powerCapUri, data)
Sukanya Pandey9055d982020-03-31 17:37:53 +053067 .then(() =>
Surya Vde23ea22024-07-11 15:19:46 +053068 i18n.global.t('pageServerPowerOperations.toast.successSaveSettings'),
Sukanya Pandey9055d982020-03-31 17:37:53 +053069 )
Derick Montague602e98a2020-10-21 16:20:00 -050070 .catch((error) => {
Sukanya Pandey9055d982020-03-31 17:37:53 +053071 console.log(error);
72 throw new Error(
Surya Vde23ea22024-07-11 15:19:46 +053073 i18n.global.t('pageServerPowerOperations.toast.errorSaveSettings'),
Sukanya Pandey9055d982020-03-31 17:37:53 +053074 );
75 });
Derick Montague602e98a2020-10-21 16:20:00 -050076 },
77 },
Dixsie Wolmers4c69f5b2020-02-26 11:23:52 -060078};
79
80export default PowerControlStore;