xref: /openbmc/webui-vue/src/views/Settings/Network/NetworkGlobalSettings.vue (revision de23ea23d88451a2fa2774ec72053772603c23ae)
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