diff options
Diffstat (limited to 'src/store')
-rw-r--r-- | src/store/index.js | 14 | ||||
-rw-r--r-- | src/store/modules/Configuration/FirmwareStore.js | 60 | ||||
-rw-r--r-- | src/store/modules/Configuration/NetworkSettingsStore.js | 48 | ||||
-rw-r--r-- | src/store/modules/Control/PowerCapStore.js | 36 | ||||
-rw-r--r-- | src/store/modules/Control/PowerConsumptionStore.js | 35 | ||||
-rw-r--r-- | src/store/modules/GlobalStore.js | 30 | ||||
-rw-r--r-- | src/store/modules/Health/EventLogStore.js | 72 | ||||
-rw-r--r-- | src/store/modules/Overview/OverviewStore.js | 48 |
8 files changed, 330 insertions, 13 deletions
diff --git a/src/store/index.js b/src/store/index.js index 889e52b4..cb63e545 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -4,6 +4,12 @@ import Vuex from 'vuex'; import GlobalStore from './modules/GlobalStore'; import AuthenticationStore from './modules/Authentication/AuthenticanStore'; import LocalUserManagementStore from './modules/AccessControl/LocalUserMangementStore'; +import OverviewStore from './modules/Overview/OverviewStore'; +import FirmwareStore from './modules/Configuration/FirmwareStore'; +import PowerConsumptionStore from './modules/Control/PowerConsumptionStore'; +import PowerCapStore from './modules/Control/PowerCapStore'; +import NetworkSettingStore from './modules/Configuration/NetworkSettingsStore'; +import EventLogStore from './modules/Health/EventLogStore'; import WebSocketPlugin from './plugins/WebSocketPlugin'; @@ -16,7 +22,13 @@ export default new Vuex.Store({ modules: { global: GlobalStore, authentication: AuthenticationStore, - localUsers: LocalUserManagementStore + localUsers: LocalUserManagementStore, + overview: OverviewStore, + firmware: FirmwareStore, + powerConsumption: PowerConsumptionStore, + powerCap: PowerCapStore, + networkSettings: NetworkSettingStore, + eventLog: EventLogStore }, plugins: [WebSocketPlugin] }); diff --git a/src/store/modules/Configuration/FirmwareStore.js b/src/store/modules/Configuration/FirmwareStore.js new file mode 100644 index 00000000..5185a138 --- /dev/null +++ b/src/store/modules/Configuration/FirmwareStore.js @@ -0,0 +1,60 @@ +import api from '../../api'; + +const FirmwareStore = { + namespaced: true, + state: { + firmwareInfo: null, + bmcActiveVersion: '--', + hostActiveVersion: '--' + }, + getters: { + firmwareInfo: state => state.firmwareInfo, + bmcActiveVersion: state => state.bmcActiveVersion, + hostActiveVersion: state => state.hostActiveVersion + }, + mutations: { + setFirmwareInfo: (state, firmwareInfo) => + (state.firmwareInfo = firmwareInfo), + setBmcActiveVersion: (state, bmcActiveVersion) => + (state.bmcActiveVersion = bmcActiveVersion), + setHostActiveVersion: (state, hostActiveVersion) => + (state.hostActiveVersion = hostActiveVersion) + }, + actions: { + getFirmwareInfo({ commit }) { + api + .get('/xyz/openbmc_project/software/enumerate') + .then(response => { + const firmwareInfo = response.data.data; + const functionalImages = + firmwareInfo['/xyz/openbmc_project/software/functional'].endpoints; + for (let key in firmwareInfo) { + /** + * If "Functional" activation status is + * functional, else it is "activation" + * github.com/openbmc/phosphor-dbus-interfaces/blob/master/xyz/openbmc_project/Software/Activation.interface.yaml + */ + if (firmwareInfo[key].hasOwnProperty('Version')) { + let activationStatus = ''; + const imageType = firmwareInfo[key].Purpose.split('.').pop(); + if (functionalImages.includes(key)) { + activationStatus = 'Functional'; + } + // Get BMC and Host active Versions + if (activationStatus == 'Functional' && imageType == 'BMC') { + commit('setBmcActiveVersion', firmwareInfo[key].Version); + } + if (activationStatus == 'Functional' && imageType == 'Host') { + commit('setHostActiveVersion', firmwareInfo[key].Version); + } + } + } + }) + .catch(error => { + console.log(error); + }); + } + } +}; + +export default FirmwareStore; diff --git a/src/store/modules/Configuration/NetworkSettingsStore.js b/src/store/modules/Configuration/NetworkSettingsStore.js new file mode 100644 index 00000000..ee58a77b --- /dev/null +++ b/src/store/modules/Configuration/NetworkSettingsStore.js @@ -0,0 +1,48 @@ +import api from '../../api'; + +const NetworkSettingsStore = { + namespaced: true, + state: { + networkData: null, + ipAddress: '--', + macAddress: '--' + }, + getters: { + networkData: state => state.networkData, + ipAddress: state => state.ipAddress, + macAddress: state => state.macAddress + }, + mutations: { + setNetworkData: (state, networkData) => (state.networkData = networkData), + setIpAddress: (state, ipAddress) => (state.ipAddress = ipAddress), + setMacAddress: (state, macAddress) => (state.macAddress = macAddress) + }, + actions: { + getNetworkData({ commit }) { + api + .get('/xyz/openbmc_project/network/enumerate') + .then(response => { + const networkData = response.data.data; + const ipAddresses = []; + const interfaceId = /eth[0-9]/; + for (let key in networkData) { + if (key.includes('ipv4')) { + ipAddresses.push(networkData[key].Address); + } + if ( + key.match(interfaceId) && + networkData[key].MACAddress !== undefined + ) { + commit('setMacAddress', networkData[key].MACAddress); + } + } + commit('setIpAddress', ipAddresses); + }) + .catch(error => { + console.log('Network Data:', error); + }); + } + } +}; + +export default NetworkSettingsStore; diff --git a/src/store/modules/Control/PowerCapStore.js b/src/store/modules/Control/PowerCapStore.js new file mode 100644 index 00000000..bef9f47b --- /dev/null +++ b/src/store/modules/Control/PowerCapStore.js @@ -0,0 +1,36 @@ +import api from '../../api'; + +const PowerCapStore = { + namespaced: true, + state: { + powerCapData: null, + powerCapValue: 'Not enabled' + }, + getters: { + powerCapData: state => state.powerCapData, + powerCapValue: state => state.powerCapValue + }, + mutations: { + setPowerCapData: (state, powerCapData) => + (state.powerCapData = powerCapData), + setPowerCapValue: (state, powerCapValue) => + (state.powerCapValue = powerCapValue) + }, + actions: { + getPowerCapData({ commit }) { + api + .get('/xyz/openbmc_project/control/host0/power_cap') + .then(response => { + const powerCapData = response.data.data; + if (powerCapData.PowerCapEnable) { + commit('setPowerCapValue', powerCapData.PowerCap + ' W'); + } + }) + .catch(error => { + console.log('Power cap error', error); + }); + } + } +}; + +export default PowerCapStore; diff --git a/src/store/modules/Control/PowerConsumptionStore.js b/src/store/modules/Control/PowerConsumptionStore.js new file mode 100644 index 00000000..03ccffce --- /dev/null +++ b/src/store/modules/Control/PowerConsumptionStore.js @@ -0,0 +1,35 @@ +import api from '../../api'; + +const PowerConsumptionStore = { + namespaced: true, + state: { + powerData: null, + powerConsumption: 'Not available' + }, + getters: { + powerData: state => state.powerData, + powerConsumption: state => state.powerConsumption + }, + mutations: { + setPowerData: (state, powerData) => (state.powerData = powerData), + setPowerConsumption: (state, powerConsumption) => + (state.powerConsumption = powerConsumption) + }, + actions: { + getPowerData({ commit }) { + api + .get('/xyz/openbmc_project/sensors/power/total_power') + .then(response => { + const powerData = response.data.data; + let powerConsumption = + powerData.Value * Math.pow(10, powerData.Scale) + ' W'; + commit('setPowerConsumption', powerConsumption); + }) + .catch(error => { + console.log('Power Consumption', error); + }); + } + } +}; + +export default PowerConsumptionStore; diff --git a/src/store/modules/GlobalStore.js b/src/store/modules/GlobalStore.js index 80d9c1a3..18d5043d 100644 --- a/src/store/modules/GlobalStore.js +++ b/src/store/modules/GlobalStore.js @@ -25,23 +25,19 @@ const GlobalStore = { namespaced: true, state: { hostName: '--', + bmcTime: null, hostStatus: 'unreachable' }, getters: { - hostName(state) { - return state.hostName; - }, - hostStatus(state) { - return state.hostStatus; - } + hostName: state => state.hostName, + hostStatus: state => state.hostStatus, + bmcTime: state => state.bmcTime }, mutations: { - setHostName(state, hostName) { - state.hostName = hostName; - }, - setHostStatus(state, hostState) { - state.hostStatus = hostStateMapper(hostState); - } + setHostName: (state, hostName) => (state.hostName = hostName), + setBmcTime: (state, bmcTime) => (state.bmcTime = bmcTime), + setHostStatus: (state, hostState) => + (state.hostState = hostStateMapper(hostState)) }, actions: { getHostName({ commit }) { @@ -53,6 +49,16 @@ const GlobalStore = { }) .catch(error => console.log(error)); }, + getBmcTime({ commit }) { + api + .get('/xyz/openbmc_project/time/bmc') + .then(response => { + // bmcTime is stored in microseconds, convert to millseconds + const bmcTime = response.data.data.Elapsed / 1000; + commit('setBmcTime', bmcTime); + }) + .catch(error => console.log(error)); + }, getHostStatus({ commit }) { api .get('/xyz/openbmc_project/state/host0/attr/CurrentHostState') diff --git a/src/store/modules/Health/EventLogStore.js b/src/store/modules/Health/EventLogStore.js new file mode 100644 index 00000000..404a9639 --- /dev/null +++ b/src/store/modules/Health/EventLogStore.js @@ -0,0 +1,72 @@ +import api from '../../api'; + +const severityToPriorityMap = { + Emergency: 'High', + Alert: 'High', + Critical: 'High', + Error: 'High', + Warning: 'Medium', + Notice: 'Low', + Debug: 'Low', + Informational: 'Low' +}; + +const EventLogStore = { + namespaced: true, + state: { + eventLogData: null + }, + getters: { + eventLogData: state => state.eventLogData + }, + mutations: { + setEventLogData: (state, eventLogData) => + (state.eventLogData = eventLogData) + }, + actions: { + getEventLogData({ commit }) { + api + .get('/xyz/openbmc_project/logging/enumerate') + .then(response => { + const eventLog = response.data.data; + const entryNumber = /[1-9]/; + const eventLogEntries = []; + /** + * Entry log endpoints: + * 'entry' + entry id contain event log entry information + * 'callout' contains part number and serial number for part affected + */ + for (let key in eventLog) { + // Check for event log entry: + if ( + key.includes('entry') && + key.match(entryNumber) && + !key.includes('callout') + ) { + const eventKey = eventLog[key]; + const eventSeverity = eventKey.Severity.split('.').pop(); + const eventPriority = severityToPriorityMap[eventSeverity]; + eventLogEntries.push( + Object.assign( + { + logId: eventKey.Id, + priority: eventPriority, + timestamp: eventKey.Timestamp, + eventID: eventKey.EventID, + description: eventKey.Description + }, + eventKey + ) + ); + commit('setEventLogData', eventLogEntries); + } + } + }) + .catch(error => { + console.log('Event Log Data:', error); + }); + } + } +}; + +export default EventLogStore; diff --git a/src/store/modules/Overview/OverviewStore.js b/src/store/modules/Overview/OverviewStore.js new file mode 100644 index 00000000..8d0613ad --- /dev/null +++ b/src/store/modules/Overview/OverviewStore.js @@ -0,0 +1,48 @@ +import api from '../../api'; + +const OverviewStore = { + namespaced: true, + state: { + serverInfo: null, + serverModel: '--', + serverManufacturer: '--', + serverSerialNumber: '--' + }, + getters: { + serverInfo: state => state.serverInfo, + serverModel: state => state.serverModel, + serverManufacturer: state => state.serverManufacturer, + serverSerialNumber: state => state.serverSerialNumber + }, + mutations: { + setServerInfo: (state, serverInfo) => (state.serverInfo = serverInfo), + setServerModel: (state, serverModel) => (state.serverModel = serverModel), + setServerManufacturer: (state, serverManufacturer) => + (state.serverManufacturer = serverManufacturer), + setServerSerialNumber: (state, serverSerialNumber) => + (state.serverSerialNumber = serverSerialNumber) + }, + actions: { + getServerInfo({ commit }) { + api + .get('/xyz/openbmc_project/inventory/system') + .then(response => { + const serverInfo = response.data.data; + if (serverInfo.Model) { + commit('setServerModel', serverInfo.Model); + } + if (serverInfo.SerialNumber) { + commit('setServerSerialNumber', serverInfo.SerialNumber); + } + if (serverInfo.Manufacturer) { + commit('setServerManufacturer', serverInfo.Manufacturer); + } + }) + .catch(error => { + console.log(error); + }); + } + } +}; + +export default OverviewStore; |