blob: 9c36f2431267e2e2790cc79876a5b677b4feb859 [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>
Shubhi Garg918526f2024-09-19 17:08:28 +053058 <b-col
59 v-if="hasBootSourceOptions && oneTimeBootEnabled"
60 sm="8"
61 md="6"
62 xl="4"
63 >
Yoshie Muranakac05ff642020-02-26 14:23:15 -080064 <page-section
Derick Montague71114fe2021-05-06 18:17:34 -050065 :section-title="$t('pageServerPowerOperations.serverBootSettings')"
Yoshie Muranakac05ff642020-02-26 14:23:15 -080066 >
67 <boot-settings />
68 </page-section>
69 </b-col>
70 <b-col sm="8" md="6" xl="7">
Yoshie Muranakafa1512b2020-02-25 15:54:07 -080071 <page-section
72 :section-title="$t('pageServerPowerOperations.operations')"
73 >
SurenNewaread8438b2020-08-20 18:32:28 +053074 <alert :show="oneTimeBootEnabled" variant="warning">
Yoshie Muranakac05ff642020-02-26 14:23:15 -080075 {{ $t('pageServerPowerOperations.oneTimeBootWarning') }}
SurenNewaread8438b2020-08-20 18:32:28 +053076 </alert>
Yoshie Muranakafa1512b2020-02-25 15:54:07 -080077 <template v-if="isOperationInProgress">
SurenNewaread8438b2020-08-20 18:32:28 +053078 <alert variant="info">
79 {{ $t('pageServerPowerOperations.operationInProgress') }}
80 </alert>
Yoshie Muranakafa1512b2020-02-25 15:54:07 -080081 </template>
Derick Montague71114fe2021-05-06 18:17:34 -050082 <template v-else-if="serverStatus === 'off'">
Sukanya Pandey8d29eb42020-07-17 12:42:46 +053083 <b-button
84 variant="primary"
85 data-test-id="serverPowerOperations-button-powerOn"
86 @click="powerOn"
87 >
Yoshie Muranakafa1512b2020-02-25 15:54:07 -080088 {{ $t('pageServerPowerOperations.powerOn') }}
89 </b-button>
90 </template>
Yoshie Muranakae9fc6122020-08-10 15:12:09 -070091 <template v-else>
Yoshie Muranakafa1512b2020-02-25 15:54:07 -080092 <!-- Reboot server options -->
93 <b-form novalidate class="mb-5" @submit.prevent="rebootServer">
94 <b-form-group
95 :label="$t('pageServerPowerOperations.rebootServer')"
96 >
97 <b-form-radio
98 v-model="form.rebootOption"
99 name="reboot-option"
Sukanya Pandey8d29eb42020-07-17 12:42:46 +0530100 data-test-id="serverPowerOperations-radio-rebootOrderly"
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800101 value="orderly"
102 >
Shubhi Garg918526f2024-09-19 17:08:28 +0530103 {{ $t('pageServerPowerOperations.gracefulRestart') }}
104 <info-tooltip
105 :title="$t('pageServerPowerOperations.gracefulRestartInfo')"
106 />
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800107 </b-form-radio>
108 <b-form-radio
109 v-model="form.rebootOption"
110 name="reboot-option"
Sukanya Pandey8d29eb42020-07-17 12:42:46 +0530111 data-test-id="serverPowerOperations-radio-rebootImmediate"
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800112 value="immediate"
113 >
Shubhi Garg918526f2024-09-19 17:08:28 +0530114 {{ $t('pageServerPowerOperations.forceRestart') }}
115 <info-tooltip
116 :title="$t('pageServerPowerOperations.forceRestartInfo')"
117 />
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800118 </b-form-radio>
119 </b-form-group>
Sukanya Pandey8d29eb42020-07-17 12:42:46 +0530120 <b-button
121 variant="primary"
122 type="submit"
123 data-test-id="serverPowerOperations-button-reboot"
124 >
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800125 {{ $t('pageServerPowerOperations.reboot') }}
126 </b-button>
127 </b-form>
128 <!-- Shutdown server options -->
129 <b-form novalidate @submit.prevent="shutdownServer">
130 <b-form-group
131 :label="$t('pageServerPowerOperations.shutdownServer')"
132 >
133 <b-form-radio
134 v-model="form.shutdownOption"
135 name="shutdown-option"
Sukanya Pandey8d29eb42020-07-17 12:42:46 +0530136 data-test-id="serverPowerOperations-radio-shutdownOrderly"
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800137 value="orderly"
138 >
Shubhi Garg918526f2024-09-19 17:08:28 +0530139 {{ $t('pageServerPowerOperations.gracefulShutdown') }}
140 <info-tooltip
141 :title="
142 $t('pageServerPowerOperations.gracefulShutdownInfo')
143 "
144 />
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800145 </b-form-radio>
146 <b-form-radio
147 v-model="form.shutdownOption"
148 name="shutdown-option"
Sukanya Pandey8d29eb42020-07-17 12:42:46 +0530149 data-test-id="serverPowerOperations-radio-shutdownImmediate"
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800150 value="immediate"
151 >
Shubhi Garg918526f2024-09-19 17:08:28 +0530152 {{ $t('pageServerPowerOperations.forceOff') }}
153 <info-tooltip
154 :title="$t('pageServerPowerOperations.forceOffInfo')"
155 />
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800156 </b-form-radio>
157 </b-form-group>
Sukanya Pandey8d29eb42020-07-17 12:42:46 +0530158 <b-button
159 variant="primary"
160 type="submit"
161 data-test-id="serverPowerOperations-button-shutDown"
162 >
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800163 {{ $t('pageServerPowerOperations.shutDown') }}
164 </b-button>
165 </b-form>
166 </template>
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800167 </page-section>
168 </b-col>
169 </b-row>
170 </b-container>
171</template>
172
173<script>
SurenNewaread8438b2020-08-20 18:32:28 +0530174import PageTitle from '@/components/Global/PageTitle';
175import PageSection from '@/components/Global/PageSection';
176import BVToastMixin from '@/components/Mixins/BVToastMixin';
Yoshie Muranakac05ff642020-02-26 14:23:15 -0800177import BootSettings from './BootSettings';
Yoshie Muranaka5c977972020-04-30 09:48:23 -0700178import LoadingBarMixin from '@/components/Mixins/LoadingBarMixin';
SurenNewaread8438b2020-08-20 18:32:28 +0530179import Alert from '@/components/Global/Alert';
Shubhi Garg918526f2024-09-19 17:08:28 +0530180import InfoTooltip from '@/components/Global/InfoTooltip';
Surya Vde23ea22024-07-11 15:19:46 +0530181import { useI18n } from 'vue-i18n';
182import i18n from '@/i18n';
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800183
184export default {
185 name: 'ServerPowerOperations',
Shubhi Garg918526f2024-09-19 17:08:28 +0530186 components: { PageTitle, PageSection, BootSettings, Alert, InfoTooltip },
Yoshie Muranaka5c977972020-04-30 09:48:23 -0700187 mixins: [BVToastMixin, LoadingBarMixin],
Derick Montague602e98a2020-10-21 16:20:00 -0500188 beforeRouteLeave(to, from, next) {
189 this.hideLoader();
190 next();
191 },
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800192 data() {
193 return {
Surya Vde23ea22024-07-11 15:19:46 +0530194 $t: useI18n().t,
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800195 form: {
196 rebootOption: 'orderly',
Derick Montague602e98a2020-10-21 16:20:00 -0500197 shutdownOption: 'orderly',
198 },
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800199 };
200 },
201 computed: {
Derick Montague71114fe2021-05-06 18:17:34 -0500202 serverStatus() {
203 return this.$store.getters['global/serverStatus'];
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800204 },
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800205 isOperationInProgress() {
206 return this.$store.getters['controls/isOperationInProgress'];
Yoshie Muranakac05ff642020-02-26 14:23:15 -0800207 },
Dixsie Wolmersbb316062020-08-04 19:17:33 -0500208 lastPowerOperationTime() {
209 return this.$store.getters['controls/lastPowerOperationTime'];
210 },
Yoshie Muranakac05ff642020-02-26 14:23:15 -0800211 oneTimeBootEnabled() {
Derick Montague71114fe2021-05-06 18:17:34 -0500212 return this.$store.getters['serverBootSettings/overrideEnabled'];
Derick Montague602e98a2020-10-21 16:20:00 -0500213 },
Sukanya Pandey7f6edb62021-03-30 19:49:08 +0530214 hasBootSourceOptions() {
Ed Tanous81323992024-02-27 11:26:24 -0800215 let bootOptions =
216 this.$store.getters['serverBootSettings/bootSourceOptions'];
Sukanya Pandey7f6edb62021-03-30 19:49:08 +0530217 return bootOptions.length !== 0;
218 },
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800219 },
Yoshie Muranaka5c977972020-04-30 09:48:23 -0700220 created() {
221 this.startLoader();
Derick Montague602e98a2020-10-21 16:20:00 -0500222 const bootSettingsPromise = new Promise((resolve) => {
Sukanya Pandeyedb8a772020-10-29 11:33:42 +0530223 this.$root.$on('server-power-operations-boot-settings-complete', () =>
Ed Tanous81323992024-02-27 11:26:24 -0800224 resolve(),
Dixsie Wolmersbb316062020-08-04 19:17:33 -0500225 );
226 });
227 Promise.all([
Derick Montague71114fe2021-05-06 18:17:34 -0500228 this.$store.dispatch('serverBootSettings/getBootSettings'),
Dixsie Wolmersbb316062020-08-04 19:17:33 -0500229 this.$store.dispatch('controls/getLastPowerOperationTime'),
Derick Montague602e98a2020-10-21 16:20:00 -0500230 bootSettingsPromise,
Dixsie Wolmersbb316062020-08-04 19:17:33 -0500231 ]).finally(() => this.endLoader());
Yoshie Muranaka5c977972020-04-30 09:48:23 -0700232 },
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800233 methods: {
234 powerOn() {
Derick Montague71114fe2021-05-06 18:17:34 -0500235 this.$store.dispatch('controls/serverPowerOn');
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800236 },
237 rebootServer() {
Surya Vde23ea22024-07-11 15:19:46 +0530238 const modalMessage = i18n.global.t(
Ed Tanous81323992024-02-27 11:26:24 -0800239 'pageServerPowerOperations.modal.confirmRebootMessage',
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800240 );
241 const modalOptions = {
Surya Vde23ea22024-07-11 15:19:46 +0530242 title: i18n.global.t(
243 'pageServerPowerOperations.modal.confirmRebootTitle',
244 ),
245 okTitle: i18n.global.t('global.action.confirm'),
246 cancelTitle: i18n.global.t('global.action.cancel'),
Paul Fertserd1ef18e2024-04-06 08:04:14 +0000247 autoFocusButton: 'ok',
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800248 };
249
250 if (this.form.rebootOption === 'orderly') {
251 this.$bvModal
252 .msgBoxConfirm(modalMessage, modalOptions)
Derick Montague602e98a2020-10-21 16:20:00 -0500253 .then((confirmed) => {
Derick Montague71114fe2021-05-06 18:17:34 -0500254 if (confirmed) this.$store.dispatch('controls/serverSoftReboot');
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800255 });
256 } else if (this.form.rebootOption === 'immediate') {
257 this.$bvModal
258 .msgBoxConfirm(modalMessage, modalOptions)
Derick Montague602e98a2020-10-21 16:20:00 -0500259 .then((confirmed) => {
Derick Montague71114fe2021-05-06 18:17:34 -0500260 if (confirmed) this.$store.dispatch('controls/serverHardReboot');
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800261 });
262 }
263 },
264 shutdownServer() {
Surya Vde23ea22024-07-11 15:19:46 +0530265 const modalMessage = i18n.global.t(
Ed Tanous81323992024-02-27 11:26:24 -0800266 'pageServerPowerOperations.modal.confirmShutdownMessage',
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800267 );
268 const modalOptions = {
Surya Vde23ea22024-07-11 15:19:46 +0530269 title: i18n.global.t(
270 'pageServerPowerOperations.modal.confirmShutdownTitle',
271 ),
272 okTitle: i18n.global.t('global.action.confirm'),
273 cancelTitle: i18n.global.t('global.action.cancel'),
Paul Fertserd1ef18e2024-04-06 08:04:14 +0000274 autoFocusButton: 'ok',
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800275 };
276
277 if (this.form.shutdownOption === 'orderly') {
278 this.$bvModal
279 .msgBoxConfirm(modalMessage, modalOptions)
Derick Montague602e98a2020-10-21 16:20:00 -0500280 .then((confirmed) => {
Derick Montague71114fe2021-05-06 18:17:34 -0500281 if (confirmed) this.$store.dispatch('controls/serverSoftPowerOff');
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800282 });
283 }
284 if (this.form.shutdownOption === 'immediate') {
285 this.$bvModal
286 .msgBoxConfirm(modalMessage, modalOptions)
Derick Montague602e98a2020-10-21 16:20:00 -0500287 .then((confirmed) => {
Derick Montague71114fe2021-05-06 18:17:34 -0500288 if (confirmed) this.$store.dispatch('controls/serverHardPowerOff');
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800289 });
290 }
Derick Montague602e98a2020-10-21 16:20:00 -0500291 },
292 },
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800293};
294</script>