| import api from '../../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 => { |
| return { |
| id: device.data?.Id, |
| transferProtocolType: device.data?.TransferProtocolType, |
| websocket: device.data?.Oem?.OpenBMC?.WebSocketEndpoint |
| }; |
| }); |
| const proxyDevices = deviceData |
| .filter(d => d.transferProtocolType === 'OEM') |
| .map(device => { |
| return { |
| ...device, |
| file: null, |
| isActive: false |
| }; |
| }); |
| const legacyDevices = deviceData |
| .filter(d => !d.transferProtocolType) |
| .map(device => { |
| return { |
| ...device, |
| address: '' |
| }; |
| }); |
| commit('setProxyDevicesData', proxyDevices); |
| commit('setLegacyDevicesData', legacyDevices); |
| }) |
| .catch(error => { |
| console.log('Virtual Media:', error); |
| }); |
| } |
| } |
| }; |
| |
| export default VirtualMediaStore; |