ui/app/components/container/form-networking/component.js

104 lines
2.4 KiB
JavaScript

import { get, set } from '@ember/object';
import Component from '@ember/component';
import layout from './template';
export default Component.extend({
layout,
// Inputs
instance: null,
service: null,
errors: null,
editing: null,
initHostAliasesArray: [],
initOptionsArray: [],
classNames: ['accordion-wrapper'],
init() {
this._super(...arguments);
this.initHostAliases();
this.initOptions();
},
actions: {
hostAliasesChanged(hostAliases) {
const out = [];
hostAliases.filter((alias) => alias.value && alias.key).forEach((alias) => {
out.push({
hostnames: [alias.value],
ip: alias.key,
});
});
set(this, 'service.hostAliases', out);
},
optionsChanged(options) {
const out = [];
options.filter((option) => get(option, 'key') && get(option, 'value')).forEach((option) => {
out.push({
name: get(option, 'key'),
value: get(option, 'value'),
});
});
const dnsConfig = get(this, 'service.dnsConfig');
if ( !dnsConfig ) {
set(this, 'service.dnsConfig', { options: out });
} else {
set(this, 'service.dnsConfig.options', out);
}
},
updateNameservers(nameservers) {
const dnsConfig = get(this, 'service.dnsConfig');
if ( !dnsConfig ) {
set(this, 'service.dnsConfig', { nameservers });
} else {
set(this, 'service.dnsConfig.nameservers', nameservers);
}
},
updateSearches(searches) {
const dnsConfig = get(this, 'service.dnsConfig');
if ( !dnsConfig ) {
set(this, 'service.dnsConfig', { searches });
} else {
set(this, 'service.dnsConfig.searches', searches);
}
}
},
initHostAliases() {
const aliases = get(this, 'service.hostAliases');
set(this, 'initHostAliasesArray', []);
(aliases || []).forEach((alias) => {
(alias.hostnames || []).forEach((hostname) => {
this.initHostAliasesArray.push({
key: alias.ip,
value: hostname,
});
})
});
},
initOptions() {
const options = get(this, 'service.dnsConfig.options');
set(this, 'initOptionsArray', []);
(options || []).forEach((option) => {
this.initOptionsArray.push({
key: get(option, 'name'),
value: get(option, 'value'),
});
});
},
});