summaryrefslogtreecommitdiff
path: root/src/store/modules/Operations/VirtualMediaStore.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/store/modules/Operations/VirtualMediaStore.js')
-rw-r--r--src/store/modules/Operations/VirtualMediaStore.js105
1 files changed, 105 insertions, 0 deletions
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;