summaryrefslogtreecommitdiff
path: root/src/store
diff options
context:
space:
mode:
authorDixsie Wolmers <dixsie@ibm.com>2020-01-23 04:47:56 +0300
committerYoshie Muranaka <yoshiemuranaka@gmail.com>2020-01-29 01:18:05 +0300
commitf65ee346bedb1811e88b12542abce0d18bb5fc32 (patch)
tree04b0a5cc2096a48b9c2b15dc571a1db680802c89 /src/store
parentdc04feb5596a85619e98d2d594b065e92c8b8fa4 (diff)
downloadwebui-vue-f65ee346bedb1811e88b12542abce0d18bb5fc32.tar.xz
Add store modules needed to support overview view
- Update overview page to get data from store Signed-off-by: Dixsie Wolmers <dixsie@ibm.com> Signed-off-by: Derick Montague <derick.montague@ibm.com> Change-Id: Id2fcad660efc0da5c7b878e872355bf5773c7ed7
Diffstat (limited to 'src/store')
-rw-r--r--src/store/index.js14
-rw-r--r--src/store/modules/Configuration/FirmwareStore.js60
-rw-r--r--src/store/modules/Configuration/NetworkSettingsStore.js48
-rw-r--r--src/store/modules/Control/PowerCapStore.js36
-rw-r--r--src/store/modules/Control/PowerConsumptionStore.js35
-rw-r--r--src/store/modules/GlobalStore.js30
-rw-r--r--src/store/modules/Health/EventLogStore.js72
-rw-r--r--src/store/modules/Overview/OverviewStore.js48
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;