xref: /openbmc/webui-vue/src/views/HardwareStatus/Inventory/InventoryTableBmcManager.vue (revision 223fe5b50ee91e95bb3d19b4ae379b99a86eb570)
17affc529SSandeepa Singh<template>
27affc529SSandeepa Singh  <page-section :section-title="$t('pageInventory.bmcManager')">
37affc529SSandeepa Singh    <b-table
47affc529SSandeepa Singh      responsive="md"
57affc529SSandeepa Singh      hover
67affc529SSandeepa Singh      :items="items"
77affc529SSandeepa Singh      :fields="fields"
87affc529SSandeepa Singh      show-empty
97affc529SSandeepa Singh      :empty-text="$t('global.table.emptyMessage')"
1041057853SKenneth Fullbright      :busy="isBusy"
117affc529SSandeepa Singh    >
127affc529SSandeepa Singh      <!-- Expand chevron icon -->
137affc529SSandeepa Singh      <template #cell(expandRow)="row">
147affc529SSandeepa Singh        <b-button
157affc529SSandeepa Singh          variant="link"
167affc529SSandeepa Singh          data-test-id="hardwareStatus-button-expandBmc"
177affc529SSandeepa Singh          :title="expandRowLabel"
187affc529SSandeepa Singh          class="btn-icon-only"
197affc529SSandeepa Singh          @click="toggleRowDetails(row)"
207affc529SSandeepa Singh        >
217affc529SSandeepa Singh          <icon-chevron />
227affc529SSandeepa Singh          <span class="sr-only">{{ expandRowLabel }}</span>
237affc529SSandeepa Singh        </b-button>
247affc529SSandeepa Singh      </template>
257affc529SSandeepa Singh
267affc529SSandeepa Singh      <!-- Health -->
277affc529SSandeepa Singh      <template #cell(health)="{ value }">
287affc529SSandeepa Singh        <status-icon :status="statusIcon(value)" />
297affc529SSandeepa Singh        {{ value }}
307affc529SSandeepa Singh      </template>
317affc529SSandeepa Singh
327affc529SSandeepa Singh      <!-- Toggle identify LED -->
337affc529SSandeepa Singh      <template #cell(identifyLed)="row">
347affc529SSandeepa Singh        <b-form-checkbox
357affc529SSandeepa Singh          v-if="hasIdentifyLed(row.item.identifyLed)"
367affc529SSandeepa Singh          v-model="row.item.identifyLed"
377affc529SSandeepa Singh          name="switch"
387affc529SSandeepa Singh          switch
397affc529SSandeepa Singh          @change="toggleIdentifyLedValue(row.item)"
407affc529SSandeepa Singh        >
417affc529SSandeepa Singh          <span v-if="row.item.identifyLed">
427affc529SSandeepa Singh            {{ $t('global.status.on') }}
437affc529SSandeepa Singh          </span>
447affc529SSandeepa Singh          <span v-else> {{ $t('global.status.off') }} </span>
457affc529SSandeepa Singh        </b-form-checkbox>
467affc529SSandeepa Singh        <div v-else>--</div>
477affc529SSandeepa Singh      </template>
487affc529SSandeepa Singh
497affc529SSandeepa Singh      <template #row-details="{ item }">
507affc529SSandeepa Singh        <b-container fluid>
517affc529SSandeepa Singh          <b-row>
527affc529SSandeepa Singh            <b-col class="mt-2" sm="6" xl="6">
537affc529SSandeepa Singh              <dl>
547affc529SSandeepa Singh                <!-- Name -->
557affc529SSandeepa Singh                <dt>{{ $t('pageInventory.table.name') }}:</dt>
569726f9a7SDixsie Wolmers                <dd>{{ dataFormatter(item.name) }}</dd>
577affc529SSandeepa Singh                <!-- Part number -->
587affc529SSandeepa Singh                <dt>{{ $t('pageInventory.table.partNumber') }}:</dt>
599726f9a7SDixsie Wolmers                <dd>{{ dataFormatter(item.partNumber) }}</dd>
607affc529SSandeepa Singh                <!-- Serial number -->
617affc529SSandeepa Singh                <dt>{{ $t('pageInventory.table.serialNumber') }}:</dt>
629726f9a7SDixsie Wolmers                <dd>{{ dataFormatter(item.serialNumber) }}</dd>
637affc529SSandeepa Singh                <!-- Spare part number -->
647affc529SSandeepa Singh                <dt>{{ $t('pageInventory.table.sparePartNumber') }}:</dt>
659726f9a7SDixsie Wolmers                <dd>{{ dataFormatter(item.sparePartNumber) }}</dd>
667affc529SSandeepa Singh                <!-- Model -->
677affc529SSandeepa Singh                <dt>{{ $t('pageInventory.table.model') }}:</dt>
689726f9a7SDixsie Wolmers                <dd>{{ dataFormatter(item.model) }}</dd>
697affc529SSandeepa Singh                <!-- UUID -->
707affc529SSandeepa Singh                <dt>{{ $t('pageInventory.table.uuid') }}:</dt>
719726f9a7SDixsie Wolmers                <dd>{{ dataFormatter(item.uuid) }}</dd>
727affc529SSandeepa Singh                <!-- Service entry point UUID -->
737affc529SSandeepa Singh                <dt>{{ $t('pageInventory.table.serviceEntryPointUuid') }}:</dt>
749726f9a7SDixsie Wolmers                <dd>{{ dataFormatter(item.serviceEntryPointUuid) }}</dd>
757affc529SSandeepa Singh              </dl>
767affc529SSandeepa Singh            </b-col>
777affc529SSandeepa Singh            <b-col class="mt-2" sm="6" xl="6">
787affc529SSandeepa Singh              <dl>
797affc529SSandeepa Singh                <!-- Status state -->
807affc529SSandeepa Singh                <dt>{{ $t('pageInventory.table.statusState') }}:</dt>
819726f9a7SDixsie Wolmers                <dd>{{ dataFormatter(item.statusState) }}</dd>
827affc529SSandeepa Singh                <!-- Power state -->
837affc529SSandeepa Singh                <dt>{{ $t('pageInventory.table.power') }}:</dt>
849726f9a7SDixsie Wolmers                <dd>{{ dataFormatter(item.powerState) }}</dd>
857affc529SSandeepa Singh                <!-- Health rollup -->
867affc529SSandeepa Singh                <dt>{{ $t('pageInventory.table.healthRollup') }}:</dt>
879726f9a7SDixsie Wolmers                <dd>{{ dataFormatter(item.healthRollup) }}</dd>
887affc529SSandeepa Singh                <!-- BMC date and time -->
897affc529SSandeepa Singh                <dt>{{ $t('pageInventory.table.bmcDateTime') }}:</dt>
907affc529SSandeepa Singh                <dd>
91*de23ea23SSurya V                  {{ $filters.formatDate(item.dateTime) }}
92*de23ea23SSurya V                  {{ $filters.formatTime(item.dateTime) }}
937affc529SSandeepa Singh                </dd>
947affc529SSandeepa Singh                <!-- Reset date and time -->
957affc529SSandeepa Singh                <dt>{{ $t('pageInventory.table.lastResetTime') }}:</dt>
967affc529SSandeepa Singh                <dd>
97*de23ea23SSurya V                  {{ $filters.formatDate(item.lastResetTime) }}
98*de23ea23SSurya V                  {{ $filters.formatTime(item.lastResetTime) }}
997affc529SSandeepa Singh                </dd>
1007affc529SSandeepa Singh              </dl>
1017affc529SSandeepa Singh            </b-col>
1027affc529SSandeepa Singh          </b-row>
1037affc529SSandeepa Singh          <div class="section-divider mb-3 mt-3"></div>
1047affc529SSandeepa Singh          <b-row>
1057affc529SSandeepa Singh            <b-col class="mt-2" sm="6" xl="6">
1067affc529SSandeepa Singh              <dl>
1077affc529SSandeepa Singh                <!-- Manufacturer -->
1087affc529SSandeepa Singh                <dt>{{ $t('pageInventory.table.manufacturer') }}:</dt>
1099726f9a7SDixsie Wolmers                <dd>{{ dataFormatter(item.manufacturer) }}</dd>
1107affc529SSandeepa Singh                <!-- Description -->
1117affc529SSandeepa Singh                <dt>{{ $t('pageInventory.table.description') }}:</dt>
1129726f9a7SDixsie Wolmers                <dd>{{ dataFormatter(item.description) }}</dd>
1137affc529SSandeepa Singh                <!-- Manager type -->
1147affc529SSandeepa Singh                <dt>{{ $t('pageInventory.table.managerType') }}:</dt>
1159726f9a7SDixsie Wolmers                <dd>{{ dataFormatter(item.managerType) }}</dd>
1167affc529SSandeepa Singh              </dl>
1177affc529SSandeepa Singh            </b-col>
1187affc529SSandeepa Singh            <b-col class="mt-2" sm="6" xl="6">
1197affc529SSandeepa Singh              <!-- Firmware Version  -->
1207affc529SSandeepa Singh              <dl>
1215287a8b4SSandeepa Singh                <dt>{{ $t('pageInventory.table.firmwareVersion') }}:</dt>
1227affc529SSandeepa Singh                <dd>{{ item.firmwareVersion }}</dd>
1237affc529SSandeepa Singh              </dl>
1247affc529SSandeepa Singh              <!-- Graphical console -->
1257affc529SSandeepa Singh              <p class="mt-1 mb-2 h6 float-none m-0">
1265287a8b4SSandeepa Singh                {{ $t('pageInventory.table.graphicalConsole') }}
1277affc529SSandeepa Singh              </p>
1287affc529SSandeepa Singh              <dl class="ml-4">
1297affc529SSandeepa Singh                <dt>{{ $t('pageInventory.table.connectTypesSupported') }}:</dt>
1307affc529SSandeepa Singh                <dd>
1319726f9a7SDixsie Wolmers                  {{ dataFormatterArray(item.graphicalConsoleConnectTypes) }}
1327affc529SSandeepa Singh                </dd>
1337affc529SSandeepa Singh                <dt>{{ $t('pageInventory.table.maxConcurrentSessions') }}:</dt>
1347affc529SSandeepa Singh                <dd>
1359726f9a7SDixsie Wolmers                  {{ dataFormatter(item.graphicalConsoleMaxSessions) }}
1367affc529SSandeepa Singh                </dd>
1377affc529SSandeepa Singh                <dt>{{ $t('pageInventory.table.serviceEnabled') }}:</dt>
1387affc529SSandeepa Singh                <dd>
1399726f9a7SDixsie Wolmers                  {{ dataFormatter(item.graphicalConsoleEnabled) }}
1407affc529SSandeepa Singh                </dd>
1417affc529SSandeepa Singh              </dl>
1427affc529SSandeepa Singh            </b-col>
1437affc529SSandeepa Singh          </b-row>
1447affc529SSandeepa Singh        </b-container>
1457affc529SSandeepa Singh      </template>
1467affc529SSandeepa Singh    </b-table>
1477affc529SSandeepa Singh  </page-section>
1487affc529SSandeepa Singh</template>
1497affc529SSandeepa Singh
1507affc529SSandeepa Singh<script>
1517affc529SSandeepa Singhimport PageSection from '@/components/Global/PageSection';
1527affc529SSandeepa Singhimport IconChevron from '@carbon/icons-vue/es/chevron--down/20';
1537affc529SSandeepa Singhimport StatusIcon from '@/components/Global/StatusIcon';
1547affc529SSandeepa Singhimport BVToastMixin from '@/components/Mixins/BVToastMixin';
1557affc529SSandeepa Singhimport TableRowExpandMixin, {
1567affc529SSandeepa Singh  expandRowLabel,
1577affc529SSandeepa Singh} from '@/components/Mixins/TableRowExpandMixin';
1589726f9a7SDixsie Wolmersimport DataFormatterMixin from '@/components/Mixins/DataFormatterMixin';
159*de23ea23SSurya Vimport { useI18n } from 'vue-i18n';
160*de23ea23SSurya Vimport i18n from '@/i18n';
1617affc529SSandeepa Singh
1627affc529SSandeepa Singhexport default {
1637affc529SSandeepa Singh  components: { IconChevron, PageSection, StatusIcon },
1649726f9a7SDixsie Wolmers  mixins: [BVToastMixin, TableRowExpandMixin, DataFormatterMixin],
1657affc529SSandeepa Singh  data() {
1667affc529SSandeepa Singh    return {
167*de23ea23SSurya V      $t: useI18n().t,
16841057853SKenneth Fullbright      isBusy: true,
1697affc529SSandeepa Singh      fields: [
1707affc529SSandeepa Singh        {
1717affc529SSandeepa Singh          key: 'expandRow',
1727affc529SSandeepa Singh          label: '',
1737affc529SSandeepa Singh          tdClass: 'table-row-expand',
1747affc529SSandeepa Singh        },
1757affc529SSandeepa Singh        {
1767affc529SSandeepa Singh          key: 'id',
177*de23ea23SSurya V          label: i18n.global.t('pageInventory.table.id'),
1789726f9a7SDixsie Wolmers          formatter: this.dataFormatter,
1797affc529SSandeepa Singh        },
1807affc529SSandeepa Singh        {
1817affc529SSandeepa Singh          key: 'health',
182*de23ea23SSurya V          label: i18n.global.t('pageInventory.table.health'),
1839726f9a7SDixsie Wolmers          formatter: this.dataFormatter,
1847affc529SSandeepa Singh        },
1857affc529SSandeepa Singh        {
1867affc529SSandeepa Singh          key: 'locationNumber',
187*de23ea23SSurya V          label: i18n.global.t('pageInventory.table.locationNumber'),
1889726f9a7SDixsie Wolmers          formatter: this.dataFormatter,
1897affc529SSandeepa Singh        },
1907affc529SSandeepa Singh        {
1917affc529SSandeepa Singh          key: 'identifyLed',
192*de23ea23SSurya V          label: i18n.global.t('pageInventory.table.identifyLed'),
1939726f9a7SDixsie Wolmers          formatter: this.dataFormatter,
1947affc529SSandeepa Singh        },
1957affc529SSandeepa Singh      ],
1967affc529SSandeepa Singh      expandRowLabel: expandRowLabel,
1977affc529SSandeepa Singh    };
1987affc529SSandeepa Singh  },
1997affc529SSandeepa Singh  computed: {
2007affc529SSandeepa Singh    bmc() {
2017affc529SSandeepa Singh      return this.$store.getters['bmc/bmc'];
2027affc529SSandeepa Singh    },
2037affc529SSandeepa Singh    items() {
2047affc529SSandeepa Singh      if (this.bmc) {
2057affc529SSandeepa Singh        return [this.bmc];
2067affc529SSandeepa Singh      } else {
2077affc529SSandeepa Singh        return [];
2087affc529SSandeepa Singh      }
2097affc529SSandeepa Singh    },
2107affc529SSandeepa Singh  },
2117affc529SSandeepa Singh  created() {
2127affc529SSandeepa Singh    this.$store.dispatch('bmc/getBmcInfo').finally(() => {
2137affc529SSandeepa Singh      // Emit initial data fetch complete to parent component
2147affc529SSandeepa Singh      this.$root.$emit('hardware-status-bmc-manager-complete');
21541057853SKenneth Fullbright      this.isBusy = false;
2167affc529SSandeepa Singh    });
2177affc529SSandeepa Singh  },
2187affc529SSandeepa Singh  methods: {
2197affc529SSandeepa Singh    toggleIdentifyLedValue(row) {
2207affc529SSandeepa Singh      this.$store
2217affc529SSandeepa Singh        .dispatch('bmc/updateIdentifyLedValue', {
2227affc529SSandeepa Singh          uri: row.uri,
2237affc529SSandeepa Singh          identifyLed: row.identifyLed,
2247affc529SSandeepa Singh        })
225f11a1901SNikhil Ashoka        .then((message) => this.successToast(message))
2267affc529SSandeepa Singh        .catch(({ message }) => this.errorToast(message));
2277affc529SSandeepa Singh    },
2287affc529SSandeepa Singh    // TO DO: remove hasIdentifyLed method once the following story is merged:
2297affc529SSandeepa Singh    // https://gerrit.openbmc-project.xyz/c/openbmc/bmcweb/+/43179
2307affc529SSandeepa Singh    hasIdentifyLed(identifyLed) {
2317affc529SSandeepa Singh      return typeof identifyLed === 'boolean';
2327affc529SSandeepa Singh    },
2337affc529SSandeepa Singh  },
2347affc529SSandeepa Singh};
2357affc529SSandeepa Singh</script>
236