summaryrefslogtreecommitdiff
path: root/src/views/_sila/Operations/ServerPowerOperations/BootSettings.vue
diff options
context:
space:
mode:
Diffstat (limited to 'src/views/_sila/Operations/ServerPowerOperations/BootSettings.vue')
-rw-r--r--src/views/_sila/Operations/ServerPowerOperations/BootSettings.vue132
1 files changed, 132 insertions, 0 deletions
diff --git a/src/views/_sila/Operations/ServerPowerOperations/BootSettings.vue b/src/views/_sila/Operations/ServerPowerOperations/BootSettings.vue
new file mode 100644
index 00000000..4896286b
--- /dev/null
+++ b/src/views/_sila/Operations/ServerPowerOperations/BootSettings.vue
@@ -0,0 +1,132 @@
+<template>
+ <div class="form-background p-3">
+ <b-form novalidate @submit.prevent="handleSubmit">
+ <b-form-group
+ :label="
+ $t('pageServerPowerOperations.bootSettings.bootSettingsOverride')
+ "
+ label-for="boot-option"
+ class="mb-3"
+ >
+ <b-form-select
+ id="boot-option"
+ v-model="form.bootOption"
+ :disabled="bootSourceOptions.length === 0"
+ :options="bootSourceOptions"
+ @change="onChangeSelect"
+ >
+ </b-form-select>
+ </b-form-group>
+ <b-form-checkbox
+ v-model="form.oneTimeBoot"
+ class="mb-4"
+ :disabled="form.bootOption === 'None'"
+ @change="$v.form.oneTimeBoot.$touch()"
+ >
+ {{ $t('pageServerPowerOperations.bootSettings.enableOneTimeBoot') }}
+ </b-form-checkbox>
+ <b-form-group
+ :label="$t('pageServerPowerOperations.bootSettings.tpmRequiredPolicy')"
+ >
+ <b-form-text id="tpm-required-policy-help-block">
+ {{
+ $t('pageServerPowerOperations.bootSettings.tpmRequiredPolicyHelper')
+ }}
+ </b-form-text>
+ <b-form-checkbox
+ id="tpm-required-policy"
+ v-model="form.tpmPolicyOn"
+ aria-describedby="tpm-required-policy-help-block"
+ @change="$v.form.tpmPolicyOn.$touch()"
+ >
+ {{ $t('global.status.enabled') }}
+ </b-form-checkbox>
+ </b-form-group>
+ <b-button variant="primary" type="submit" class="mb-3">
+ {{ $t('global.action.save') }}
+ </b-button>
+ </b-form>
+ </div>
+</template>
+
+<script>
+import { mapState } from 'vuex';
+import BVToastMixin from '@/components/Mixins/BVToastMixin';
+import LoadingBarMixin from '@/components/Mixins/LoadingBarMixin';
+
+export default {
+ name: 'BootSettings',
+ mixins: [BVToastMixin, LoadingBarMixin],
+ data() {
+ return {
+ form: {
+ bootOption: this.$store.getters['serverBootSettings/bootSource'],
+ oneTimeBoot: this.$store.getters['serverBootSettings/overrideEnabled'],
+ tpmPolicyOn: this.$store.getters['serverBootSettings/tpmEnabled'],
+ },
+ };
+ },
+ computed: {
+ ...mapState('serverBootSettings', [
+ 'bootSourceOptions',
+ 'bootSource',
+ 'overrideEnabled',
+ 'tpmEnabled',
+ ]),
+ },
+ watch: {
+ bootSource: function (value) {
+ this.form.bootOption = value;
+ },
+ overrideEnabled: function (value) {
+ this.form.oneTimeBoot = value;
+ },
+ tpmEnabled: function (value) {
+ this.form.tpmPolicyOn = value;
+ },
+ },
+ validations: {
+ // Empty validations to leverage vuelidate form states
+ // to check for changed values
+ form: {
+ bootOption: {},
+ oneTimeBoot: {},
+ tpmPolicyOn: {},
+ },
+ },
+ created() {
+ this.$store
+ .dispatch('serverBootSettings/getTpmPolicy')
+ .finally(() =>
+ this.$root.$emit('server-power-operations-boot-settings-complete')
+ );
+ },
+ methods: {
+ handleSubmit() {
+ this.startLoader();
+ const tpmPolicyChanged = this.$v.form.tpmPolicyOn.$dirty;
+ let settings;
+ let bootSource = this.form.bootOption;
+ let overrideEnabled = this.form.oneTimeBoot;
+ let tpmEnabled = null;
+
+ if (tpmPolicyChanged) tpmEnabled = this.form.tpmPolicyOn;
+ settings = { bootSource, overrideEnabled, tpmEnabled };
+
+ this.$store
+ .dispatch('serverBootSettings/saveSettings', settings)
+ .then((message) => this.successToast(message))
+ .catch(({ message }) => this.errorToast(message))
+ .finally(() => {
+ this.$v.form.$reset();
+ this.endLoader();
+ });
+ },
+ onChangeSelect(selectedOption) {
+ this.$v.form.bootOption.$touch();
+ // Disable one time boot if selected boot option is 'None'
+ if (selectedOption === 'None') this.form.oneTimeBoot = false;
+ },
+ },
+};
+</script>