From 68cbbe9014cbdcf7229a878f564d38f6d6199f25 Mon Sep 17 00:00:00 2001 From: Sandeepa Singh Date: Wed, 14 Jul 2021 16:02:22 +0530 Subject: 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 Change-Id: I2e23da447890d7bee51892e1f782d5f2db6dded4 --- src/store/modules/Operations/VirtualMediaStore.js | 105 ++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 src/store/modules/Operations/VirtualMediaStore.js (limited to 'src/store/modules/Operations/VirtualMediaStore.js') diff --git a/src/store/modules/Operations/VirtualMediaStore.js b/src/store/modules/Operations/VirtualMediaStore.js new file mode 100644 index 00000000..7c183b0e --- /dev/null +++ b/src/store/modules/Operations/VirtualMediaStore.js @@ -0,0 +1,105 @@ +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; -- cgit v1.2.3