| import api from '@/store/api'; |
| import i18n from '@/i18n'; |
| |
| const transferProtocolType = { |
| CIFS: 'CIFS', |
| FTP: 'FTP', |
| SFTP: 'SFTP', |
| HTTP: 'HTTP', |
| HTTPS: 'HTTPS', |
| NFS: 'NFS', |
| SCP: 'SCP', |
| TFTP: 'TFTP', |
| OEM: 'OEM', |
| }; |
| |
| 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.global.t('pageVirtualMedia.defaultDeviceName'), |
| websocket: '/vm/0/0', |
| file: null, |
| transferProtocolType: transferProtocolType.OEM, |
| isActive: false, |
| }; |
| commit('setProxyDevicesData', [device]); |
| return; |
| } |
| |
| return await api |
| .get(`${await this.dispatch('global/getBmcPath')}/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 === transferProtocolType.OEM) |
| .map((device) => { |
| return { |
| ...device, |
| file: null, |
| }; |
| }); |
| const legacyDevices = deviceData |
| .filter((d) => d.transferProtocolType !== transferProtocolType.OEM) |
| .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( |
| `${await this.dispatch('global/getBmcPath')}/VirtualMedia/${id}/Actions/VirtualMedia.InsertMedia`, |
| data, |
| ) |
| .catch((error) => { |
| console.log('Mount image:', error); |
| throw new Error(); |
| }); |
| }, |
| async unmountImage(_, id) { |
| return await api |
| .post( |
| `${await this.dispatch('global/getBmcPath')}/VirtualMedia/${id}/Actions/VirtualMedia.EjectMedia`, |
| ) |
| .catch((error) => { |
| console.log('Unmount image:', error); |
| throw new Error(); |
| }); |
| }, |
| }, |
| }; |
| |
| export default VirtualMediaStore; |