diff options
Diffstat (limited to 'src/views/Configuration/Firmware/Firmware.vue')
-rw-r--r-- | src/views/Configuration/Firmware/Firmware.vue | 207 |
1 files changed, 89 insertions, 118 deletions
diff --git a/src/views/Configuration/Firmware/Firmware.vue b/src/views/Configuration/Firmware/Firmware.vue index e63db518..e1f97c4e 100644 --- a/src/views/Configuration/Firmware/Firmware.vue +++ b/src/views/Configuration/Firmware/Firmware.vue @@ -1,97 +1,86 @@ <template> <b-container fluid="xl"> <page-title :description="$t('pageFirmware.pageDescription')" /> - <!-- Operation in progress alert --> - <alert v-if="isOperationInProgress" variant="info" class="mb-5"> - <p> - {{ $t('pageFirmware.alert.operationInProgress') }} - </p> - </alert> - <!-- Shutdown server warning alert --> - <alert v-else-if="!isHostOff" variant="warning" class="mb-5"> - <p class="font-weight-bold mb-1"> - {{ $t('pageFirmware.alert.serverShutdownRequiredBeforeUpdate') }} - </p> - {{ $t('pageFirmware.alert.serverShutdownRequiredInfo') }} - <template v-slot:action> - <b-btn variant="link" class="text-nowrap" @click="onClickShutDown"> - {{ $t('pageFirmware.alert.shutDownServer') }} - </b-btn> - </template> - </alert> <b-row class="mb-4"> - <!-- Firmware on system --> <b-col md="10" lg="12" xl="8" class="pr-xl-4"> - <page-section :section-title="$t('pageFirmware.firmwareOnSystem')"> + <!-- Firmware on BMC --> + <page-section :section-title="$t('pageFirmware.firmwareOnBmc')"> <b-card-group deck> <!-- Current FW --> <b-card header-bg-variant="success"> <template v-slot:header> <dl class="mb-0"> <dt>{{ $t('pageFirmware.current') }}</dt> - <dd class="mb-0">{{ systemFirmwareVersion }}</dd> + <dd class="mb-0">{{ bmcFirmwareCurrentVersion }}</dd> </dl> </template> - <b-row> - <b-col xs="6"> - <dl class="my-0"> - <dt>{{ $t('pageFirmware.bmcStatus') }}</dt> - <dd>{{ $t('pageFirmware.running') }}</dd> - </dl> - </b-col> - <b-col xs="6"> - <dl class="my-0"> - <dt>{{ $t('pageFirmware.hostStatus') }}</dt> - <dd v-if="hostStatus === 'on'"> - {{ $t('global.status.on') }} - </dd> - <dd v-else-if="hostStatus === 'off'"> - {{ $t('global.status.off') }} - </dd> - <dd v-else> - {{ $t('global.status.notAvailable') }} - </dd> - </dl> - </b-col> - </b-row> + <dl class="my-0"> + <dt>{{ $t('pageFirmware.state') }}:</dt> + <dd>{{ bmcFirmwareCurrentState }}</dd> + </dl> + <template v-slot:footer></template> </b-card> <!-- Backup FW --> - <b-card> + <b-card footer-class="p-0"> <template v-slot:header> <dl class="mb-0"> <dt>{{ $t('pageFirmware.backup') }}</dt> - <dd class="mb-0">{{ backupFirmwareVersion }}</dd> + <dd class="mb-0">{{ bmcFirmwareBackupVersion }}</dd> </dl> </template> - <b-row> - <b-col xs="6"> - <dl class="my-0"> - <dt>{{ $t('pageFirmware.state') }}</dt> - <dd>{{ backupFirmwareStatus }}</dd> - </dl> - </b-col> - </b-row> + <dl class="my-0"> + <dt>{{ $t('pageFirmware.state') }}:</dt> + <dd>{{ bmcFirmwareBackupState }}</dd> + </dl> + <template v-slot:footer> + <b-btn + v-b-modal.modal-reboot-backup-bmc + :disabled="!bmcFirmwareBackupVersion" + variant="link" + size="sm" + > + <icon-switch class="d-none d-sm-inline-block" /> + {{ $t('pageFirmware.makeCurrentVersion') }}</b-btn + > + </template> </b-card> </b-card-group> </page-section> - <!-- Change to backup image --> - <page-section :section-title="$t('pageFirmware.changeToBackupImage')"> - <dl class="mb-5"> - <dt> - {{ $t('pageFirmware.backupImage') }} - </dt> - <dd>{{ backupFirmwareVersion }}</dd> - </dl> - <b-btn - v-b-modal.modal-reboot-backup - type="button" - variant="primary" - :disabled="isPageDisabled || !isRebootFromBackupAvailable" - > - {{ $t('pageFirmware.changeAndRebootBmc') }} - </b-btn> + <!-- Firmware on Host --> + <page-section :section-title="$t('pageFirmware.firmwareOnHost')"> + <b-card-group deck> + <!-- Current FW --> + <b-card header-bg-variant="success"> + <template v-slot:header> + <dl class="mb-0"> + <dt>{{ $t('pageFirmware.current') }}</dt> + <dd class="mb-0">{{ hostFirmwareCurrentVersion }}</dd> + </dl> + </template> + <!-- State --> + <dl class="my-0"> + <dt>{{ $t('pageFirmware.state') }}:</dt> + <dd>{{ hostFirmwareCurrentState }}</dd> + </dl> + </b-card> + + <!-- Backup FW --> + <b-card> + <template v-slot:header> + <dl class="mb-0"> + <dt>{{ $t('pageFirmware.backup') }}</dt> + <dd class="mb-0">{{ hostFirmwareBackupVersion }}</dd> + </dl> + </template> + <!-- State --> + <dl class="my-0"> + <dt>{{ $t('pageFirmware.state') }}:</dt> + <dd>{{ hostFirmwareBackupState }}</dd> + </dl> + </b-card> + </b-card-group> </page-section> </b-col> @@ -99,10 +88,7 @@ <b-col sm="8" xl="4" class="update-code pl-xl-4"> <page-section :section-title="$t('pageFirmware.updateCode')"> <b-form @submit.prevent="onSubmitUpload"> - <b-form-group - :label="$t('pageFirmware.form.uploadLocation')" - :disabled="isPageDisabled" - > + <b-form-group :label="$t('pageFirmware.form.uploadLocation')"> <b-form-radio v-model="isWorkstationSelected" :value="true"> {{ $t('pageFirmware.form.workstation') }} </b-form-radio> @@ -128,7 +114,6 @@ :browse-text="$t('global.fileUpload.browseText')" :drop-placeholder="$t('global.fileUpload.dropPlaceholder')" :placeholder="$t('global.fileUpload.placeholder')" - :disabled="isPageDisabled" :state="getValidationState($v.file)" @input="$v.file.$touch()" /> @@ -169,7 +154,6 @@ v-model="tftpFileName" type="text" :state="getValidationState($v.tftpFileName)" - :disabled="isPageDisabled" @input="$v.tftpFileName.$touch()" /> <b-form-invalid-feedback role="alert"> @@ -186,8 +170,8 @@ <p>{{ $t('pageFirmware.alert.updateProcessInfo') }}</p> </alert> <b-form-group> - <b-btn type="submit" variant="primary" :disabled="isPageDisabled"> - {{ $t('pageFirmware.form.uploadAndRebootBmc') }} + <b-btn type="submit" variant="primary"> + {{ $t('pageFirmware.form.uploadAndRebootBmcOrHost') }} </b-btn> </b-form-group> </b-form> @@ -197,10 +181,10 @@ <!-- Modals --> <modal-upload @ok="uploadFirmware" /> - <modal-reboot-backup - :current="systemFirmwareVersion" - :backup="backupFirmwareVersion" - @ok="rebootFromBackup" + <modal-reboot-backup-bmc + :current="bmcFirmwareCurrentVersion || '--'" + :backup="bmcFirmwareBackupVersion || '--'" + @ok="switchBmcFirmware" /> </b-container> </template> @@ -208,12 +192,13 @@ <script> import { requiredIf } from 'vuelidate/lib/validators'; import { mapGetters } from 'vuex'; +import IconSwitch from '@carbon/icons-vue/es/arrows--horizontal/20'; import PageSection from '@/components/Global/PageSection'; import PageTitle from '@/components/Global/PageTitle'; import Alert from '@/components/Global/Alert'; import ModalUpload from './FirmwareModalUpload'; -import ModalRebootBackup from './FirmwareModalRebootBackup'; +import ModalRebootBackupBmc from './FirmwareModalRebootBackupBmc'; import VuelidateMixin from '@/components/Mixins/VuelidateMixin.js'; import LoadingBarMixin from '@/components/Mixins/LoadingBarMixin'; @@ -223,7 +208,8 @@ export default { name: 'Firmware', components: { Alert, - ModalRebootBackup, + IconSwitch, + ModalRebootBackupBmc, ModalUpload, PageSection, PageTitle @@ -239,24 +225,16 @@ export default { }; }, computed: { - hostStatus() { - return this.$store.getters['global/hostStatus']; - }, - isHostOff() { - return this.hostStatus === 'off' ? true : false; - }, - isOperationInProgress() { - return this.$store.getters['controls/isOperationInProgress']; - }, ...mapGetters('firmware', [ - 'backupFirmwareStatus', - 'backupFirmwareVersion', - 'isRebootFromBackupAvailable', - 'systemFirmwareVersion' - ]), - isPageDisabled() { - return !this.isHostOff || this.loading || this.isOperationInProgress; - } + 'bmcFirmwareCurrentVersion', + 'bmcFirmwareCurrentState', + 'bmcFirmwareBackupVersion', + 'bmcFirmwareBackupState', + 'hostFirmwareCurrentVersion', + 'hostFirmwareCurrentState', + 'hostFirmwareBackupVersion', + 'hostFirmwareBackupState' + ]) }, watch: { isWorkstationSelected: function() { @@ -269,10 +247,9 @@ export default { created() { this.startLoader(); this.$store.dispatch('firmware/getUpdateServiceApplyTime'); - Promise.all([ - this.$store.dispatch('global/getHostStatus'), - this.$store.dispatch('firmware/getSystemFirwareVersion') - ]).finally(() => this.endLoader()); + this.$store + .dispatch('firmware/getFirmwareInformation') + .finally(() => this.endLoader()); }, beforeRouteLeave(to, from, next) { this.hideLoader(); @@ -344,10 +321,10 @@ export default { this.clearRebootTimeout(); }); }, - rebootFromBackup() { + switchBmcFirmware() { this.setRebootTimeout(); this.$store - .dispatch('firmware/switchFirmwareAndReboot') + .dispatch('firmware/switchBmcFirmware') .then(success => this.infoToast(success, this.$t('global.status.success')) ) @@ -378,18 +355,6 @@ export default { this.$v.$touch(); if (this.$v.$invalid) return; this.$bvModal.show('modal-upload'); - }, - onClickShutDown() { - this.$bvModal - .msgBoxConfirm(this.$t('pageFirmware.modal.serverShutdownMessage'), { - title: this.$t('pageFirmware.modal.serverShutdownWillCauseOutage'), - okTitle: this.$t('pageFirmware.modal.shutDownServer'), - okVariant: 'danger' - }) - .then(shutdownConfirmed => { - if (shutdownConfirmed) - this.$store.dispatch('controls/hostSoftPowerOff'); - }); } } }; @@ -402,4 +367,10 @@ export default { border-left: 1px solid gray('300'); } } +.card-footer { + height: 41px; +} +.card-body { + padding: 0.75rem 1.25rem; +} </style> |