| 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; |