ui/lib/nodes/addon/components/node-driver/driver-vmwarevsphere/component.js

82 lines
2.0 KiB
JavaScript

import { alias } from '@ember/object/computed';
import { get, set, computed } from '@ember/object';
import Component from '@ember/component';
import NodeDriver from 'shared/mixins/node-driver';
import layout from './template';
import { inject as service } from '@ember/service';
import C from 'shared/utils/constants';
const DRIVER = 'vmwarevsphere';
const CONFIG = 'vmwarevsphereConfig';
export default Component.extend(NodeDriver, {
settings: service(),
layout,
driverName: DRIVER,
model: null,
showEngineUrl: false,
initParamArray: null,
config: alias(`model.${ CONFIG }`),
init() {
this._super(...arguments);
this.initCfgParam();
},
actions: {
paramChanged(array) {
const out = [];
array.filter((param) => param.value && param.key).forEach((param) => {
out.push(`${ param.key }=${ param.value }`);
});
set(this, 'config.cfgparam', out);
}
},
network: computed('config.network', {
get() {
return get(this, 'config.network.firstObject');
},
set(k, value) {
set(this, 'config.network', [value]);
return value;
}
}),
bootstrap() {
let iso = get(this, `settings.${ C.SETTING.ENGINE_ISO_URL }`) || 'https://releases.rancher.com/os/latest/rancheros-vmware.iso';
let config = get(this, 'globalStore').createRecord({
type: CONFIG,
password: '',
cpuCount: 2,
memorySize: 2048,
diskSize: 20000,
vcenterPort: 443,
network: [],
boot2dockerUrl: iso,
});
set(this, `model.${ CONFIG }`, config);
},
initCfgParam() {
const cfgparam = get(this, 'config.cfgparam') || [];
set(this, 'initParamArray', []);
(cfgparam || []).forEach((param) => {
const index = (param || '').indexOf('=');
if ( index > -1 ) {
get(this, 'initParamArray').push({
key: param.slice(0, index),
value: param.slice(index + 1),
});
}
});
},
});