168cbbe90SSandeepa Singh<template> 268cbbe90SSandeepa Singh <div> 368cbbe90SSandeepa Singh <page-section :section-title="sectionTitle"> 468cbbe90SSandeepa Singh <b-card-group deck> 568cbbe90SSandeepa Singh <!-- Running image --> 668cbbe90SSandeepa Singh <b-card> 768cbbe90SSandeepa Singh <template #header> 868cbbe90SSandeepa Singh <p class="font-weight-bold m-0"> 968cbbe90SSandeepa Singh {{ $t('pageFirmware.cardTitleRunning') }} 1068cbbe90SSandeepa Singh </p> 1168cbbe90SSandeepa Singh </template> 1268cbbe90SSandeepa Singh <dl class="mb-0"> 1368cbbe90SSandeepa Singh <dt>{{ $t('pageFirmware.cardBodyVersion') }}</dt> 1468cbbe90SSandeepa Singh <dd class="mb-0">{{ runningVersion }}</dd> 1568cbbe90SSandeepa Singh </dl> 1668cbbe90SSandeepa Singh </b-card> 1768cbbe90SSandeepa Singh 1868cbbe90SSandeepa Singh <!-- Backup image --> 1968cbbe90SSandeepa Singh <b-card> 2068cbbe90SSandeepa Singh <template #header> 2168cbbe90SSandeepa Singh <p class="font-weight-bold m-0"> 2268cbbe90SSandeepa Singh {{ $t('pageFirmware.cardTitleBackup') }} 2368cbbe90SSandeepa Singh </p> 2468cbbe90SSandeepa Singh </template> 2568cbbe90SSandeepa Singh <dl> 2668cbbe90SSandeepa Singh <dt>{{ $t('pageFirmware.cardBodyVersion') }}</dt> 2768cbbe90SSandeepa Singh <dd> 2868cbbe90SSandeepa Singh <status-icon v-if="showBackupImageStatus" status="danger" /> 2968cbbe90SSandeepa Singh <span v-if="showBackupImageStatus" class="sr-only"> 3068cbbe90SSandeepa Singh {{ backupStatus }} 3168cbbe90SSandeepa Singh </span> 3268cbbe90SSandeepa Singh {{ backupVersion }} 3368cbbe90SSandeepa Singh </dd> 3468cbbe90SSandeepa Singh </dl> 3568cbbe90SSandeepa Singh <b-btn 3668cbbe90SSandeepa Singh v-if="!switchToBackupImageDisabled" 3768cbbe90SSandeepa Singh v-b-modal.modal-switch-to-running 3868cbbe90SSandeepa Singh data-test-id="firmware-button-switchToRunning" 3968cbbe90SSandeepa Singh variant="link" 4068cbbe90SSandeepa Singh size="sm" 4168cbbe90SSandeepa Singh class="py-0 px-1 mt-2" 42c3cf3610SKenneth Fullbright :disabled="isPageDisabled || !backup || !isServerOff" 4368cbbe90SSandeepa Singh > 4468cbbe90SSandeepa Singh <icon-switch class="d-none d-sm-inline-block" /> 4568cbbe90SSandeepa Singh {{ $t('pageFirmware.cardActionSwitchToRunning') }} 4668cbbe90SSandeepa Singh </b-btn> 4768cbbe90SSandeepa Singh </b-card> 4868cbbe90SSandeepa Singh </b-card-group> 4968cbbe90SSandeepa Singh </page-section> 5068cbbe90SSandeepa Singh <modal-switch-to-running :backup="backupVersion" @ok="switchToRunning" /> 5168cbbe90SSandeepa Singh </div> 5268cbbe90SSandeepa Singh</template> 5368cbbe90SSandeepa Singh 5468cbbe90SSandeepa Singh<script> 5568cbbe90SSandeepa Singhimport IconSwitch from '@carbon/icons-vue/es/arrows--horizontal/20'; 5668cbbe90SSandeepa Singhimport PageSection from '@/components/Global/PageSection'; 5768cbbe90SSandeepa Singhimport LoadingBarMixin, { loading } from '@/components/Mixins/LoadingBarMixin'; 5868cbbe90SSandeepa Singhimport BVToastMixin from '@/components/Mixins/BVToastMixin'; 5968cbbe90SSandeepa Singh 6068cbbe90SSandeepa Singhimport ModalSwitchToRunning from './FirmwareModalSwitchToRunning'; 6168cbbe90SSandeepa Singh 6268cbbe90SSandeepa Singhexport default { 6368cbbe90SSandeepa Singh components: { IconSwitch, ModalSwitchToRunning, PageSection }, 6468cbbe90SSandeepa Singh mixins: [BVToastMixin, LoadingBarMixin], 6568cbbe90SSandeepa Singh props: { 6668cbbe90SSandeepa Singh isPageDisabled: { 6768cbbe90SSandeepa Singh required: true, 6868cbbe90SSandeepa Singh type: Boolean, 6968cbbe90SSandeepa Singh default: false, 7068cbbe90SSandeepa Singh }, 71c3cf3610SKenneth Fullbright isServerOff: { 72c3cf3610SKenneth Fullbright required: true, 73c3cf3610SKenneth Fullbright type: Boolean, 74c3cf3610SKenneth Fullbright default: false, 75c3cf3610SKenneth Fullbright }, 7668cbbe90SSandeepa Singh }, 7768cbbe90SSandeepa Singh data() { 7868cbbe90SSandeepa Singh return { 7968cbbe90SSandeepa Singh loading, 8068cbbe90SSandeepa Singh switchToBackupImageDisabled: 8168cbbe90SSandeepa Singh process.env.VUE_APP_SWITCH_TO_BACKUP_IMAGE_DISABLED === 'true', 8268cbbe90SSandeepa Singh }; 8368cbbe90SSandeepa Singh }, 8468cbbe90SSandeepa Singh computed: { 8568cbbe90SSandeepa Singh isSingleFileUploadEnabled() { 8668cbbe90SSandeepa Singh return this.$store.getters['firmware/isSingleFileUploadEnabled']; 8768cbbe90SSandeepa Singh }, 8868cbbe90SSandeepa Singh sectionTitle() { 8968cbbe90SSandeepa Singh if (this.isSingleFileUploadEnabled) { 9068cbbe90SSandeepa Singh return this.$t('pageFirmware.sectionTitleBmcCardsCombined'); 9168cbbe90SSandeepa Singh } 9268cbbe90SSandeepa Singh return this.$t('pageFirmware.sectionTitleBmcCards'); 9368cbbe90SSandeepa Singh }, 9468cbbe90SSandeepa Singh running() { 9568cbbe90SSandeepa Singh return this.$store.getters['firmware/activeBmcFirmware']; 9668cbbe90SSandeepa Singh }, 9768cbbe90SSandeepa Singh backup() { 9868cbbe90SSandeepa Singh return this.$store.getters['firmware/backupBmcFirmware']; 9968cbbe90SSandeepa Singh }, 10068cbbe90SSandeepa Singh runningVersion() { 10168cbbe90SSandeepa Singh return this.running?.version || '--'; 10268cbbe90SSandeepa Singh }, 10368cbbe90SSandeepa Singh backupVersion() { 10468cbbe90SSandeepa Singh return this.backup?.version || '--'; 10568cbbe90SSandeepa Singh }, 10668cbbe90SSandeepa Singh backupStatus() { 10768cbbe90SSandeepa Singh return this.backup?.status || null; 10868cbbe90SSandeepa Singh }, 10968cbbe90SSandeepa Singh showBackupImageStatus() { 11068cbbe90SSandeepa Singh return ( 11168cbbe90SSandeepa Singh this.backupStatus === 'Critical' || this.backupStatus === 'Warning' 11268cbbe90SSandeepa Singh ); 11368cbbe90SSandeepa Singh }, 11468cbbe90SSandeepa Singh }, 11568cbbe90SSandeepa Singh methods: { 11668cbbe90SSandeepa Singh switchToRunning() { 11768cbbe90SSandeepa Singh this.startLoader(); 11868cbbe90SSandeepa Singh const timerId = setTimeout(() => { 11968cbbe90SSandeepa Singh this.endLoader(); 12068cbbe90SSandeepa Singh this.infoToast(this.$t('pageFirmware.toast.verifySwitchMessage'), { 12168cbbe90SSandeepa Singh title: this.$t('pageFirmware.toast.verifySwitch'), 12268cbbe90SSandeepa Singh refreshAction: true, 12368cbbe90SSandeepa Singh }); 12468cbbe90SSandeepa Singh }, 60000); 12568cbbe90SSandeepa Singh 12668cbbe90SSandeepa Singh this.$store 12768cbbe90SSandeepa Singh .dispatch('firmware/switchBmcFirmwareAndReboot') 12868cbbe90SSandeepa Singh .then(() => 12968cbbe90SSandeepa Singh this.infoToast(this.$t('pageFirmware.toast.rebootStartedMessage'), { 13068cbbe90SSandeepa Singh title: this.$t('pageFirmware.toast.rebootStarted'), 131*8132399cSEd Tanous }), 13268cbbe90SSandeepa Singh ) 13368cbbe90SSandeepa Singh .catch(({ message }) => { 13468cbbe90SSandeepa Singh this.errorToast(message); 13568cbbe90SSandeepa Singh clearTimeout(timerId); 13668cbbe90SSandeepa Singh this.endLoader(); 13768cbbe90SSandeepa Singh }); 13868cbbe90SSandeepa Singh }, 13968cbbe90SSandeepa Singh }, 14068cbbe90SSandeepa Singh}; 14168cbbe90SSandeepa Singh</script> 142