1c4b8757eSDixsie Wolmers<template> 2c4b8757eSDixsie Wolmers <page-section 3c4b8757eSDixsie Wolmers v-if="firstInterface" 4c4b8757eSDixsie Wolmers :section-title="$t('pageNetwork.networkSettings')" 5c4b8757eSDixsie Wolmers > 6c4b8757eSDixsie Wolmers <b-row> 7db47b7e1SSean Zhang <b-col md="2"> 8c4b8757eSDixsie Wolmers <dl> 912dc20c3SDixsie Wolmers <dt> 1012dc20c3SDixsie Wolmers {{ $t('pageNetwork.hostname') }} 1112dc20c3SDixsie Wolmers <b-button variant="link" class="p-1" @click="initSettingsModal()"> 1212dc20c3SDixsie Wolmers <icon-edit :title="$t('pageNetwork.modal.editHostnameTitle')" /> 1312dc20c3SDixsie Wolmers </b-button> 1412dc20c3SDixsie Wolmers </dt> 15b8a2e704SFarah Rasheed <dd style="word-break: break-all"> 16b8a2e704SFarah Rasheed {{ dataFormatter(firstInterface.hostname) }} 17b8a2e704SFarah Rasheed </dd> 18c4b8757eSDixsie Wolmers </dl> 19c4b8757eSDixsie Wolmers </b-col> 20db47b7e1SSean Zhang <b-col md="2"> 21db47b7e1SSean Zhang <dl> 22db47b7e1SSean Zhang <dt>{{ $t('pageNetwork.ipVersion') }}</dt> 23db47b7e1SSean Zhang <dd>{{ $t('pageNetwork.ipv4') }}</dd> 24db47b7e1SSean Zhang <dd>{{ $t('pageNetwork.ipv6') }}</dd> 25db47b7e1SSean Zhang </dl> 26db47b7e1SSean Zhang </b-col> 27db47b7e1SSean Zhang <b-col md="2"> 28c4b8757eSDixsie Wolmers <dl> 29c4b8757eSDixsie Wolmers <dt>{{ $t('pageNetwork.useDomainName') }}</dt> 30c4b8757eSDixsie Wolmers <dd> 31c4b8757eSDixsie Wolmers <b-form-checkbox 32c4b8757eSDixsie Wolmers id="useDomainNameSwitch" 33c4b8757eSDixsie Wolmers v-model="useDomainNameState" 34c4b8757eSDixsie Wolmers data-test-id="networkSettings-switch-useDomainName" 35c4b8757eSDixsie Wolmers switch 36c4b8757eSDixsie Wolmers @change="changeDomainNameState" 37c4b8757eSDixsie Wolmers > 38c4b8757eSDixsie Wolmers <span v-if="useDomainNameState"> 39c4b8757eSDixsie Wolmers {{ $t('global.status.enabled') }} 40c4b8757eSDixsie Wolmers </span> 41c4b8757eSDixsie Wolmers <span v-else>{{ $t('global.status.disabled') }}</span> 42c4b8757eSDixsie Wolmers </b-form-checkbox> 43c4b8757eSDixsie Wolmers </dd> 44db47b7e1SSean Zhang <dd> 45db47b7e1SSean Zhang <b-form-checkbox 46db47b7e1SSean Zhang id="useDomainNameSwitchIpv6" 47db47b7e1SSean Zhang v-model="useDomainNameStateIpv6" 48db47b7e1SSean Zhang data-test-id="networkSettings-switch-useDomainNameIpv6" 49db47b7e1SSean Zhang switch 50db47b7e1SSean Zhang @change="changeDomainNameStateIpv6" 51db47b7e1SSean Zhang > 52db47b7e1SSean Zhang <span v-if="useDomainNameStateIpv6"> 53db47b7e1SSean Zhang {{ $t('global.status.enabled') }} 54db47b7e1SSean Zhang </span> 55db47b7e1SSean Zhang <span v-else>{{ $t('global.status.disabled') }}</span> 56db47b7e1SSean Zhang </b-form-checkbox> 57db47b7e1SSean Zhang </dd> 58c4b8757eSDixsie Wolmers </dl> 59c4b8757eSDixsie Wolmers </b-col> 60db47b7e1SSean Zhang <b-col md="2"> 61c4b8757eSDixsie Wolmers <dl> 62c4b8757eSDixsie Wolmers <dt>{{ $t('pageNetwork.useDns') }}</dt> 63c4b8757eSDixsie Wolmers <dd> 64c4b8757eSDixsie Wolmers <b-form-checkbox 65c4b8757eSDixsie Wolmers id="useDnsSwitch" 66c4b8757eSDixsie Wolmers v-model="useDnsState" 67c4b8757eSDixsie Wolmers data-test-id="networkSettings-switch-useDns" 68c4b8757eSDixsie Wolmers switch 69c4b8757eSDixsie Wolmers @change="changeDnsState" 70c4b8757eSDixsie Wolmers > 71c4b8757eSDixsie Wolmers <span v-if="useDnsState"> 72c4b8757eSDixsie Wolmers {{ $t('global.status.enabled') }} 73c4b8757eSDixsie Wolmers </span> 74c4b8757eSDixsie Wolmers <span v-else>{{ $t('global.status.disabled') }}</span> 75c4b8757eSDixsie Wolmers </b-form-checkbox> 76c4b8757eSDixsie Wolmers </dd> 77db47b7e1SSean Zhang <dd> 78db47b7e1SSean Zhang <b-form-checkbox 79db47b7e1SSean Zhang id="useDnsSwitchIpv6" 80db47b7e1SSean Zhang v-model="useDnsStateIpv6" 81db47b7e1SSean Zhang data-test-id="networkSettings-switch-useDnsIpv6" 82db47b7e1SSean Zhang switch 83db47b7e1SSean Zhang @change="changeDnsStateIpv6" 84db47b7e1SSean Zhang > 85db47b7e1SSean Zhang <span v-if="useDnsStateIpv6"> 86db47b7e1SSean Zhang {{ $t('global.status.enabled') }} 87db47b7e1SSean Zhang </span> 88db47b7e1SSean Zhang <span v-else>{{ $t('global.status.disabled') }}</span> 89db47b7e1SSean Zhang </b-form-checkbox> 90db47b7e1SSean Zhang </dd> 91c4b8757eSDixsie Wolmers </dl> 92c4b8757eSDixsie Wolmers </b-col> 93db47b7e1SSean Zhang <b-col md="2"> 94c4b8757eSDixsie Wolmers <dl> 95c4b8757eSDixsie Wolmers <dt>{{ $t('pageNetwork.useNtp') }}</dt> 96c4b8757eSDixsie Wolmers <dd> 97c4b8757eSDixsie Wolmers <b-form-checkbox 98c4b8757eSDixsie Wolmers id="useNtpSwitch" 99c4b8757eSDixsie Wolmers v-model="useNtpState" 100c4b8757eSDixsie Wolmers data-test-id="networkSettings-switch-useNtp" 101c4b8757eSDixsie Wolmers switch 102c4b8757eSDixsie Wolmers @change="changeNtpState" 103c4b8757eSDixsie Wolmers > 104c4b8757eSDixsie Wolmers <span v-if="useNtpState"> 105c4b8757eSDixsie Wolmers {{ $t('global.status.enabled') }} 106c4b8757eSDixsie Wolmers </span> 107c4b8757eSDixsie Wolmers <span v-else>{{ $t('global.status.disabled') }}</span> 108c4b8757eSDixsie Wolmers </b-form-checkbox> 109c4b8757eSDixsie Wolmers </dd> 110db47b7e1SSean Zhang <dd> 111db47b7e1SSean Zhang <b-form-checkbox 112db47b7e1SSean Zhang id="useNtpSwitchIpv6" 113db47b7e1SSean Zhang v-model="useNtpStateIpv6" 114db47b7e1SSean Zhang data-test-id="networkSettings-switch-useNtpIpv6" 115db47b7e1SSean Zhang switch 116db47b7e1SSean Zhang @change="changeNtpStateIpv6" 117db47b7e1SSean Zhang > 118db47b7e1SSean Zhang <span v-if="useNtpStateIpv6"> 119db47b7e1SSean Zhang {{ $t('global.status.enabled') }} 120db47b7e1SSean Zhang </span> 121db47b7e1SSean Zhang <span v-else>{{ $t('global.status.disabled') }}</span> 122db47b7e1SSean Zhang </b-form-checkbox> 123db47b7e1SSean Zhang </dd> 124c4b8757eSDixsie Wolmers </dl> 125c4b8757eSDixsie Wolmers </b-col> 126c4b8757eSDixsie Wolmers </b-row> 127c4b8757eSDixsie Wolmers </page-section> 128c4b8757eSDixsie Wolmers</template> 129c4b8757eSDixsie Wolmers 130c4b8757eSDixsie Wolmers<script> 131c4b8757eSDixsie Wolmersimport BVToastMixin from '@/components/Mixins/BVToastMixin'; 13212dc20c3SDixsie Wolmersimport IconEdit from '@carbon/icons-vue/es/edit/16'; 133c4b8757eSDixsie Wolmersimport DataFormatterMixin from '@/components/Mixins/DataFormatterMixin'; 134c4b8757eSDixsie Wolmersimport PageSection from '@/components/Global/PageSection'; 135c4b8757eSDixsie Wolmersimport { mapState } from 'vuex'; 136*de23ea23SSurya Vimport { useI18n } from 'vue-i18n'; 137c4b8757eSDixsie Wolmers 138c4b8757eSDixsie Wolmersexport default { 139c4b8757eSDixsie Wolmers name: 'GlobalNetworkSettings', 14012dc20c3SDixsie Wolmers components: { IconEdit, PageSection }, 141c4b8757eSDixsie Wolmers mixins: [BVToastMixin, DataFormatterMixin], 142c4b8757eSDixsie Wolmers 143c4b8757eSDixsie Wolmers data() { 144c4b8757eSDixsie Wolmers return { 145*de23ea23SSurya V $t: useI18n().t, 146c4b8757eSDixsie Wolmers hostname: '', 147c4b8757eSDixsie Wolmers }; 148c4b8757eSDixsie Wolmers }, 149c4b8757eSDixsie Wolmers computed: { 150c4b8757eSDixsie Wolmers ...mapState('network', ['ethernetData']), 151c4b8757eSDixsie Wolmers firstInterface() { 152c4b8757eSDixsie Wolmers return this.$store.getters['network/globalNetworkSettings'][0]; 153c4b8757eSDixsie Wolmers }, 154c4b8757eSDixsie Wolmers useDomainNameState: { 155c4b8757eSDixsie Wolmers get() { 156c4b8757eSDixsie Wolmers return this.$store.getters['network/globalNetworkSettings'][0] 157c4b8757eSDixsie Wolmers .useDomainNameEnabled; 158c4b8757eSDixsie Wolmers }, 159c4b8757eSDixsie Wolmers set(newValue) { 160c4b8757eSDixsie Wolmers return newValue; 161c4b8757eSDixsie Wolmers }, 162c4b8757eSDixsie Wolmers }, 163c4b8757eSDixsie Wolmers useDnsState: { 164c4b8757eSDixsie Wolmers get() { 165c4b8757eSDixsie Wolmers return this.$store.getters['network/globalNetworkSettings'][0] 166c4b8757eSDixsie Wolmers .useDnsEnabled; 167c4b8757eSDixsie Wolmers }, 168c4b8757eSDixsie Wolmers set(newValue) { 169c4b8757eSDixsie Wolmers return newValue; 170c4b8757eSDixsie Wolmers }, 171c4b8757eSDixsie Wolmers }, 172c4b8757eSDixsie Wolmers useNtpState: { 173c4b8757eSDixsie Wolmers get() { 174c4b8757eSDixsie Wolmers return this.$store.getters['network/globalNetworkSettings'][0] 175c4b8757eSDixsie Wolmers .useNtpEnabled; 176c4b8757eSDixsie Wolmers }, 177c4b8757eSDixsie Wolmers set(newValue) { 178c4b8757eSDixsie Wolmers return newValue; 179c4b8757eSDixsie Wolmers }, 180c4b8757eSDixsie Wolmers }, 181db47b7e1SSean Zhang useDomainNameStateIpv6: { 182db47b7e1SSean Zhang get() { 183db47b7e1SSean Zhang return this.$store.getters['network/globalNetworkSettings'][0] 184db47b7e1SSean Zhang .useDomainNameEnabledIpv6; 185db47b7e1SSean Zhang }, 186db47b7e1SSean Zhang set(newValue) { 187db47b7e1SSean Zhang return newValue; 188db47b7e1SSean Zhang }, 189db47b7e1SSean Zhang }, 190db47b7e1SSean Zhang useDnsStateIpv6: { 191db47b7e1SSean Zhang get() { 192db47b7e1SSean Zhang return this.$store.getters['network/globalNetworkSettings'][0] 193db47b7e1SSean Zhang .useDnsEnabledIpv6v6; 194db47b7e1SSean Zhang }, 195db47b7e1SSean Zhang set(newValue) { 196db47b7e1SSean Zhang return newValue; 197db47b7e1SSean Zhang }, 198db47b7e1SSean Zhang }, 199db47b7e1SSean Zhang useNtpStateIpv6: { 200db47b7e1SSean Zhang get() { 201db47b7e1SSean Zhang return this.$store.getters['network/globalNetworkSettings'][0] 202db47b7e1SSean Zhang .useNtpEnabledIpv6; 203db47b7e1SSean Zhang }, 204db47b7e1SSean Zhang set(newValue) { 205db47b7e1SSean Zhang return newValue; 206db47b7e1SSean Zhang }, 207db47b7e1SSean Zhang }, 208c4b8757eSDixsie Wolmers }, 209c4b8757eSDixsie Wolmers created() { 210c4b8757eSDixsie Wolmers this.$store.dispatch('network/getEthernetData').finally(() => { 211c4b8757eSDixsie Wolmers // Emit initial data fetch complete to parent component 212c4b8757eSDixsie Wolmers this.$root.$emit('network-global-settings-complete'); 213c4b8757eSDixsie Wolmers }); 214c4b8757eSDixsie Wolmers }, 215c4b8757eSDixsie Wolmers methods: { 216c4b8757eSDixsie Wolmers changeDomainNameState(state) { 217c4b8757eSDixsie Wolmers this.$store 218db47b7e1SSean Zhang .dispatch('network/saveDomainNameState', { 219db47b7e1SSean Zhang domainState: state, 220db47b7e1SSean Zhang ipVersion: 'IPv4', 221db47b7e1SSean Zhang }) 222c4b8757eSDixsie Wolmers .then((success) => { 223c4b8757eSDixsie Wolmers this.successToast(success); 224c4b8757eSDixsie Wolmers }) 225c4b8757eSDixsie Wolmers .catch(({ message }) => this.errorToast(message)); 226c4b8757eSDixsie Wolmers }, 227c4b8757eSDixsie Wolmers changeDnsState(state) { 228c4b8757eSDixsie Wolmers this.$store 229db47b7e1SSean Zhang .dispatch('network/saveDnsState', { 230db47b7e1SSean Zhang dnsState: state, 231db47b7e1SSean Zhang ipVersion: 'IPv4', 232db47b7e1SSean Zhang }) 233db47b7e1SSean Zhang .then((message) => { 234db47b7e1SSean Zhang this.successToast(message); 235db47b7e1SSean Zhang }) 236c4b8757eSDixsie Wolmers .catch(({ message }) => this.errorToast(message)); 237c4b8757eSDixsie Wolmers }, 238c4b8757eSDixsie Wolmers changeNtpState(state) { 239c4b8757eSDixsie Wolmers this.$store 240db47b7e1SSean Zhang .dispatch('network/saveNtpState', { 241db47b7e1SSean Zhang ntpState: state, 242db47b7e1SSean Zhang ipVersion: 'IPv4', 243db47b7e1SSean Zhang }) 244db47b7e1SSean Zhang .then((message) => { 245db47b7e1SSean Zhang this.successToast(message); 246db47b7e1SSean Zhang }) 247db47b7e1SSean Zhang .catch(({ message }) => this.errorToast(message)); 248db47b7e1SSean Zhang }, 249db47b7e1SSean Zhang changeDomainNameStateIpv6(state) { 250db47b7e1SSean Zhang this.$store 251db47b7e1SSean Zhang .dispatch('network/saveDomainNameState', { 252db47b7e1SSean Zhang domainState: state, 253db47b7e1SSean Zhang ipVersion: 'IPv6', 254db47b7e1SSean Zhang }) 255db47b7e1SSean Zhang .then((success) => { 256db47b7e1SSean Zhang this.successToast(success); 257db47b7e1SSean Zhang }) 258db47b7e1SSean Zhang .catch(({ message }) => this.errorToast(message)); 259db47b7e1SSean Zhang }, 260db47b7e1SSean Zhang changeDnsStateIpv6(state) { 261db47b7e1SSean Zhang this.$store 262db47b7e1SSean Zhang .dispatch('network/saveDnsState', { 263db47b7e1SSean Zhang dnsState: state, 264db47b7e1SSean Zhang ipVersion: 'IPv6', 265db47b7e1SSean Zhang }) 266db47b7e1SSean Zhang .then((message) => { 267db47b7e1SSean Zhang this.successToast(message); 268db47b7e1SSean Zhang }) 269db47b7e1SSean Zhang .catch(({ message }) => this.errorToast(message)); 270db47b7e1SSean Zhang }, 271db47b7e1SSean Zhang changeNtpStateIpv6(state) { 272db47b7e1SSean Zhang this.$store 273db47b7e1SSean Zhang .dispatch('network/saveNtpState', { 274db47b7e1SSean Zhang ntpState: state, 275db47b7e1SSean Zhang ipVersion: 'IPv6', 276db47b7e1SSean Zhang }) 277db47b7e1SSean Zhang .then((message) => { 278db47b7e1SSean Zhang this.successToast(message); 279db47b7e1SSean Zhang }) 280c4b8757eSDixsie Wolmers .catch(({ message }) => this.errorToast(message)); 281c4b8757eSDixsie Wolmers }, 28212dc20c3SDixsie Wolmers initSettingsModal() { 28312dc20c3SDixsie Wolmers this.$bvModal.show('modal-hostname'); 28412dc20c3SDixsie Wolmers }, 285c4b8757eSDixsie Wolmers }, 286c4b8757eSDixsie Wolmers}; 287c4b8757eSDixsie Wolmers</script> 288