diff options
author | Sandeepa Singh <sandeepa.singh@ibm.com> | 2021-07-14 13:32:22 +0300 |
---|---|---|
committer | Derick Montague <derick.montague@ibm.com> | 2021-08-10 22:20:42 +0300 |
commit | 68cbbe9014cbdcf7229a878f564d38f6d6199f25 (patch) | |
tree | cd7138959f405cb44b5d62000da9d364ed238b91 /src/store/modules/Control | |
parent | 7affc529b7fba41193c4d48764707e9961cdd22d (diff) | |
download | webui-vue-68cbbe9014cbdcf7229a878f564d38f6d6199f25.tar.xz |
IA update: Update control section to operations
This is the third update to the information architecture changes and
has the following changes:
- The control section has been updated to operations
- The server led page has been removed
- The firmware page is moved to operations section
Signed-off-by: Sandeepa Singh <sandeepa.singh@ibm.com>
Change-Id: I2e23da447890d7bee51892e1f782d5f2db6dded4
Diffstat (limited to 'src/store/modules/Control')
-rw-r--r-- | src/store/modules/Control/BootSettingsStore.js | 136 | ||||
-rw-r--r-- | src/store/modules/Control/ControlStore.js | 132 | ||||
-rw-r--r-- | src/store/modules/Control/FactoryResetStore.js | 32 | ||||
-rw-r--r-- | src/store/modules/Control/PowerControlStore.js | 60 | ||||
-rw-r--r-- | src/store/modules/Control/PowerPolicyStore.js | 72 | ||||
-rw-r--r-- | src/store/modules/Control/VirtualMediaStore.js | 105 |
6 files changed, 0 insertions, 537 deletions
diff --git a/src/store/modules/Control/BootSettingsStore.js b/src/store/modules/Control/BootSettingsStore.js deleted file mode 100644 index 7a36dd84..00000000 --- a/src/store/modules/Control/BootSettingsStore.js +++ /dev/null @@ -1,136 +0,0 @@ -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; diff --git a/src/store/modules/Control/ControlStore.js b/src/store/modules/Control/ControlStore.js deleted file mode 100644 index 9b8bf73d..00000000 --- a/src/store/modules/Control/ControlStore.js +++ /dev/null @@ -1,132 +0,0 @@ -import api from '@/store/api'; -import i18n from '@/i18n'; - -/** - * Watch for serverStatus changes in GlobalStore module - * to set isOperationInProgress state - * Stop watching status changes and resolve Promise when - * serverStatus value matches passed argument or after 5 minutes - * @param {string} serverStatus - * @returns {Promise} - */ -const checkForServerStatus = function (serverStatus) { - return new Promise((resolve) => { - const timer = setTimeout(() => { - resolve(); - unwatch(); - }, 300000 /*5mins*/); - const unwatch = this.watch( - (state) => state.global.serverStatus, - (value) => { - if (value === serverStatus) { - resolve(); - unwatch(); - clearTimeout(timer); - } - } - ); - }); -}; - -const ControlStore = { - namespaced: true, - state: { - isOperationInProgress: false, - lastPowerOperationTime: null, - lastBmcRebootTime: null, - }, - getters: { - isOperationInProgress: (state) => state.isOperationInProgress, - lastPowerOperationTime: (state) => state.lastPowerOperationTime, - lastBmcRebootTime: (state) => state.lastBmcRebootTime, - }, - mutations: { - setOperationInProgress: (state, inProgress) => - (state.isOperationInProgress = inProgress), - setLastPowerOperationTime: (state, lastPowerOperationTime) => - (state.lastPowerOperationTime = lastPowerOperationTime), - setLastBmcRebootTime: (state, lastBmcRebootTime) => - (state.lastBmcRebootTime = lastBmcRebootTime), - }, - actions: { - async getLastPowerOperationTime({ commit }) { - return await api - .get('/redfish/v1/Systems/system') - .then((response) => { - const lastReset = response.data.LastResetTime; - if (lastReset) { - const lastPowerOperationTime = new Date(lastReset); - commit('setLastPowerOperationTime', lastPowerOperationTime); - } - }) - .catch((error) => console.log(error)); - }, - getLastBmcRebootTime({ commit }) { - return api - .get('/redfish/v1/Managers/bmc') - .then((response) => { - const lastBmcReset = response.data.LastResetTime; - const lastBmcRebootTime = new Date(lastBmcReset); - commit('setLastBmcRebootTime', lastBmcRebootTime); - }) - .catch((error) => console.log(error)); - }, - async rebootBmc({ dispatch }) { - const data = { ResetType: 'GracefulRestart' }; - return await api - .post('/redfish/v1/Managers/bmc/Actions/Manager.Reset', data) - .then(() => dispatch('getLastBmcRebootTime')) - .then(() => i18n.t('pageRebootBmc.toast.successRebootStart')) - .catch((error) => { - console.log(error); - throw new Error(i18n.t('pageRebootBmc.toast.errorRebootStart')); - }); - }, - async serverPowerOn({ dispatch, commit }) { - const data = { ResetType: 'On' }; - dispatch('serverPowerChange', data); - await checkForServerStatus.bind(this, 'on')(); - commit('setOperationInProgress', false); - dispatch('getLastPowerOperationTime'); - }, - async serverSoftReboot({ dispatch, commit }) { - const data = { ResetType: 'GracefulRestart' }; - dispatch('serverPowerChange', data); - await checkForServerStatus.bind(this, 'on')(); - commit('setOperationInProgress', false); - dispatch('getLastPowerOperationTime'); - }, - async serverHardReboot({ dispatch, commit }) { - const data = { ResetType: 'ForceRestart' }; - dispatch('serverPowerChange', data); - await checkForServerStatus.bind(this, 'on')(); - commit('setOperationInProgress', false); - dispatch('getLastPowerOperationTime'); - }, - async serverSoftPowerOff({ dispatch, commit }) { - const data = { ResetType: 'GracefulShutdown' }; - dispatch('serverPowerChange', data); - await checkForServerStatus.bind(this, 'off')(); - commit('setOperationInProgress', false); - dispatch('getLastPowerOperationTime'); - }, - async serverHardPowerOff({ dispatch, commit }) { - const data = { ResetType: 'ForceOff' }; - dispatch('serverPowerChange', data); - await checkForServerStatus.bind(this, 'off')(); - commit('setOperationInProgress', false); - dispatch('getLastPowerOperationTime'); - }, - serverPowerChange({ commit }, data) { - commit('setOperationInProgress', true); - api - .post('/redfish/v1/Systems/system/Actions/ComputerSystem.Reset', data) - .catch((error) => { - console.log(error); - commit('setOperationInProgress', false); - }); - }, - }, -}; - -export default ControlStore; diff --git a/src/store/modules/Control/FactoryResetStore.js b/src/store/modules/Control/FactoryResetStore.js deleted file mode 100644 index 8118cf7f..00000000 --- a/src/store/modules/Control/FactoryResetStore.js +++ /dev/null @@ -1,32 +0,0 @@ -import api from '@/store/api'; -import i18n from '@/i18n'; - -const FactoryResetStore = { - namespaced: true, - actions: { - async resetToDefaults() { - return await api - .post('/redfish/v1/Managers/bmc/Actions/Manager.ResetToDefaults', { - ResetToDefaultsType: 'ResetAll', - }) - .then(() => i18n.t('pageFactoryReset.toast.resetToDefaultsSuccess')) - .catch((error) => { - console.log('Factory Reset: ', error); - throw new Error( - i18n.t('pageFactoryReset.toast.resetToDefaultsError') - ); - }); - }, - async resetBios() { - return await api - .post('/redfish/v1/Systems/system/Bios/Actions/Bios.ResetBios') - .then(() => i18n.t('pageFactoryReset.toast.resetBiosSuccess')) - .catch((error) => { - console.log('Factory Reset: ', error); - throw new Error(i18n.t('pageFactoryReset.toast.resetBiosError')); - }); - }, - }, -}; - -export default FactoryResetStore; diff --git a/src/store/modules/Control/PowerControlStore.js b/src/store/modules/Control/PowerControlStore.js deleted file mode 100644 index 9dbddf05..00000000 --- a/src/store/modules/Control/PowerControlStore.js +++ /dev/null @@ -1,60 +0,0 @@ -import api from '@/store/api'; -import i18n from '@/i18n'; - -const PowerControlStore = { - namespaced: true, - state: { - powerCapValue: null, - powerConsumptionValue: null, - }, - getters: { - powerCapValue: (state) => state.powerCapValue, - powerConsumptionValue: (state) => state.powerConsumptionValue, - }, - mutations: { - setPowerCapValue: (state, powerCapValue) => - (state.powerCapValue = powerCapValue), - setPowerConsumptionValue: (state, powerConsumptionValue) => - (state.powerConsumptionValue = powerConsumptionValue), - }, - actions: { - setPowerCapUpdatedValue({ commit }, value) { - commit('setPowerCapValue', value); - }, - async getPowerControl({ commit }) { - return await api - .get('/redfish/v1/Chassis/chassis/Power') - .then((response) => { - const powerControl = response.data.PowerControl; - 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('setPowerCapValue', powerCap); - commit('setPowerConsumptionValue', powerConsumption); - }) - .catch((error) => { - console.log('Power control', error); - }); - }, - async setPowerControl(_, powerCapValue) { - const data = { - PowerControl: [{ PowerLimit: { LimitInWatts: powerCapValue } }], - }; - - return await api - .patch('/redfish/v1/Chassis/chassis/Power', data) - .then(() => - i18n.t('pageServerPowerOperations.toast.successSaveSettings') - ) - .catch((error) => { - console.log(error); - throw new Error( - i18n.t('pageServerPowerOperations.toast.errorSaveSettings') - ); - }); - }, - }, -}; - -export default PowerControlStore; diff --git a/src/store/modules/Control/PowerPolicyStore.js b/src/store/modules/Control/PowerPolicyStore.js deleted file mode 100644 index 4e76cdfe..00000000 --- a/src/store/modules/Control/PowerPolicyStore.js +++ /dev/null @@ -1,72 +0,0 @@ -import api from '@/store/api'; -import i18n from '@/i18n'; - -const PowerControlStore = { - namespaced: true, - state: { - powerRestoreCurrentPolicy: null, - powerRestorePolicies: [], - }, - getters: { - powerRestoreCurrentPolicy: (state) => state.powerRestoreCurrentPolicy, - powerRestorePolicies: (state) => state.powerRestorePolicies, - }, - mutations: { - setPowerRestoreCurrentPolicy: (state, powerRestoreCurrentPolicy) => - (state.powerRestoreCurrentPolicy = powerRestoreCurrentPolicy), - setPowerRestorePolicies: (state, powerRestorePolicies) => - (state.powerRestorePolicies = powerRestorePolicies), - }, - actions: { - async getPowerRestorePolicies({ commit }) { - return await api - .get('/redfish/v1/JsonSchemas/ComputerSystem/ComputerSystem.json') - .then( - ({ - data: { - definitions: { PowerRestorePolicyTypes = {} }, - }, - }) => { - let powerPoliciesData = PowerRestorePolicyTypes.enum.map( - (powerState) => { - let desc = `${i18n.t( - `pagePowerRestorePolicy.policies.${powerState}` - )} - ${PowerRestorePolicyTypes.enumDescriptions[powerState]}`; - return { - state: powerState, - desc, - }; - } - ); - commit('setPowerRestorePolicies', powerPoliciesData); - } - ); - }, - async getPowerRestoreCurrentPolicy({ commit }) { - api - .get('/redfish/v1/Systems/system') - .then(({ data: { PowerRestorePolicy } }) => { - commit('setPowerRestoreCurrentPolicy', PowerRestorePolicy); - }) - .catch((error) => console.log(error)); - }, - async setPowerRestorePolicy({ commit }, powerPolicy) { - const data = { PowerRestorePolicy: powerPolicy }; - - return await api - .patch('/redfish/v1/Systems/system', data) - .then(() => - commit('setPowerRestoreCurrentPolicy', data.PowerRestorePolicy) - ) - .then(() => i18n.t('pagePowerRestorePolicy.toast.successSaveSettings')) - .catch((error) => { - console.log(error); - throw new Error( - i18n.t('pagePowerRestorePolicy.toast.errorSaveSettings') - ); - }); - }, - }, -}; - -export default PowerControlStore; diff --git a/src/store/modules/Control/VirtualMediaStore.js b/src/store/modules/Control/VirtualMediaStore.js deleted file mode 100644 index 7c183b0e..00000000 --- a/src/store/modules/Control/VirtualMediaStore.js +++ /dev/null @@ -1,105 +0,0 @@ -import api from '@/store/api'; -import i18n from '@/i18n'; - -const VirtualMediaStore = { - namespaced: true, - state: { - proxyDevices: [], - legacyDevices: [], - connections: [], - }, - getters: { - proxyDevices: (state) => state.proxyDevices, - legacyDevices: (state) => state.legacyDevices, - }, - mutations: { - setProxyDevicesData: (state, deviceData) => - (state.proxyDevices = deviceData), - setLegacyDevicesData: (state, deviceData) => - (state.legacyDevices = deviceData), - }, - actions: { - async getData({ commit }) { - const virtualMediaListEnabled = - process.env.VUE_APP_VIRTUAL_MEDIA_LIST_ENABLED === 'true' - ? true - : false; - if (!virtualMediaListEnabled) { - const device = { - id: i18n.t('pageVirtualMedia.defaultDeviceName'), - websocket: '/vm/0/0', - file: null, - transferProtocolType: 'OEM', - isActive: false, - }; - commit('setProxyDevicesData', [device]); - return; - } - - return await api - .get('/redfish/v1/Managers/bmc/VirtualMedia') - .then((response) => - response.data.Members.map((virtualMedia) => virtualMedia['@odata.id']) - ) - .then((devices) => api.all(devices.map((device) => api.get(device)))) - .then((devices) => { - const deviceData = devices.map((device) => { - const isActive = device.data?.Inserted === true ? true : false; - return { - id: device.data?.Id, - transferProtocolType: device.data?.TransferProtocolType, - websocket: device.data?.Oem?.OpenBMC?.WebSocketEndpoint, - isActive: isActive, - }; - }); - const proxyDevices = deviceData - .filter((d) => d.transferProtocolType === 'OEM') - .map((device) => { - return { - ...device, - file: null, - }; - }); - const legacyDevices = deviceData - .filter((d) => !d.transferProtocolType) - .map((device) => { - return { - ...device, - serverUri: '', - username: '', - password: '', - isRW: false, - }; - }); - commit('setProxyDevicesData', proxyDevices); - commit('setLegacyDevicesData', legacyDevices); - }) - .catch((error) => { - console.log('Virtual Media:', error); - }); - }, - async mountImage(_, { id, data }) { - return await api - .post( - `/redfish/v1/Managers/bmc/VirtualMedia/${id}/Actions/VirtualMedia.InsertMedia`, - data - ) - .catch((error) => { - console.log('Mount image:', error); - throw new Error(); - }); - }, - async unmountImage(_, id) { - return await api - .post( - `/redfish/v1/Managers/bmc/VirtualMedia/${id}/Actions/VirtualMedia.EjectMedia` - ) - .catch((error) => { - console.log('Unmount image:', error); - throw new Error(); - }); - }, - }, -}; - -export default VirtualMediaStore; |