summaryrefslogtreecommitdiff
path: root/src/store/modules/Operations/BootSettingsStore.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/store/modules/Operations/BootSettingsStore.js')
-rw-r--r--src/store/modules/Operations/BootSettingsStore.js136
1 files changed, 136 insertions, 0 deletions
diff --git a/src/store/modules/Operations/BootSettingsStore.js b/src/store/modules/Operations/BootSettingsStore.js
new file mode 100644
index 00000000..7a36dd84
--- /dev/null
+++ b/src/store/modules/Operations/BootSettingsStore.js
@@ -0,0 +1,136 @@
+import api from '@/store/api';
+import i18n from '@/i18n';
+
+const BootSettingsStore = {
+ namespaced: true,
+ state: {
+ bootSourceOptions: [],
+ bootSource: null,
+ overrideEnabled: null,
+ tpmEnabled: null,
+ },
+ getters: {
+ bootSourceOptions: (state) => state.bootSourceOptions,
+ bootSource: (state) => state.bootSource,
+ overrideEnabled: (state) => state.overrideEnabled,
+ tpmEnabled: (state) => state.tpmEnabled,
+ },
+ mutations: {
+ setBootSourceOptions: (state, bootSourceOptions) =>
+ (state.bootSourceOptions = bootSourceOptions),
+ setBootSource: (state, bootSource) => (state.bootSource = bootSource),
+ setOverrideEnabled: (state, overrideEnabled) => {
+ if (overrideEnabled === 'Once') {
+ state.overrideEnabled = true;
+ } else {
+ // 'Continuous' or 'Disabled'
+ state.overrideEnabled = false;
+ }
+ },
+ setTpmPolicy: (state, tpmEnabled) => (state.tpmEnabled = tpmEnabled),
+ },
+ actions: {
+ async getBootSettings({ commit }) {
+ return await api
+ .get('/redfish/v1/Systems/system')
+ .then(({ data: { Boot } }) => {
+ commit(
+ 'setBootSourceOptions',
+ Boot['BootSourceOverrideTarget@Redfish.AllowableValues']
+ );
+ commit('setOverrideEnabled', Boot.BootSourceOverrideEnabled);
+ commit('setBootSource', Boot.BootSourceOverrideTarget);
+ })
+ .catch((error) => console.log(error));
+ },
+ saveBootSettings({ commit, dispatch }, { bootSource, overrideEnabled }) {
+ const data = { Boot: {} };
+ data.Boot.BootSourceOverrideTarget = bootSource;
+
+ if (overrideEnabled) {
+ data.Boot.BootSourceOverrideEnabled = 'Once';
+ } else if (bootSource === 'None') {
+ data.Boot.BootSourceOverrideEnabled = 'Disabled';
+ } else {
+ data.Boot.BootSourceOverrideEnabled = 'Continuous';
+ }
+
+ return api
+ .patch('/redfish/v1/Systems/system', data)
+ .then((response) => {
+ // If request success, commit the values
+ commit('setBootSource', data.Boot.BootSourceOverrideTarget);
+ commit('setOverrideEnabled', data.Boot.BootSourceOverrideEnabled);
+ return response;
+ })
+ .catch((error) => {
+ console.log(error);
+ // If request error, GET saved options
+ dispatch('getBootSettings');
+ return error;
+ });
+ },
+ async getTpmPolicy({ commit }) {
+ // TODO: switch to Redfish when available
+ return await api
+ .get('/xyz/openbmc_project/control/host0/TPMEnable')
+ .then(({ data: { data: { TPMEnable } } }) =>
+ commit('setTpmPolicy', TPMEnable)
+ )
+ .catch((error) => console.log(error));
+ },
+ saveTpmPolicy({ commit, dispatch }, tpmEnabled) {
+ // TODO: switch to Redfish when available
+ const data = { data: tpmEnabled };
+ return api
+ .put(
+ '/xyz/openbmc_project/control/host0/TPMEnable/attr/TPMEnable',
+ data
+ )
+ .then((response) => {
+ // If request success, commit the values
+ commit('setTpmPolicy', tpmEnabled);
+ return response;
+ })
+ .catch((error) => {
+ console.log(error);
+ // If request error, GET saved policy
+ dispatch('getTpmPolicy');
+ return error;
+ });
+ },
+ async saveSettings(
+ { dispatch },
+ { bootSource, overrideEnabled, tpmEnabled }
+ ) {
+ const promises = [];
+
+ if (bootSource !== null || overrideEnabled !== null) {
+ promises.push(
+ dispatch('saveBootSettings', { bootSource, overrideEnabled })
+ );
+ }
+ if (tpmEnabled !== null) {
+ promises.push(dispatch('saveTpmPolicy', tpmEnabled));
+ }
+
+ return await api.all(promises).then(
+ api.spread((...responses) => {
+ let message = i18n.t(
+ 'pageServerPowerOperations.toast.successSaveSettings'
+ );
+ responses.forEach((response) => {
+ if (response instanceof Error) {
+ throw new Error(
+ i18n.t('pageServerPowerOperations.toast.errorSaveSettings')
+ );
+ }
+ });
+ return message;
+ })
+ );
+ },
+ },
+};
+
+export default BootSettingsStore;