| import api from '@/store/api'; |
| |
| const FanStore = { |
| namespaced: true, |
| state: { |
| fans: [], |
| }, |
| getters: { |
| fans: (state) => state.fans, |
| }, |
| mutations: { |
| setFanInfo: (state, data) => { |
| state.fans = data.map((fan) => { |
| const { |
| Id, |
| Name, |
| PartNumber, |
| SerialNumber, |
| SpeedPercent = {}, |
| Status = {}, |
| } = fan; |
| return { |
| id: Id, |
| health: Status.Health, |
| name: Name, |
| speed: SpeedPercent.Reading, |
| statusState: Status.State, |
| healthRollup: Status.HealthRollup, |
| partNumber: PartNumber, |
| serialNumber: SerialNumber, |
| }; |
| }); |
| }, |
| }, |
| actions: { |
| async getChassisCollection() { |
| return await api |
| .get('/redfish/v1/Chassis') |
| .then(({ data: { Members } }) => |
| api.all( |
| Members.map((member) => |
| api.get(member['@odata.id']).then((response) => response.data), |
| ), |
| ), |
| ) |
| .catch((error) => console.log(error)); |
| }, |
| async getFanInfo({ dispatch, commit }) { |
| const collection = await dispatch('getChassisCollection'); |
| if (!collection || collection.length === 0) return; |
| return await api |
| .all(collection.map((chassis) => dispatch('getChassisFans', chassis))) |
| .then((fansFromChassis) => commit('setFanInfo', fansFromChassis.flat())) |
| .catch((error) => console.log(error)); |
| }, |
| async getChassisFans(_, chassis) { |
| return await api |
| .get(chassis.ThermalSubsystem['@odata.id']) |
| .then((response) => { |
| return api.get(`${response.data.Fans['@odata.id']}`); |
| }) |
| .then(({ data: { Members } }) => { |
| const promises = Members.map((member) => |
| api.get(member['@odata.id']), |
| ); |
| return api.all(promises); |
| }) |
| .then((response) => { |
| const data = response.map(({ data }) => data); |
| return data; |
| }) |
| .catch((error) => console.log(error)); |
| }, |
| }, |
| }; |
| |
| export default FanStore; |