| import api from '@/store/api'; | 
 |  | 
 | const HOST_STATE = { | 
 |   on: 'xyz.openbmc_project.State.Host.HostState.Running', | 
 |   off: 'xyz.openbmc_project.State.Host.HostState.Off', | 
 |   error: 'xyz.openbmc_project.State.Host.HostState.Quiesced', | 
 |   diagnosticMode: 'xyz.openbmc_project.State.Host.HostState.DiagnosticMode', | 
 | }; | 
 |  | 
 | const serverStateMapper = (hostState) => { | 
 |   switch (hostState) { | 
 |     case HOST_STATE.on: | 
 |     case 'On': // Redfish PowerState | 
 |       return 'on'; | 
 |     case HOST_STATE.off: | 
 |     case 'Off': // Redfish PowerState | 
 |       return 'off'; | 
 |     case HOST_STATE.error: | 
 |     case 'Quiesced': // Redfish Status | 
 |       return 'error'; | 
 |     case HOST_STATE.diagnosticMode: | 
 |     case 'InTest': // Redfish Status | 
 |       return 'diagnosticMode'; | 
 |     default: | 
 |       return 'unreachable'; | 
 |   } | 
 | }; | 
 |  | 
 | const GlobalStore = { | 
 |   namespaced: true, | 
 |   state: { | 
 |     assetTag: null, | 
 |     bmcTime: null, | 
 |     modelType: null, | 
 |     serialNumber: null, | 
 |     serverStatus: 'unreachable', | 
 |     languagePreference: localStorage.getItem('storedLanguage') || 'en-US', | 
 |     isUtcDisplay: localStorage.getItem('storedUtcDisplay') | 
 |       ? JSON.parse(localStorage.getItem('storedUtcDisplay')) | 
 |       : true, | 
 |     username: localStorage.getItem('storedUsername'), | 
 |     isAuthorized: true, | 
 |     userPrivilege: null, | 
 |   }, | 
 |   getters: { | 
 |     assetTag: (state) => state.assetTag, | 
 |     modelType: (state) => state.modelType, | 
 |     serialNumber: (state) => state.serialNumber, | 
 |     serverStatus: (state) => state.serverStatus, | 
 |     bmcTime: (state) => state.bmcTime, | 
 |     languagePreference: (state) => state.languagePreference, | 
 |     isUtcDisplay: (state) => state.isUtcDisplay, | 
 |     username: (state) => state.username, | 
 |     isAuthorized: (state) => state.isAuthorized, | 
 |     userPrivilege: (state) => state.userPrivilege, | 
 |   }, | 
 |   mutations: { | 
 |     setAssetTag: (state, assetTag) => (state.assetTag = assetTag), | 
 |     setModelType: (state, modelType) => (state.modelType = modelType), | 
 |     setSerialNumber: (state, serialNumber) => | 
 |       (state.serialNumber = serialNumber), | 
 |     setBmcTime: (state, bmcTime) => (state.bmcTime = bmcTime), | 
 |     setServerStatus: (state, serverState) => | 
 |       (state.serverStatus = serverStateMapper(serverState)), | 
 |     setLanguagePreference: (state, language) => | 
 |       (state.languagePreference = language), | 
 |     setUsername: (state, username) => (state.username = username), | 
 |     setUtcTime: (state, isUtcDisplay) => (state.isUtcDisplay = isUtcDisplay), | 
 |     setUnauthorized: (state) => { | 
 |       state.isAuthorized = false; | 
 |       window.setTimeout(() => { | 
 |         state.isAuthorized = true; | 
 |       }, 100); | 
 |     }, | 
 |     setPrivilege: (state, privilege) => { | 
 |       state.userPrivilege = privilege; | 
 |     }, | 
 |   }, | 
 |   actions: { | 
 |     async getBmcPath() { | 
 |       const serviceRoot = await api | 
 |         .get('/redfish/v1') | 
 |         .catch((error) => console.log(error)); | 
 |       let bmcPath = serviceRoot.data?.ManagerProvidingService?.['@odata.id']; | 
 |       if (!bmcPath) { | 
 |         const managers = await api | 
 |           .get('/redfish/v1/Managers') | 
 |           .catch((error) => console.log(error)); | 
 |         bmcPath = managers.data?.Members?.[0]?.['@odata.id']; | 
 |       } | 
 |       return bmcPath; | 
 |     }, | 
 |     async getSystemPath() { | 
 |       const systems = await api | 
 |         .get('/redfish/v1/Systems') | 
 |         .catch((error) => console.log(error)); | 
 |       let systemPath = systems.data?.Members?.[0]?.['@odata.id']; | 
 |       return systemPath; | 
 |     }, | 
 |     async getBmcTime({ commit }) { | 
 |       return await api | 
 |         .get(`${await this.dispatch('global/getBmcPath')}`) | 
 |         .then((response) => { | 
 |           const bmcDateTime = response.data.DateTime; | 
 |           const date = new Date(bmcDateTime); | 
 |           commit('setBmcTime', date); | 
 |         }) | 
 |         .catch((error) => console.log(error)); | 
 |     }, | 
 |     async getSystemInfo({ commit }) { | 
 |       api | 
 |         .get(`${await this.dispatch('global/getSystemPath')}`) | 
 |         .then( | 
 |           ({ | 
 |             data: { | 
 |               AssetTag, | 
 |               Model, | 
 |               PowerState, | 
 |               SerialNumber, | 
 |               Status: { State } = {}, | 
 |             }, | 
 |           } = {}) => { | 
 |             commit('setAssetTag', AssetTag); | 
 |             commit('setSerialNumber', SerialNumber); | 
 |             commit('setModelType', Model); | 
 |             if (State === 'Quiesced' || State === 'InTest') { | 
 |               // OpenBMC's host state interface is mapped to 2 Redfish | 
 |               // properties "Status""State" and "PowerState". Look first | 
 |               // at State for certain cases. | 
 |               commit('setServerStatus', State); | 
 |             } else { | 
 |               commit('setServerStatus', PowerState); | 
 |             } | 
 |           }, | 
 |         ) | 
 |         .catch((error) => console.log(error)); | 
 |     }, | 
 |   }, | 
 | }; | 
 |  | 
 | export default GlobalStore; |