summaryrefslogtreecommitdiff
path: root/src/store/modules
diff options
context:
space:
mode:
authorMateusz Gapski <mateuszx.gapski@intel.com>2020-07-30 12:01:29 +0300
committerDerick Montague <derick.montague@ibm.com>2020-08-28 22:59:16 +0300
commit75100469ab66851d84082b9651469901136f3d7e (patch)
tree68b0ad9e137b59c49eead11725dab773b0c4e80b /src/store/modules
parent21d6de005f8e6cbf3a9dcbf02b604b6359e2ac00 (diff)
downloadwebui-vue-75100469ab66851d84082b9651469901136f3d7e.tar.xz
Add VirtualMedia page
More info: https://github.com/openbmc/webui-vue/issues/7 Signed-off-by: Mateusz Gapski <mateuszx.gapski@intel.com> Change-Id: I68f2074e77301c68c425f1e661988c751224b713
Diffstat (limited to 'src/store/modules')
-rw-r--r--src/store/modules/Control/ControlStore.js2
-rw-r--r--src/store/modules/Control/VirtualMediaStore.js80
2 files changed, 81 insertions, 1 deletions
diff --git a/src/store/modules/Control/ControlStore.js b/src/store/modules/Control/ControlStore.js
index 82dbdcc1..c06ff4fc 100644
--- a/src/store/modules/Control/ControlStore.js
+++ b/src/store/modules/Control/ControlStore.js
@@ -1,4 +1,4 @@
-import api from '../../api';
+import api from '@/store/api';
import i18n from '../../../i18n';
/**
diff --git a/src/store/modules/Control/VirtualMediaStore.js b/src/store/modules/Control/VirtualMediaStore.js
new file mode 100644
index 00000000..e01cfce1
--- /dev/null
+++ b/src/store/modules/Control/VirtualMediaStore.js
@@ -0,0 +1,80 @@
+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;