summaryrefslogtreecommitdiff
path: root/src/env
diff options
context:
space:
mode:
authorYoshie Muranaka <yoshiemuranaka@gmail.com>2021-02-19 02:24:14 +0300
committerDerick Montague <derick.montague@ibm.com>2021-03-01 16:45:05 +0300
commit33d755f4e62beff72101f6ca07e4d31b04e13826 (patch)
treea67d890472f0c7f27951b8e86d472e220dac066e /src/env
parent9a25c80591e8872297f2c33ad9bcd6a97639f04c (diff)
downloadwebui-vue-33d755f4e62beff72101f6ca07e4d31b04e13826.tar.xz
Update the default firmware page
- Minor updates made to the general layout and styles - Changes to some page copy - Moves update firmware form to bottom of page - Adds dynamic TFTP upload option - Adds dynamic card layout for BMC and host firmwre - 2 cards for combined - 4 cards for separate - Removes FirmwareSingleImage components that were used for IBM builds Signed-off-by: Yoshie Muranaka <yoshiemuranaka@gmail.com> Change-Id: Ib5465ecc30dd1505824bf41c82d33b7655d5e598
Diffstat (limited to 'src/env')
-rw-r--r--src/env/components/FirmwareSingleImage/FirmwareAlertServerPower.vue60
-rw-r--r--src/env/components/FirmwareSingleImage/FirmwareCardsBmc.vue145
-rw-r--r--src/env/components/FirmwareSingleImage/FirmwareCardsHost.vue75
-rw-r--r--src/env/components/FirmwareSingleImage/FirmwareFormUpdate.vue235
-rw-r--r--src/env/components/FirmwareSingleImage/FirmwareModalSwitchToRunning.vue31
-rw-r--r--src/env/components/FirmwareSingleImage/FirmwareModalUpdateFirmware.vue48
-rw-r--r--src/env/components/FirmwareSingleImage/FirmwareSingleImage.vue97
-rw-r--r--src/env/components/FirmwareSingleImage/index.js2
-rw-r--r--src/env/router/ibm.js4
-rw-r--r--src/env/store/FirmwareSingleImage/FirmwareSingleImageStore.js195
-rw-r--r--src/env/store/ibm.js3
11 files changed, 2 insertions, 893 deletions
diff --git a/src/env/components/FirmwareSingleImage/FirmwareAlertServerPower.vue b/src/env/components/FirmwareSingleImage/FirmwareAlertServerPower.vue
deleted file mode 100644
index f7ac0fc9..00000000
--- a/src/env/components/FirmwareSingleImage/FirmwareAlertServerPower.vue
+++ /dev/null
@@ -1,60 +0,0 @@
-<template>
- <b-row>
- <b-col xl="10">
- <!-- Operation in progress alert -->
- <alert v-if="isOperationInProgress" variant="info" class="mb-5">
- <p>
- {{ $t('pageFirmware.singleFileUpload.alert.operationInProgress') }}
- </p>
- </alert>
- <!-- Power off server warning alert -->
- <alert v-else-if="!isHostOff" variant="warning" class="mb-5">
- <p class="mb-0">
- {{
- $t('pageFirmware.singleFileUpload.alert.serverMustBePoweredOffTo')
- }}
- </p>
- <ul class="m-0">
- <li>
- {{
- $t(
- 'pageFirmware.singleFileUpload.alert.switchRunningAndBackupImages'
- )
- }}
- </li>
- <li>
- {{ $t('pageFirmware.singleFileUpload.alert.updateFirmware') }}
- </li>
- </ul>
- <template #action>
- <b-link to="/control/server-power-operations">
- {{
- $t(
- 'pageFirmware.singleFileUpload.alert.viewServerPowerOperations'
- )
- }}
- </b-link>
- </template>
- </alert>
- </b-col>
- </b-row>
-</template>
-
-<script>
-import Alert from '@/components/Global/Alert';
-
-export default {
- components: { Alert },
- props: {
- isHostOff: {
- required: true,
- type: Boolean,
- },
- },
- computed: {
- isOperationInProgress() {
- return this.$store.getters['controls/isOperationInProgress'];
- },
- },
-};
-</script>
diff --git a/src/env/components/FirmwareSingleImage/FirmwareCardsBmc.vue b/src/env/components/FirmwareSingleImage/FirmwareCardsBmc.vue
deleted file mode 100644
index 857adf0f..00000000
--- a/src/env/components/FirmwareSingleImage/FirmwareCardsBmc.vue
+++ /dev/null
@@ -1,145 +0,0 @@
-<template>
- <div>
- <page-section :section-title="sectionTitle">
- <b-card-group deck>
- <!-- Running image -->
- <b-card>
- <template #header>
- <p class="font-weight-bold m-0">
- {{ $t('pageFirmware.singleFileUpload.cardTitleRunning') }}
- </p>
- </template>
- <dl class="mb-0">
- <dt>{{ $t('pageFirmware.singleFileUpload.cardBodyVersion') }}</dt>
- <dd class="mb-0">{{ runningVersion }}</dd>
- </dl>
- </b-card>
-
- <!-- Backup image -->
- <b-card>
- <template #header>
- <p class="font-weight-bold m-0">
- {{ $t('pageFirmware.singleFileUpload.cardTitleBackup') }}
- </p>
- </template>
- <dl>
- <dt>{{ $t('pageFirmware.singleFileUpload.cardBodyVersion') }}</dt>
- <dd>
- <status-icon v-if="showBackupImageStatus" status="danger" />
- <span v-if="showBackupImageStatus" class="sr-only">
- {{ backupStatus }}
- </span>
- {{ backupVersion }}
- </dd>
- </dl>
- <b-btn
- v-b-modal.modal-switch-to-running
- data-test-id="firmware-button-switchToRunning"
- variant="link"
- size="sm"
- class="py-0 px-1 mt-2"
- :disabled="isPageDisabled || !backup"
- >
- <icon-switch class="d-none d-sm-inline-block" />
- {{ $t('pageFirmware.singleFileUpload.cardActionSwitchToRunning') }}
- </b-btn>
- </b-card>
- </b-card-group>
- </page-section>
- <modal-switch-to-running :backup="backupVersion" @ok="switchToRunning" />
- </div>
-</template>
-
-<script>
-import IconSwitch from '@carbon/icons-vue/es/arrows--horizontal/20';
-import PageSection from '@/components/Global/PageSection';
-import LoadingBarMixin, { loading } from '@/components/Mixins/LoadingBarMixin';
-import BVToastMixin from '@/components/Mixins/BVToastMixin';
-
-import ModalSwitchToRunning from './FirmwareModalSwitchToRunning';
-
-export default {
- components: { IconSwitch, ModalSwitchToRunning, PageSection },
- mixins: [BVToastMixin, LoadingBarMixin],
- props: {
- isPageDisabled: {
- required: true,
- type: Boolean,
- default: false,
- },
- },
- data() {
- return {
- loading,
- };
- },
- computed: {
- isSingleFileUploadEnabled() {
- return this.$store.getters[
- 'firmwareSingleImage/isSingleFileUploadEnabled'
- ];
- },
- sectionTitle() {
- if (this.isSingleFileUploadEnabled) {
- return this.$t(
- 'pageFirmware.singleFileUpload.sectionTitleBmcCardsCombined'
- );
- }
- return this.$t('pageFirmware.singleFileUpload.sectionTitleBmcCards');
- },
- running() {
- return this.$store.getters['firmwareSingleImage/activeBmcFirmware'];
- },
- backup() {
- return this.$store.getters['firmwareSingleImage/backupBmcFirmware'];
- },
- runningVersion() {
- return this.running?.version || '--';
- },
- backupVersion() {
- return this.backup?.version || '--';
- },
- backupStatus() {
- return this.backup?.status || null;
- },
- showBackupImageStatus() {
- return (
- this.backupStatus === 'Critical' || this.backupStatus === 'Warning'
- );
- },
- },
- methods: {
- switchToRunning() {
- this.startLoader();
- const timerId = setTimeout(() => {
- this.endLoader();
- this.infoToast(
- this.$t('pageFirmware.singleFileUpload.toast.verifySwitchMessage'),
- {
- title: this.$t('pageFirmware.singleFileUpload.toast.verifySwitch'),
- refreshAction: true,
- }
- );
- }, 60000);
-
- this.$store
- .dispatch('firmwareSingleImage/switchFirmwareAndReboot')
- .then(() =>
- this.infoToast(
- this.$t('pageFirmware.singleFileUpload.toast.rebootStartedMessage'),
- {
- title: this.$t(
- 'pageFirmware.singleFileUpload.toast.rebootStarted'
- ),
- }
- )
- )
- .catch(({ message }) => {
- this.errorToast(message);
- clearTimeout(timerId);
- this.endLoader();
- });
- },
- },
-};
-</script>
diff --git a/src/env/components/FirmwareSingleImage/FirmwareCardsHost.vue b/src/env/components/FirmwareSingleImage/FirmwareCardsHost.vue
deleted file mode 100644
index c47f60f5..00000000
--- a/src/env/components/FirmwareSingleImage/FirmwareCardsHost.vue
+++ /dev/null
@@ -1,75 +0,0 @@
-<template>
- <page-section
- :section-title="$t('pageFirmware.singleFileUpload.sectionTitleHostCards')"
- >
- <b-card-group deck>
- <!-- Running image -->
- <b-card>
- <template #header>
- <p class="font-weight-bold m-0">
- {{ $t('pageFirmware.singleFileUpload.cardTitleRunning') }}
- </p>
- </template>
- <dl class="mb-0">
- <dt>{{ $t('pageFirmware.singleFileUpload.cardBodyVersion') }}</dt>
- <dd class="mb-0">{{ runningVersion }}</dd>
- </dl>
- </b-card>
-
- <!-- Backup image -->
- <b-card>
- <template #header>
- <p class="font-weight-bold m-0">
- {{ $t('pageFirmware.singleFileUpload.cardTitleBackup') }}
- </p>
- </template>
- <dl class="mb-0">
- <dt>{{ $t('pageFirmware.singleFileUpload.cardBodyVersion') }}</dt>
- <dd class="mb-0">
- <status-icon v-if="showBackupImageStatus" status="danger" />
- <span v-if="showBackupImageStatus" class="sr-only">
- {{ backupStatus }}
- </span>
- {{ backupVersion }}
- </dd>
- </dl>
- </b-card>
- </b-card-group>
- </page-section>
-</template>
-
-<script>
-import PageSection from '@/components/Global/PageSection';
-
-export default {
- components: { PageSection },
- computed: {
- running() {
- return this.$store.getters['firmwareSingleImage/activeHostFirmware'];
- },
- backup() {
- return this.$store.getters['firmwareSingleImage/backupHostFirmware'];
- },
- runningVersion() {
- return this.running?.version || '--';
- },
- backupVersion() {
- return this.backup?.version || '--';
- },
- backupStatus() {
- return this.backup?.status || null;
- },
- showBackupImageStatus() {
- return (
- this.backupStatus === 'Critical' || this.backupStatus === 'Warning'
- );
- },
- },
-};
-</script>
-
-<style lang="scss" scoped>
-.page-section {
- margin-top: -$spacer * 1.5;
-}
-</style>
diff --git a/src/env/components/FirmwareSingleImage/FirmwareFormUpdate.vue b/src/env/components/FirmwareSingleImage/FirmwareFormUpdate.vue
deleted file mode 100644
index f13b8e00..00000000
--- a/src/env/components/FirmwareSingleImage/FirmwareFormUpdate.vue
+++ /dev/null
@@ -1,235 +0,0 @@
-<template>
- <div>
- <div class="form-background p-3">
- <b-form @submit.prevent="onSubmitUpload">
- <b-form-group
- v-if="isTftpUploadAvailable"
- :label="
- $t('pageFirmware.singleFileUpload.form.updateFirmware.fileSource')
- "
- :disabled="isPageDisabled"
- >
- <b-form-radio v-model="isWorkstationSelected" :value="true">
- {{
- $t(
- 'pageFirmware.singleFileUpload.form.updateFirmware.workstation'
- )
- }}
- </b-form-radio>
- <b-form-radio v-model="isWorkstationSelected" :value="false">
- {{
- $t('pageFirmware.singleFileUpload.form.updateFirmware.tftpServer')
- }}
- </b-form-radio>
- </b-form-group>
-
- <!-- Workstation Upload -->
- <template v-if="isWorkstationSelected">
- <b-form-group
- :label="
- $t('pageFirmware.singleFileUpload.form.updateFirmware.imageFile')
- "
- label-for="image-file"
- >
- <b-form-text id="image-file-help-block">
- {{
- $t(
- 'pageFirmware.singleFileUpload.form.updateFirmware.imageFileHelperText'
- )
- }}
- </b-form-text>
- <form-file
- id="image-file"
- accept=".tar"
- :disabled="isPageDisabled"
- :state="getValidationState($v.file)"
- aria-describedby="image-file-help-block"
- @input="onFileUpload($event)"
- >
- <template #invalid>
- <b-form-invalid-feedback role="alert">
- {{ $t('global.form.required') }}
- </b-form-invalid-feedback>
- </template>
- </form-file>
- </b-form-group>
- </template>
-
- <!-- TFTP Server Upload -->
- <template v-else>
- <b-form-group
- :label="
- $t(
- 'pageFirmware.singleFileUpload.form.updateFirmware.fileAddress'
- )
- "
- label-for="tftp-address"
- >
- <b-form-input
- id="tftp-address"
- v-model="tftpFileAddress"
- type="text"
- :state="getValidationState($v.tftpFileAddress)"
- :disabled="isPageDisabled"
- @input="$v.tftpFileAddress.$touch()"
- />
- <b-form-invalid-feedback role="alert">
- {{ $t('global.form.fieldRequired') }}
- </b-form-invalid-feedback>
- </b-form-group>
- </template>
- <b-btn
- data-test-id="firmware-button-startUpdate"
- type="submit"
- variant="primary"
- :disabled="isPageDisabled"
- >
- {{
- $t('pageFirmware.singleFileUpload.form.updateFirmware.startUpdate')
- }}
- </b-btn>
- <alert
- v-if="isServerPowerOffRequired && !isHostOff"
- variant="warning"
- :small="true"
- class="mt-4"
- >
- <p class="col-form-label">
- {{
- $t(
- 'pageFirmware.singleFileUpload.alert.serverMustBePoweredOffToUpdateFirmware'
- )
- }}
- </p>
- </alert>
- </b-form>
- </div>
-
- <!-- Modals -->
- <modal-update-firmware @ok="updateFirmware" />
- </div>
-</template>
-
-<script>
-import { requiredIf } from 'vuelidate/lib/validators';
-
-import BVToastMixin from '@/components/Mixins/BVToastMixin';
-import LoadingBarMixin, { loading } from '@/components/Mixins/LoadingBarMixin';
-import VuelidateMixin from '@/components/Mixins/VuelidateMixin.js';
-
-import Alert from '@/components/Global/Alert';
-import FormFile from '@/components/Global/FormFile';
-import ModalUpdateFirmware from './FirmwareModalUpdateFirmware';
-
-export default {
- components: { Alert, FormFile, ModalUpdateFirmware },
- mixins: [BVToastMixin, LoadingBarMixin, VuelidateMixin],
- props: {
- isPageDisabled: {
- required: true,
- type: Boolean,
- default: false,
- },
- isHostOff: {
- required: true,
- type: Boolean,
- },
- },
- data() {
- return {
- loading,
- isWorkstationSelected: true,
- file: null,
- tftpFileAddress: null,
- isServerPowerOffRequired:
- process.env.VUE_APP_SERVER_OFF_REQUIRED === 'true',
- };
- },
- computed: {
- isTftpUploadAvailable() {
- return this.$store.getters['firmwareSingleImage/isTftpUploadAvailable'];
- },
- },
- watch: {
- isWorkstationSelected: function () {
- this.$v.$reset();
- this.file = null;
- this.tftpFileAddress = null;
- },
- },
- validations() {
- return {
- file: {
- required: requiredIf(function () {
- return this.isWorkstationSelected;
- }),
- },
- tftpFileAddress: {
- required: requiredIf(function () {
- return !this.isWorkstationSelected;
- }),
- },
- };
- },
- created() {
- this.$store.dispatch('firmwareSingleImage/getUpdateServiceSettings');
- },
- methods: {
- updateFirmware() {
- this.startLoader();
- const timerId = setTimeout(() => {
- this.endLoader();
- this.infoToast(
- this.$t('pageFirmware.singleFileUpload.toast.verifyUpdateMessage'),
- {
- title: this.$t('pageFirmware.singleFileUpload.toast.verifyUpdate'),
- refreshAction: true,
- }
- );
- }, 360000);
- this.infoToast(
- this.$t('pageFirmware.singleFileUpload.toast.updateStartedMessage'),
- {
- title: this.$t('pageFirmware.singleFileUpload.toast.updateStarted'),
- timestamp: true,
- }
- );
- if (this.isWorkstationSelected) {
- this.dispatchWorkstationUpload(timerId);
- } else {
- this.dispatchTftpUpload(timerId);
- }
- },
- dispatchWorkstationUpload(timerId) {
- this.$store
- .dispatch('firmwareSingleImage/uploadFirmware', this.file)
- .catch(({ message }) => {
- this.endLoader();
- this.errorToast(message);
- clearTimeout(timerId);
- });
- },
- dispatchTftpUpload(timerId) {
- this.$store
- .dispatch(
- 'firmwareSingleImage/uploadFirmwareTFTP',
- this.tftpFileAddress
- )
- .catch(({ message }) => {
- this.endLoader();
- this.errorToast(message);
- clearTimeout(timerId);
- });
- },
- onSubmitUpload() {
- this.$v.$touch();
- if (this.$v.$invalid) return;
- this.$bvModal.show('modal-update-firmware');
- },
- onFileUpload(file) {
- this.file = file;
- this.$v.file.$touch();
- },
- },
-};
-</script>
diff --git a/src/env/components/FirmwareSingleImage/FirmwareModalSwitchToRunning.vue b/src/env/components/FirmwareSingleImage/FirmwareModalSwitchToRunning.vue
deleted file mode 100644
index 56f505d0..00000000
--- a/src/env/components/FirmwareSingleImage/FirmwareModalSwitchToRunning.vue
+++ /dev/null
@@ -1,31 +0,0 @@
-<template>
- <b-modal
- id="modal-switch-to-running"
- :ok-title="$t('pageFirmware.singleFileUpload.modal.switchImages')"
- :cancel-title="$t('global.action.cancel')"
- :title="$t('pageFirmware.singleFileUpload.modal.switchRunningImage')"
- @ok="$emit('ok')"
- >
- <p>
- {{ $t('pageFirmware.singleFileUpload.modal.switchRunningImageInfo') }}
- </p>
- <p class="m-0">
- {{
- $t('pageFirmware.singleFileUpload.modal.switchRunningImageInfo2', {
- backup,
- })
- }}
- </p>
- </b-modal>
-</template>
-
-<script>
-export default {
- props: {
- backup: {
- type: String,
- required: true,
- },
- },
-};
-</script>
diff --git a/src/env/components/FirmwareSingleImage/FirmwareModalUpdateFirmware.vue b/src/env/components/FirmwareSingleImage/FirmwareModalUpdateFirmware.vue
deleted file mode 100644
index d6c52f9c..00000000
--- a/src/env/components/FirmwareSingleImage/FirmwareModalUpdateFirmware.vue
+++ /dev/null
@@ -1,48 +0,0 @@
-<template>
- <b-modal
- id="modal-update-firmware"
- :title="$t('pageFirmware.singleFileUpload.sectionTitleUpdateFirmware')"
- :ok-title="
- $t('pageFirmware.singleFileUpload.form.updateFirmware.startUpdate')
- "
- :cancel-title="$t('global.action.cancel')"
- @ok="$emit('ok')"
- >
- <template v-if="isSingleFileUploadEnabled">
- <p>
- {{ $t('pageFirmware.singleFileUpload.modal.updateFirmwareInfo') }}
- </p>
- <p>
- {{
- $t('pageFirmware.singleFileUpload.modal.updateFirmwareInfo2', {
- running: runningBmcVersion,
- })
- }}
- </p>
- <p class="m-0">
- {{ $t('pageFirmware.singleFileUpload.modal.updateFirmwareInfo3') }}
- </p>
- </template>
- <template v-else>
- {{ $t('pageFirmware.singleFileUpload.modal.updateFirmwareInfoDefault') }}
- </template>
- </b-modal>
-</template>
-
-<script>
-export default {
- computed: {
- runningBmc() {
- return this.$store.getters['firmwareSingleImage/activeBmcFirmware'];
- },
- runningBmcVersion() {
- return this.runningBmc?.version || '--';
- },
- isSingleFileUploadEnabled() {
- return this.$store.getters[
- 'firmwareSingleImage/isSingleFileUploadEnabled'
- ];
- },
- },
-};
-</script>
diff --git a/src/env/components/FirmwareSingleImage/FirmwareSingleImage.vue b/src/env/components/FirmwareSingleImage/FirmwareSingleImage.vue
deleted file mode 100644
index 2e601bd4..00000000
--- a/src/env/components/FirmwareSingleImage/FirmwareSingleImage.vue
+++ /dev/null
@@ -1,97 +0,0 @@
-<template>
- <b-container fluid="xl">
- <page-title />
- <alerts-server-power
- v-if="isServerPowerOffRequired"
- :is-host-off="isHostOff"
- />
-
- <!-- Firmware cards -->
- <b-row>
- <b-col xl="10">
- <!-- BMC Firmware -->
- <bmc-cards :is-page-disabled="isPageDisabled" />
-
- <!-- Host Firmware -->
- <host-cards v-if="!isSingleFileUploadEnabled" />
- </b-col>
- </b-row>
-
- <!-- Update firmware-->
- <page-section
- :section-title="
- $t('pageFirmware.singleFileUpload.sectionTitleUpdateFirmware')
- "
- >
- <b-row>
- <b-col sm="8" md="6" xl="4">
- <!-- Update form -->
- <form-update
- :is-host-off="isHostOff"
- :is-page-disabled="isPageDisabled"
- />
- </b-col>
- </b-row>
- </page-section>
- </b-container>
-</template>
-
-<script>
-import AlertsServerPower from './FirmwareAlertServerPower';
-import BmcCards from './FirmwareCardsBmc';
-import FormUpdate from './FirmwareFormUpdate';
-import HostCards from './FirmwareCardsHost';
-import PageSection from '@/components/Global/PageSection';
-import PageTitle from '@/components/Global/PageTitle';
-
-import LoadingBarMixin, { loading } from '@/components/Mixins/LoadingBarMixin';
-
-export default {
- name: 'FirmwareSingleImage',
- components: {
- AlertsServerPower,
- BmcCards,
- FormUpdate,
- HostCards,
- PageSection,
- PageTitle,
- },
- mixins: [LoadingBarMixin],
- beforeRouteLeave(to, from, next) {
- this.hideLoader();
- next();
- },
- data() {
- return {
- loading,
- isServerPowerOffRequired:
- process.env.VUE_APP_SERVER_OFF_REQUIRED === 'true',
- };
- },
- computed: {
- hostStatus() {
- return this.$store.getters['global/hostStatus'];
- },
- isHostOff() {
- return this.hostStatus === 'off' ? true : false;
- },
- isSingleFileUploadEnabled() {
- return this.$store.getters[
- 'firmwareSingleImage/isSingleFileUploadEnabled'
- ];
- },
- isPageDisabled() {
- if (this.isServerPowerOffRequired) {
- return !this.isHostOff || this.loading || this.isOperationInProgress;
- }
- return this.loading || this.isOperationInProgress;
- },
- },
- created() {
- this.startLoader();
- this.$store
- .dispatch('firmwareSingleImage/getFirmwareInformation')
- .finally(() => this.endLoader());
- },
-};
-</script>
diff --git a/src/env/components/FirmwareSingleImage/index.js b/src/env/components/FirmwareSingleImage/index.js
deleted file mode 100644
index 06f31f91..00000000
--- a/src/env/components/FirmwareSingleImage/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import FirmwareSingleImage from './FirmwareSingleImage.vue';
-export default FirmwareSingleImage;
diff --git a/src/env/router/ibm.js b/src/env/router/ibm.js
index 969146cb..c4e1a698 100644
--- a/src/env/router/ibm.js
+++ b/src/env/router/ibm.js
@@ -4,6 +4,7 @@ import ClientSessions from '@/views/AccessControl/ClientSessions';
import ConsoleLayout from '@/layouts/ConsoleLayout.vue';
import DateTimeSettings from '@/views/Configuration/DateTimeSettings';
import EventLogs from '@/views/Health/EventLogs';
+import Firmware from '@/views/Configuration/Firmware';
import HardwareStatus from '@/views/Health/HardwareStatus';
import Ldap from '@/views/AccessControl/Ldap';
import LocalUserManagement from '@/views/AccessControl/LocalUserManagement';
@@ -26,7 +27,6 @@ import SslCertificates from '@/views/AccessControl/SslCertificates';
import i18n from '@/i18n';
// Custom components
-import FirmwareSingleImage from '../components/FirmwareSingleImage';
import Dumps from '../components/Dumps';
const routes = [
@@ -168,7 +168,7 @@ const routes = [
{
path: '/configuration/firmware',
name: 'firmware',
- component: FirmwareSingleImage,
+ component: Firmware,
meta: {
title: i18n.t('appPageTitle.firmware'),
},
diff --git a/src/env/store/FirmwareSingleImage/FirmwareSingleImageStore.js b/src/env/store/FirmwareSingleImage/FirmwareSingleImageStore.js
deleted file mode 100644
index ae4d6333..00000000
--- a/src/env/store/FirmwareSingleImage/FirmwareSingleImageStore.js
+++ /dev/null
@@ -1,195 +0,0 @@
-import api from '@/store/api';
-import i18n from '@/i18n';
-
-const FirmwareSingleImageStore = {
- namespaced: true,
- state: {
- bmcFirmware: [],
- hostFirmware: [],
- bmcActiveFirmwareId: null,
- hostActiveFirmwareId: null,
- applyTime: null,
- tftpAvailable: false,
- },
- getters: {
- isTftpUploadAvailable: (state) => state.tftpAvailable,
- isSingleFileUploadEnabled: (state) => state.hostFirmware.length === 0,
- activeBmcFirmware: (state) => {
- return state.bmcFirmware.find(
- (firmware) => firmware.id === state.bmcActiveFirmwareId
- );
- },
- activeHostFirmware: (state) => {
- return state.hostFirmware.find(
- (firmware) => firmware.id === state.hostActiveFirmwareId
- );
- },
- backupBmcFirmware: (state) => {
- return state.bmcFirmware.find(
- (firmware) => firmware.id !== state.bmcActiveFirmwareId
- );
- },
- backupHostFirmware: (state) => {
- return state.hostFirmware.find(
- (firmware) => firmware.id !== state.hostActiveFirmwareId
- );
- },
- bmcFirmwareCurrentVersion: (_, getters) =>
- getters.activeBmcFirmware?.version, //this getter is needed for the Overview page,
- },
- mutations: {
- setActiveBmcFirmwareId: (state, id) => (state.bmcActiveFirmwareId = id),
- setActiveHostFirmwareId: (state, id) => (state.hostActiveFirmwareId = id),
- setBmcFirmware: (state, firmware) => (state.bmcFirmware = firmware),
- setHostFirmware: (state, firmware) => (state.hostFirmware = firmware),
- setApplyTime: (state, applyTime) => (state.applyTime = applyTime),
- setTftpUploadAvailable: (state, tftpAvailable) =>
- (state.tftpAvailable = tftpAvailable),
- },
- actions: {
- async getFirmwareInformation({ dispatch }) {
- dispatch('getActiveHostFirmware');
- dispatch('getActiveBmcFirmware');
- return await dispatch('getFirmwareInventory');
- },
- getActiveBmcFirmware({ commit }) {
- return api
- .get('/redfish/v1/Managers/bmc')
- .then(({ data: { Links } }) => {
- const id = Links?.ActiveSoftwareImage['@odata.id'].split('/').pop();
- commit('setActiveBmcFirmwareId', id);
- })
- .catch((error) => console.log(error));
- },
- getActiveHostFirmware({ commit }) {
- return api
- .get('/redfish/v1/Systems/system/Bios')
- .then(({ data: { Links } }) => {
- const id = Links?.ActiveSoftwareImage['@odata.id'].split('/').pop();
- commit('setActiveHostFirmwareId', id);
- })
- .catch((error) => console.log(error));
- },
- async getFirmwareInventory({ commit }) {
- const inventoryList = await api
- .get('/redfish/v1/UpdateService/FirmwareInventory')
- .then(({ data: { Members = [] } = {} }) =>
- Members.map((item) => api.get(item['@odata.id']))
- )
- .catch((error) => console.log(error));
- await api
- .all(inventoryList)
- .then((response) => {
- const bmcFirmware = [];
- const hostFirmware = [];
- response.forEach(({ data }) => {
- const firmwareType = data?.RelatedItem?.[0]?.['@odata.id']
- .split('/')
- .pop();
- const item = {
- version: data?.Version,
- id: data?.Id,
- location: data?.['@odata.id'],
- status: data?.Status?.Health,
- };
- if (firmwareType === 'bmc') {
- bmcFirmware.push(item);
- } else if (firmwareType === 'Bios') {
- hostFirmware.push(item);
- }
- });
- commit('setBmcFirmware', bmcFirmware);
- commit('setHostFirmware', hostFirmware);
- })
- .catch((error) => {
- console.log(error);
- });
- },
- getUpdateServiceSettings({ commit }) {
- api
- .get('/redfish/v1/UpdateService')
- .then(({ data }) => {
- const applyTime =
- data.HttpPushUriOptions.HttpPushUriApplyTime.ApplyTime;
- const allowableActions =
- data?.Actions?.['#UpdateService.SimpleUpdate']?.[
- 'TransferProtocol@Redfish.AllowableValues'
- ];
-
- commit('setApplyTime', applyTime);
- if (allowableActions.includes('TFTP')) {
- commit('setTftpUploadAvailable', true);
- }
- })
- .catch((error) => console.log(error));
- },
- setApplyTimeImmediate({ commit }) {
- const data = {
- HttpPushUriOptions: {
- HttpPushUriApplyTime: {
- ApplyTime: 'Immediate',
- },
- },
- };
- return api
- .patch('/redfish/v1/UpdateService', data)
- .then(() => commit('setApplyTime', 'Immediate'))
- .catch((error) => console.log(error));
- },
- async uploadFirmware({ state, dispatch }, image) {
- if (state.applyTime !== 'Immediate') {
- // ApplyTime must be set to Immediate before making
- // request to update firmware
- await dispatch('setApplyTimeImmediate');
- }
- return await api
- .post('/redfish/v1/UpdateService', image, {
- headers: { 'Content-Type': 'application/octet-stream' },
- })
- .catch((error) => {
- console.log(error);
- throw new Error(i18n.t('pageFirmware.toast.errorUploadAndReboot'));
- });
- },
- async uploadFirmwareTFTP({ state, dispatch }, fileAddress) {
- const data = {
- TransferProtocol: 'TFTP',
- ImageURI: fileAddress,
- };
- if (state.applyTime !== 'Immediate') {
- // ApplyTime must be set to Immediate before making
- // request to update firmware
- await dispatch('setApplyTimeImmediate');
- }
- return await api
- .post(
- '/redfish/v1/UpdateService/Actions/UpdateService.SimpleUpdate',
- data
- )
- .catch((error) => {
- console.log(error);
- throw new Error(i18n.t('pageFirmware.toast.errorUploadAndReboot'));
- });
- },
- async switchFirmwareAndReboot({ getters }) {
- const backupLoaction = getters.backupBmcFirmware.location;
- const data = {
- Links: {
- ActiveSoftwareImage: {
- '@odata.id': backupLoaction,
- },
- },
- };
- return await api
- .patch('/redfish/v1/Managers/bmc', data)
- .catch((error) => {
- console.log(error);
- throw new Error(
- i18n.t('pageFirmware.singleFileUpload.toast.errorSwitchImages')
- );
- });
- },
- },
-};
-
-export default FirmwareSingleImageStore;
diff --git a/src/env/store/ibm.js b/src/env/store/ibm.js
index e19dd48c..980236fc 100644
--- a/src/env/store/ibm.js
+++ b/src/env/store/ibm.js
@@ -1,11 +1,8 @@
import store from '@/store';
-import FirmwareSingleImageStore from './FirmwareSingleImage/FirmwareSingleImageStore';
import DumpsStore from './Dumps/DumpsStore';
store.unregisterModule('virtualMedia');
-store.unregisterModule('firmware');
-store.registerModule('firmwareSingleImage', FirmwareSingleImageStore);
store.registerModule('dumps', DumpsStore);
export default store;