From dc3fa2e0382145126101dc6df04d0338a119824f Mon Sep 17 00:00:00 2001 From: SurenNeware Date: Tue, 4 Aug 2020 20:45:25 +0530 Subject: Add processors to hardware status page -Add processors status from given API. -Created seperate table with all available details. Signed-off-by: Suren Neware Change-Id: Iae4346cd0555a9a7d8ec35c0f56f8bce6c4ab653 --- src/locales/en-US.json | 6 + src/store/index.js | 4 +- src/store/modules/Health/ProcessorStore.js | 61 +++++++++ src/views/Health/HardwareStatus/HardwareStatus.vue | 13 +- .../HardwareStatusTableProcessors.vue | 149 +++++++++++++++++++++ 5 files changed, 230 insertions(+), 3 deletions(-) create mode 100644 src/store/modules/Health/ProcessorStore.js create mode 100644 src/views/Health/HardwareStatus/HardwareStatusTableProcessors.vue diff --git a/src/locales/en-US.json b/src/locales/en-US.json index 59705602..0fde2536 100644 --- a/src/locales/en-US.json +++ b/src/locales/en-US.json @@ -242,6 +242,7 @@ "powerSupplies": "Power supplies", "bmcManager": "BMC manager", "chassis": "Chassis", + "processors": "Processors", "system": "System", "table": { "assetTag": "Asset tag", @@ -254,12 +255,16 @@ "health": "Health", "id": "ID", "indicatorLed": "Indicator LED", + "instructionSet": "Instruction set", "manufacturer": "Manufacturer", "maxConcurrentSessions": "Max concurrent sessions", "model": "Model", + "name": "Name", "partNumber": "Part number", "powerInputWatts": "Power input watts", "powerState": "Power state", + "processorArchitecture": "Architecture", + "processorType": "Type", "serialConsole": "Serial console", "serialNumber": "Serial number", "serviceEnabled": "Service enabled", @@ -267,6 +272,7 @@ "statusHealthRollup": "Status (Health rollup)", "statusState": "Status (State)", "systemType": "System type", + "totalCores": "Total cores", "uuid": "UUID" } }, diff --git a/src/store/index.js b/src/store/index.js index 392344d0..2e7c97aa 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -20,6 +20,7 @@ import MemoryStore from './modules/Health/MemoryStore'; import FanStore from './modules/Health/FanStore'; import ChassisStore from './modules/Health/ChassisStore'; import BmcStore from './modules/Health/BmcStore'; +import ProcessorStore from './modules/Health/ProcessorStore'; import WebSocketPlugin from './plugins/WebSocketPlugin'; import DateTimeStore from './modules/Configuration/DateTimeSettingsStore'; @@ -50,7 +51,8 @@ export default new Vuex.Store({ memory: MemoryStore, fan: FanStore, chassis: ChassisStore, - bmc: BmcStore + bmc: BmcStore, + processors: ProcessorStore }, plugins: [WebSocketPlugin] }); diff --git a/src/store/modules/Health/ProcessorStore.js b/src/store/modules/Health/ProcessorStore.js new file mode 100644 index 00000000..8680f652 --- /dev/null +++ b/src/store/modules/Health/ProcessorStore.js @@ -0,0 +1,61 @@ +import api from '@/store/api'; + +const ProcessorStore = { + namespaced: true, + state: { + processors: null + }, + getters: { + processors: state => state.processors + }, + mutations: { + setProcessorsInfo: (state, data) => { + state.processors = data.map(processor => { + const { + Id, + Status = {}, + PartNumber, + SerialNumber, + InstructionSet, + Manufacturer, + Model, + Name, + ProcessorArchitecture, + ProcessorType, + TotalCores + } = processor; + return { + id: Id, + health: Status.Health, + partNumber: PartNumber, + serialNumber: SerialNumber, + statusState: Status.State, + instructionSet: InstructionSet, + manufacturer: Manufacturer, + model: Model, + name: Name, + processorArchitecture: ProcessorArchitecture, + processorType: ProcessorType, + totalCores: TotalCores + }; + }); + } + }, + actions: { + async getProcessorsInfo({ commit }) { + return await api + .get('/redfish/v1/Systems/system/Processors') + .then(({ data: { Members = [] } }) => + Members.map(member => api.get(member['@odata.id'])) + ) + .then(promises => api.all(promises)) + .then(response => { + const data = response.map(({ data }) => data); + commit('setProcessorsInfo', data); + }) + .catch(error => console.log(error)); + } + } +}; + +export default ProcessorStore; diff --git a/src/views/Health/HardwareStatus/HardwareStatus.vue b/src/views/Health/HardwareStatus/HardwareStatus.vue index 364baad2..fb203381 100644 --- a/src/views/Health/HardwareStatus/HardwareStatus.vue +++ b/src/views/Health/HardwareStatus/HardwareStatus.vue @@ -19,6 +19,9 @@ + + + @@ -30,6 +33,7 @@ import TableDimmSlot from './HardwareStatusTableDimmSlot'; import TableFans from './HardwareStatusTableFans'; import TableBmcManager from './HardwareStatusTableBmcManager'; import TableChassis from './HardwareStatusTableChassis'; +import TableProcessors from './HardwareStatusTableProcessors'; import LoadingBarMixin from '@/components/Mixins/LoadingBarMixin'; export default { @@ -40,7 +44,8 @@ export default { TableSystem, TableFans, TableBmcManager, - TableChassis + TableChassis, + TableProcessors }, mixins: [LoadingBarMixin], created() { @@ -65,6 +70,9 @@ export default { resolve() ); }); + const processorsTablePromise = new Promise(resolve => { + this.$root.$on('hardwareStatus::processors::complete', () => resolve()); + }); // Combine all child component Promises to indicate // when page data load complete Promise.all([ @@ -73,7 +81,8 @@ export default { chassisTablePromise, dimmSlotTablePromise, fansTablePromise, - powerSuppliesTablePromise + powerSuppliesTablePromise, + processorsTablePromise ]).finally(() => this.endLoader()); }, beforeRouteLeave(to, from, next) { diff --git a/src/views/Health/HardwareStatus/HardwareStatusTableProcessors.vue b/src/views/Health/HardwareStatus/HardwareStatusTableProcessors.vue new file mode 100644 index 00000000..dad3ac8e --- /dev/null +++ b/src/views/Health/HardwareStatus/HardwareStatusTableProcessors.vue @@ -0,0 +1,149 @@ + + + -- cgit v1.2.3