168cbbe90SSandeepa Singh<template> 268cbbe90SSandeepa Singh <div class="form-background p-3"> 368cbbe90SSandeepa Singh <b-form novalidate @submit.prevent="handleSubmit"> 468cbbe90SSandeepa Singh <b-form-group 568cbbe90SSandeepa Singh :label=" 668cbbe90SSandeepa Singh $t('pageServerPowerOperations.bootSettings.bootSettingsOverride') 768cbbe90SSandeepa Singh " 868cbbe90SSandeepa Singh label-for="boot-option" 968cbbe90SSandeepa Singh class="mb-3" 1068cbbe90SSandeepa Singh > 1168cbbe90SSandeepa Singh <b-form-select 1268cbbe90SSandeepa Singh id="boot-option" 1368cbbe90SSandeepa Singh v-model="form.bootOption" 1468cbbe90SSandeepa Singh :disabled="bootSourceOptions.length === 0" 1568cbbe90SSandeepa Singh :options="bootSourceOptions" 1668cbbe90SSandeepa Singh @change="onChangeSelect" 1768cbbe90SSandeepa Singh > 1868cbbe90SSandeepa Singh </b-form-select> 1968cbbe90SSandeepa Singh </b-form-group> 2068cbbe90SSandeepa Singh <b-form-checkbox 2168cbbe90SSandeepa Singh v-model="form.oneTimeBoot" 2268cbbe90SSandeepa Singh class="mb-4" 2368cbbe90SSandeepa Singh :disabled="form.bootOption === 'None'" 2468cbbe90SSandeepa Singh @change="$v.form.oneTimeBoot.$touch()" 2568cbbe90SSandeepa Singh > 2668cbbe90SSandeepa Singh {{ $t('pageServerPowerOperations.bootSettings.enableOneTimeBoot') }} 2768cbbe90SSandeepa Singh </b-form-checkbox> 2868cbbe90SSandeepa Singh <b-form-group 2968cbbe90SSandeepa Singh :label="$t('pageServerPowerOperations.bootSettings.tpmRequiredPolicy')" 3068cbbe90SSandeepa Singh > 3168cbbe90SSandeepa Singh <b-form-text id="tpm-required-policy-help-block"> 3268cbbe90SSandeepa Singh {{ 3368cbbe90SSandeepa Singh $t('pageServerPowerOperations.bootSettings.tpmRequiredPolicyHelper') 3468cbbe90SSandeepa Singh }} 3568cbbe90SSandeepa Singh </b-form-text> 3668cbbe90SSandeepa Singh <b-form-checkbox 3768cbbe90SSandeepa Singh id="tpm-required-policy" 3868cbbe90SSandeepa Singh v-model="form.tpmPolicyOn" 3968cbbe90SSandeepa Singh aria-describedby="tpm-required-policy-help-block" 4068cbbe90SSandeepa Singh @change="$v.form.tpmPolicyOn.$touch()" 4168cbbe90SSandeepa Singh > 4268cbbe90SSandeepa Singh {{ $t('global.status.enabled') }} 4368cbbe90SSandeepa Singh </b-form-checkbox> 4468cbbe90SSandeepa Singh </b-form-group> 4568cbbe90SSandeepa Singh <b-button variant="primary" type="submit" class="mb-3"> 4668cbbe90SSandeepa Singh {{ $t('global.action.save') }} 4768cbbe90SSandeepa Singh </b-button> 4868cbbe90SSandeepa Singh </b-form> 4968cbbe90SSandeepa Singh </div> 5068cbbe90SSandeepa Singh</template> 5168cbbe90SSandeepa Singh 5268cbbe90SSandeepa Singh<script> 5368cbbe90SSandeepa Singhimport { mapState } from 'vuex'; 5468cbbe90SSandeepa Singhimport BVToastMixin from '@/components/Mixins/BVToastMixin'; 5568cbbe90SSandeepa Singhimport LoadingBarMixin from '@/components/Mixins/LoadingBarMixin'; 5668cbbe90SSandeepa Singh 5768cbbe90SSandeepa Singhexport default { 5868cbbe90SSandeepa Singh name: 'BootSettings', 5968cbbe90SSandeepa Singh mixins: [BVToastMixin, LoadingBarMixin], 6068cbbe90SSandeepa Singh data() { 6168cbbe90SSandeepa Singh return { 6268cbbe90SSandeepa Singh form: { 6368cbbe90SSandeepa Singh bootOption: this.$store.getters['serverBootSettings/bootSource'], 6468cbbe90SSandeepa Singh oneTimeBoot: this.$store.getters['serverBootSettings/overrideEnabled'], 6568cbbe90SSandeepa Singh tpmPolicyOn: this.$store.getters['serverBootSettings/tpmEnabled'], 6668cbbe90SSandeepa Singh }, 6768cbbe90SSandeepa Singh }; 6868cbbe90SSandeepa Singh }, 6968cbbe90SSandeepa Singh computed: { 7068cbbe90SSandeepa Singh ...mapState('serverBootSettings', [ 7168cbbe90SSandeepa Singh 'bootSourceOptions', 7268cbbe90SSandeepa Singh 'bootSource', 7368cbbe90SSandeepa Singh 'overrideEnabled', 7468cbbe90SSandeepa Singh 'tpmEnabled', 7568cbbe90SSandeepa Singh ]), 7668cbbe90SSandeepa Singh }, 7768cbbe90SSandeepa Singh watch: { 7868cbbe90SSandeepa Singh bootSource: function (value) { 7968cbbe90SSandeepa Singh this.form.bootOption = value; 8068cbbe90SSandeepa Singh }, 8168cbbe90SSandeepa Singh overrideEnabled: function (value) { 8268cbbe90SSandeepa Singh this.form.oneTimeBoot = value; 8368cbbe90SSandeepa Singh }, 8468cbbe90SSandeepa Singh tpmEnabled: function (value) { 8568cbbe90SSandeepa Singh this.form.tpmPolicyOn = value; 8668cbbe90SSandeepa Singh }, 8768cbbe90SSandeepa Singh }, 8868cbbe90SSandeepa Singh validations: { 8968cbbe90SSandeepa Singh // Empty validations to leverage vuelidate form states 9068cbbe90SSandeepa Singh // to check for changed values 9168cbbe90SSandeepa Singh form: { 9268cbbe90SSandeepa Singh bootOption: {}, 9368cbbe90SSandeepa Singh oneTimeBoot: {}, 9468cbbe90SSandeepa Singh tpmPolicyOn: {}, 9568cbbe90SSandeepa Singh }, 9668cbbe90SSandeepa Singh }, 9768cbbe90SSandeepa Singh created() { 9868cbbe90SSandeepa Singh this.$store 9968cbbe90SSandeepa Singh .dispatch('serverBootSettings/getTpmPolicy') 10068cbbe90SSandeepa Singh .finally(() => 101*8132399cSEd Tanous this.$root.$emit('server-power-operations-boot-settings-complete'), 10268cbbe90SSandeepa Singh ); 10368cbbe90SSandeepa Singh }, 10468cbbe90SSandeepa Singh methods: { 10568cbbe90SSandeepa Singh handleSubmit() { 10668cbbe90SSandeepa Singh this.startLoader(); 10768cbbe90SSandeepa Singh const tpmPolicyChanged = this.$v.form.tpmPolicyOn.$dirty; 10868cbbe90SSandeepa Singh let settings; 109e6807a4eSLei YU let bootSource = this.form.bootOption; 110e6807a4eSLei YU let overrideEnabled = this.form.oneTimeBoot; 11168cbbe90SSandeepa Singh let tpmEnabled = null; 11268cbbe90SSandeepa Singh 11368cbbe90SSandeepa Singh if (tpmPolicyChanged) tpmEnabled = this.form.tpmPolicyOn; 11468cbbe90SSandeepa Singh settings = { bootSource, overrideEnabled, tpmEnabled }; 11568cbbe90SSandeepa Singh 11668cbbe90SSandeepa Singh this.$store 11768cbbe90SSandeepa Singh .dispatch('serverBootSettings/saveSettings', settings) 11868cbbe90SSandeepa Singh .then((message) => this.successToast(message)) 11968cbbe90SSandeepa Singh .catch(({ message }) => this.errorToast(message)) 12068cbbe90SSandeepa Singh .finally(() => { 12168cbbe90SSandeepa Singh this.$v.form.$reset(); 12268cbbe90SSandeepa Singh this.endLoader(); 12368cbbe90SSandeepa Singh }); 12468cbbe90SSandeepa Singh }, 12568cbbe90SSandeepa Singh onChangeSelect(selectedOption) { 12668cbbe90SSandeepa Singh this.$v.form.bootOption.$touch(); 12768cbbe90SSandeepa Singh // Disable one time boot if selected boot option is 'None' 12868cbbe90SSandeepa Singh if (selectedOption === 'None') this.form.oneTimeBoot = false; 12968cbbe90SSandeepa Singh }, 13068cbbe90SSandeepa Singh }, 13168cbbe90SSandeepa Singh}; 13268cbbe90SSandeepa Singh</script> 133