summaryrefslogtreecommitdiff
path: root/src/store/modules/Configuration/FirmwareStore.js
blob: 5185a138580f876a6b4aa54e9ab231f819842676 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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;