1<template>
2  <b-container fluid="xl">
3    <page-title />
4    <b-row>
5      <b-col md="8" lg="8" xl="6">
6        <page-section>
7          <b-row>
8            <b-col>
9              <dl>
10                <dt>
11                  {{ $t('pageRebootBmc.lastReboot') }}
12                </dt>
13                <dd v-if="lastBmcRebootTime">
14                  {{ lastBmcRebootTime | formatDate }}
15                  {{ lastBmcRebootTime | formatTime }}
16                </dd>
17                <dd v-else>--</dd>
18              </dl>
19            </b-col>
20          </b-row>
21          {{ $t('pageRebootBmc.rebootInformation') }}
22          <b-button
23            variant="primary"
24            class="d-block mt-5"
25            data-test-id="rebootBmc-button-reboot"
26            @click="onClick"
27          >
28            {{ $t('pageRebootBmc.rebootBmc') }}
29          </b-button>
30        </page-section>
31      </b-col>
32    </b-row>
33  </b-container>
34</template>
35
36<script>
37import PageTitle from '@/components/Global/PageTitle';
38import PageSection from '@/components/Global/PageSection';
39import BVToastMixin from '@/components/Mixins/BVToastMixin';
40import LoadingBarMixin from '@/components/Mixins/LoadingBarMixin';
41
42export default {
43  name: 'RebootBmc',
44  components: { PageTitle, PageSection },
45  mixins: [BVToastMixin, LoadingBarMixin],
46  beforeRouteLeave(to, from, next) {
47    this.hideLoader();
48    next();
49  },
50  computed: {
51    lastBmcRebootTime() {
52      return this.$store.getters['controls/lastBmcRebootTime'];
53    },
54  },
55  created() {
56    this.startLoader();
57    this.$store
58      .dispatch('controls/getLastBmcRebootTime')
59      .finally(() => this.endLoader());
60  },
61  methods: {
62    onClick() {
63      this.$bvModal
64        .msgBoxConfirm(this.$t('pageRebootBmc.modal.confirmMessage'), {
65          title: this.$t('pageRebootBmc.modal.confirmTitle'),
66          okTitle: this.$t('global.action.confirm'),
67          cancelTitle: this.$t('global.action.cancel'),
68          autoFocusButton: 'ok',
69        })
70        .then((confirmed) => {
71          if (confirmed) this.rebootBmc();
72        });
73    },
74    rebootBmc() {
75      this.$store
76        .dispatch('controls/rebootBmc')
77        .then((message) => this.successToast(message))
78        .catch(({ message }) => this.errorToast(message));
79    },
80  },
81};
82</script>
83
84<style lang="scss" scoped></style>
85