blob: 491dc7f92189b570642cb5fe76f044d7dc707dac [file] [log] [blame]
Yoshie Muranakafa1512b2020-02-25 15:54:07 -08001<template>
Yoshie Muranaka3111b6f2020-04-21 19:48:38 -07002 <b-container fluid="xl">
Yoshie Muranakafa1512b2020-02-25 15:54:07 -08003 <page-title />
Yoshie Muranakaf7aa7f92020-04-27 10:12:15 -07004 <b-row class="mb-4">
Yoshie Muranakac05ff642020-02-26 14:23:15 -08005 <b-col md="8" xl="6">
Yoshie Muranakafa1512b2020-02-25 15:54:07 -08006 <page-section
7 :section-title="$t('pageServerPowerOperations.currentStatus')"
8 >
Dixsie Wolmersbb316062020-08-04 19:17:33 -05009 <b-row>
10 <b-col>
11 <dl>
Derick Montague71114fe2021-05-06 18:17:34 -050012 <dt>{{ $t('pageServerPowerOperations.serverStatus') }}</dt>
SurenNeware84ea7ab2021-02-17 19:06:06 +053013 <dd
Derick Montague71114fe2021-05-06 18:17:34 -050014 v-if="serverStatus === 'on'"
SurenNeware84ea7ab2021-02-17 19:06:06 +053015 data-test-id="powerServerOps-text-hostStatus"
16 >
Dixsie Wolmersbb316062020-08-04 19:17:33 -050017 {{ $t('global.status.on') }}
18 </dd>
SurenNeware84ea7ab2021-02-17 19:06:06 +053019 <dd
Derick Montague71114fe2021-05-06 18:17:34 -050020 v-else-if="serverStatus === 'off'"
SurenNeware84ea7ab2021-02-17 19:06:06 +053021 data-test-id="powerServerOps-text-hostStatus"
22 >
Dixsie Wolmersbb316062020-08-04 19:17:33 -050023 {{ $t('global.status.off') }}
24 </dd>
glukhov.mikhailed7278a2022-09-26 11:17:57 +030025 <dd
26 v-else-if="serverStatus === 'diagnosticMode'"
27 data-test-id="powerServerOps-text-hostStatus"
28 >
29 {{ $t('global.status.diagnosticMode') }}
30 </dd>
Dixsie Wolmersbb316062020-08-04 19:17:33 -050031 <dd v-else>
32 {{ $t('global.status.notAvailable') }}
33 </dd>
34 </dl>
35 </b-col>
36 </b-row>
37 <b-row>
38 <b-col>
39 <dl>
40 <dt>
41 {{ $t('pageServerPowerOperations.lastPowerOperation') }}
42 </dt>
SurenNeware84ea7ab2021-02-17 19:06:06 +053043 <dd
44 v-if="lastPowerOperationTime"
45 data-test-id="powerServerOps-text-lastPowerOp"
46 >
Surya Vde23ea22024-07-11 15:19:46 +053047 {{ $filters.formatDate(lastPowerOperationTime) }}
48 {{ $filters.formatTime(lastPowerOperationTime) }}
Dixsie Wolmersbb316062020-08-04 19:17:33 -050049 </dd>
50 <dd v-else>--</dd>
51 </dl>
52 </b-col>
53 </b-row>
Yoshie Muranakafa1512b2020-02-25 15:54:07 -080054 </page-section>
55 </b-col>
56 </b-row>
57 <b-row>
Huy Le Anha5dbf552025-01-13 07:35:35 +000058 <b-col v-if="hasBootSourceOptions" sm="8" md="6" xl="4">
Yoshie Muranakac05ff642020-02-26 14:23:15 -080059 <page-section
Derick Montague71114fe2021-05-06 18:17:34 -050060 :section-title="$t('pageServerPowerOperations.serverBootSettings')"
Yoshie Muranakac05ff642020-02-26 14:23:15 -080061 >
62 <boot-settings />
63 </page-section>
64 </b-col>
65 <b-col sm="8" md="6" xl="7">
Yoshie Muranakafa1512b2020-02-25 15:54:07 -080066 <page-section
67 :section-title="$t('pageServerPowerOperations.operations')"
68 >
SurenNewaread8438b2020-08-20 18:32:28 +053069 <alert :show="oneTimeBootEnabled" variant="warning">
Yoshie Muranakac05ff642020-02-26 14:23:15 -080070 {{ $t('pageServerPowerOperations.oneTimeBootWarning') }}
SurenNewaread8438b2020-08-20 18:32:28 +053071 </alert>
Yoshie Muranakafa1512b2020-02-25 15:54:07 -080072 <template v-if="isOperationInProgress">
SurenNewaread8438b2020-08-20 18:32:28 +053073 <alert variant="info">
74 {{ $t('pageServerPowerOperations.operationInProgress') }}
75 </alert>
Yoshie Muranakafa1512b2020-02-25 15:54:07 -080076 </template>
Derick Montague71114fe2021-05-06 18:17:34 -050077 <template v-else-if="serverStatus === 'off'">
Sukanya Pandey8d29eb42020-07-17 12:42:46 +053078 <b-button
79 variant="primary"
80 data-test-id="serverPowerOperations-button-powerOn"
81 @click="powerOn"
82 >
Yoshie Muranakafa1512b2020-02-25 15:54:07 -080083 {{ $t('pageServerPowerOperations.powerOn') }}
84 </b-button>
85 </template>
Yoshie Muranakae9fc6122020-08-10 15:12:09 -070086 <template v-else>
Yoshie Muranakafa1512b2020-02-25 15:54:07 -080087 <!-- Reboot server options -->
88 <b-form novalidate class="mb-5" @submit.prevent="rebootServer">
89 <b-form-group
90 :label="$t('pageServerPowerOperations.rebootServer')"
91 >
92 <b-form-radio
93 v-model="form.rebootOption"
94 name="reboot-option"
Sukanya Pandey8d29eb42020-07-17 12:42:46 +053095 data-test-id="serverPowerOperations-radio-rebootOrderly"
Yoshie Muranakafa1512b2020-02-25 15:54:07 -080096 value="orderly"
97 >
Shubhi Garg918526f2024-09-19 17:08:28 +053098 {{ $t('pageServerPowerOperations.gracefulRestart') }}
99 <info-tooltip
100 :title="$t('pageServerPowerOperations.gracefulRestartInfo')"
101 />
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800102 </b-form-radio>
103 <b-form-radio
104 v-model="form.rebootOption"
105 name="reboot-option"
Sukanya Pandey8d29eb42020-07-17 12:42:46 +0530106 data-test-id="serverPowerOperations-radio-rebootImmediate"
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800107 value="immediate"
108 >
Shubhi Garg918526f2024-09-19 17:08:28 +0530109 {{ $t('pageServerPowerOperations.forceRestart') }}
110 <info-tooltip
111 :title="$t('pageServerPowerOperations.forceRestartInfo')"
112 />
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800113 </b-form-radio>
114 </b-form-group>
Sukanya Pandey8d29eb42020-07-17 12:42:46 +0530115 <b-button
116 variant="primary"
117 type="submit"
118 data-test-id="serverPowerOperations-button-reboot"
119 >
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800120 {{ $t('pageServerPowerOperations.reboot') }}
121 </b-button>
122 </b-form>
123 <!-- Shutdown server options -->
124 <b-form novalidate @submit.prevent="shutdownServer">
125 <b-form-group
126 :label="$t('pageServerPowerOperations.shutdownServer')"
127 >
128 <b-form-radio
129 v-model="form.shutdownOption"
130 name="shutdown-option"
Sukanya Pandey8d29eb42020-07-17 12:42:46 +0530131 data-test-id="serverPowerOperations-radio-shutdownOrderly"
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800132 value="orderly"
133 >
Shubhi Garg918526f2024-09-19 17:08:28 +0530134 {{ $t('pageServerPowerOperations.gracefulShutdown') }}
135 <info-tooltip
136 :title="
137 $t('pageServerPowerOperations.gracefulShutdownInfo')
138 "
139 />
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800140 </b-form-radio>
141 <b-form-radio
142 v-model="form.shutdownOption"
143 name="shutdown-option"
Sukanya Pandey8d29eb42020-07-17 12:42:46 +0530144 data-test-id="serverPowerOperations-radio-shutdownImmediate"
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800145 value="immediate"
146 >
Shubhi Garg918526f2024-09-19 17:08:28 +0530147 {{ $t('pageServerPowerOperations.forceOff') }}
148 <info-tooltip
149 :title="$t('pageServerPowerOperations.forceOffInfo')"
150 />
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800151 </b-form-radio>
152 </b-form-group>
Sukanya Pandey8d29eb42020-07-17 12:42:46 +0530153 <b-button
154 variant="primary"
155 type="submit"
156 data-test-id="serverPowerOperations-button-shutDown"
157 >
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800158 {{ $t('pageServerPowerOperations.shutDown') }}
159 </b-button>
160 </b-form>
161 </template>
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800162 </page-section>
163 </b-col>
164 </b-row>
165 </b-container>
166</template>
167
168<script>
SurenNewaread8438b2020-08-20 18:32:28 +0530169import PageTitle from '@/components/Global/PageTitle';
170import PageSection from '@/components/Global/PageSection';
171import BVToastMixin from '@/components/Mixins/BVToastMixin';
Yoshie Muranakac05ff642020-02-26 14:23:15 -0800172import BootSettings from './BootSettings';
Yoshie Muranaka5c977972020-04-30 09:48:23 -0700173import LoadingBarMixin from '@/components/Mixins/LoadingBarMixin';
SurenNewaread8438b2020-08-20 18:32:28 +0530174import Alert from '@/components/Global/Alert';
Shubhi Garg918526f2024-09-19 17:08:28 +0530175import InfoTooltip from '@/components/Global/InfoTooltip';
Surya Vde23ea22024-07-11 15:19:46 +0530176import { useI18n } from 'vue-i18n';
177import i18n from '@/i18n';
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800178
179export default {
180 name: 'ServerPowerOperations',
Shubhi Garg918526f2024-09-19 17:08:28 +0530181 components: { PageTitle, PageSection, BootSettings, Alert, InfoTooltip },
Yoshie Muranaka5c977972020-04-30 09:48:23 -0700182 mixins: [BVToastMixin, LoadingBarMixin],
Derick Montague602e98a2020-10-21 16:20:00 -0500183 beforeRouteLeave(to, from, next) {
184 this.hideLoader();
185 next();
186 },
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800187 data() {
188 return {
Surya Vde23ea22024-07-11 15:19:46 +0530189 $t: useI18n().t,
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800190 form: {
191 rebootOption: 'orderly',
Derick Montague602e98a2020-10-21 16:20:00 -0500192 shutdownOption: 'orderly',
193 },
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800194 };
195 },
196 computed: {
Derick Montague71114fe2021-05-06 18:17:34 -0500197 serverStatus() {
198 return this.$store.getters['global/serverStatus'];
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800199 },
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800200 isOperationInProgress() {
201 return this.$store.getters['controls/isOperationInProgress'];
Yoshie Muranakac05ff642020-02-26 14:23:15 -0800202 },
Dixsie Wolmersbb316062020-08-04 19:17:33 -0500203 lastPowerOperationTime() {
204 return this.$store.getters['controls/lastPowerOperationTime'];
205 },
Yoshie Muranakac05ff642020-02-26 14:23:15 -0800206 oneTimeBootEnabled() {
Derick Montague71114fe2021-05-06 18:17:34 -0500207 return this.$store.getters['serverBootSettings/overrideEnabled'];
Derick Montague602e98a2020-10-21 16:20:00 -0500208 },
Sukanya Pandey7f6edb62021-03-30 19:49:08 +0530209 hasBootSourceOptions() {
Ed Tanous81323992024-02-27 11:26:24 -0800210 let bootOptions =
211 this.$store.getters['serverBootSettings/bootSourceOptions'];
Sukanya Pandey7f6edb62021-03-30 19:49:08 +0530212 return bootOptions.length !== 0;
213 },
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800214 },
Yoshie Muranaka5c977972020-04-30 09:48:23 -0700215 created() {
216 this.startLoader();
Derick Montague602e98a2020-10-21 16:20:00 -0500217 const bootSettingsPromise = new Promise((resolve) => {
Sukanya Pandeyedb8a772020-10-29 11:33:42 +0530218 this.$root.$on('server-power-operations-boot-settings-complete', () =>
Ed Tanous81323992024-02-27 11:26:24 -0800219 resolve(),
Dixsie Wolmersbb316062020-08-04 19:17:33 -0500220 );
221 });
222 Promise.all([
Derick Montague71114fe2021-05-06 18:17:34 -0500223 this.$store.dispatch('serverBootSettings/getBootSettings'),
Dixsie Wolmersbb316062020-08-04 19:17:33 -0500224 this.$store.dispatch('controls/getLastPowerOperationTime'),
Derick Montague602e98a2020-10-21 16:20:00 -0500225 bootSettingsPromise,
Dixsie Wolmersbb316062020-08-04 19:17:33 -0500226 ]).finally(() => this.endLoader());
Yoshie Muranaka5c977972020-04-30 09:48:23 -0700227 },
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800228 methods: {
229 powerOn() {
Derick Montague71114fe2021-05-06 18:17:34 -0500230 this.$store.dispatch('controls/serverPowerOn');
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800231 },
232 rebootServer() {
Surya Vde23ea22024-07-11 15:19:46 +0530233 const modalMessage = i18n.global.t(
Ed Tanous81323992024-02-27 11:26:24 -0800234 'pageServerPowerOperations.modal.confirmRebootMessage',
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800235 );
236 const modalOptions = {
Surya Vde23ea22024-07-11 15:19:46 +0530237 title: i18n.global.t(
238 'pageServerPowerOperations.modal.confirmRebootTitle',
239 ),
240 okTitle: i18n.global.t('global.action.confirm'),
241 cancelTitle: i18n.global.t('global.action.cancel'),
Paul Fertserd1ef18e2024-04-06 08:04:14 +0000242 autoFocusButton: 'ok',
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800243 };
244
245 if (this.form.rebootOption === 'orderly') {
246 this.$bvModal
247 .msgBoxConfirm(modalMessage, modalOptions)
Derick Montague602e98a2020-10-21 16:20:00 -0500248 .then((confirmed) => {
Derick Montague71114fe2021-05-06 18:17:34 -0500249 if (confirmed) this.$store.dispatch('controls/serverSoftReboot');
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800250 });
251 } else if (this.form.rebootOption === 'immediate') {
252 this.$bvModal
253 .msgBoxConfirm(modalMessage, modalOptions)
Derick Montague602e98a2020-10-21 16:20:00 -0500254 .then((confirmed) => {
Derick Montague71114fe2021-05-06 18:17:34 -0500255 if (confirmed) this.$store.dispatch('controls/serverHardReboot');
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800256 });
257 }
258 },
259 shutdownServer() {
Surya Vde23ea22024-07-11 15:19:46 +0530260 const modalMessage = i18n.global.t(
Ed Tanous81323992024-02-27 11:26:24 -0800261 'pageServerPowerOperations.modal.confirmShutdownMessage',
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800262 );
263 const modalOptions = {
Surya Vde23ea22024-07-11 15:19:46 +0530264 title: i18n.global.t(
265 'pageServerPowerOperations.modal.confirmShutdownTitle',
266 ),
267 okTitle: i18n.global.t('global.action.confirm'),
268 cancelTitle: i18n.global.t('global.action.cancel'),
Paul Fertserd1ef18e2024-04-06 08:04:14 +0000269 autoFocusButton: 'ok',
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800270 };
271
272 if (this.form.shutdownOption === 'orderly') {
273 this.$bvModal
274 .msgBoxConfirm(modalMessage, modalOptions)
Derick Montague602e98a2020-10-21 16:20:00 -0500275 .then((confirmed) => {
Derick Montague71114fe2021-05-06 18:17:34 -0500276 if (confirmed) this.$store.dispatch('controls/serverSoftPowerOff');
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800277 });
278 }
279 if (this.form.shutdownOption === 'immediate') {
280 this.$bvModal
281 .msgBoxConfirm(modalMessage, modalOptions)
Derick Montague602e98a2020-10-21 16:20:00 -0500282 .then((confirmed) => {
Derick Montague71114fe2021-05-06 18:17:34 -0500283 if (confirmed) this.$store.dispatch('controls/serverHardPowerOff');
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800284 });
285 }
Derick Montague602e98a2020-10-21 16:20:00 -0500286 },
287 },
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800288};
289</script>