mirror of https://github.com/rancher/ui.git
151 lines
4.0 KiB
JavaScript
151 lines
4.0 KiB
JavaScript
import Component from '@ember/component';
|
|
import { get, set, computed } from '@ember/object';
|
|
import { inject as service } from '@ember/service';
|
|
import ViewNewEdit from 'shared/mixins/view-new-edit';
|
|
import ChildHook from 'shared/mixins/child-hook';
|
|
import { alias } from '@ember/object/computed';
|
|
import layout from './template';
|
|
import { isEmpty } from '@ember/utils';
|
|
|
|
const MEMBER_CONFIG = {
|
|
type: 'clusterRoleTemplateBinding',
|
|
};
|
|
|
|
export default Component.extend(ViewNewEdit, ChildHook, {
|
|
layout,
|
|
globalStore: service(),
|
|
intl: service(),
|
|
access: service(),
|
|
|
|
cluster: alias('model.cluster'),
|
|
originalCluster: alias('model.originalCluster'),
|
|
primaryResource: alias('model.cluster'),
|
|
|
|
step: 1,
|
|
initialProvider: null,
|
|
memberConfig: MEMBER_CONFIG,
|
|
newCluster: false,
|
|
|
|
init() {
|
|
this._super(...arguments);
|
|
|
|
// On edit pass in initialProvider, for create just set provider directly
|
|
const initialProvider = get(this, 'initialProvider');
|
|
if ( initialProvider ) {
|
|
set(this, 'provider', initialProvider);
|
|
}
|
|
|
|
if ( isEmpty(get(this, 'cluster.id')) ){
|
|
set(this, 'newCluster', true);
|
|
}
|
|
// if ( get(this, 'cluster.id') && initialProvider ){
|
|
// set(this,'step', 2);
|
|
// }
|
|
},
|
|
|
|
actions: {
|
|
clickNext() {
|
|
this.$('BUTTON[type="submit"]').click();
|
|
},
|
|
|
|
close() {
|
|
this.sendAction('close');
|
|
},
|
|
},
|
|
|
|
providerChoices: computed(
|
|
'isEdit',
|
|
'cluster.rancherKubernetesEngineConfig',
|
|
'nodeDrivers.[]',
|
|
'intl.locale',
|
|
function() {
|
|
const intl = get(this, 'intl');
|
|
|
|
let out = [
|
|
{name: 'googlegke', driver: 'googlegke'},
|
|
// {name: 'amazoneks', driver: 'amazoneks'},
|
|
{name: 'azureaks', driver: 'azureaks'},
|
|
];
|
|
|
|
get(this, 'model.nodeDrivers').filterBy('active',true).sortBy('name').forEach((driver) => {
|
|
const name = get(driver, 'name');
|
|
const hasUi = get(driver, 'hasUi');
|
|
|
|
out.push({
|
|
name: name,
|
|
driver: 'rke',
|
|
genericIcon: !hasUi,
|
|
nodeComponent: hasUi ? name : 'generic',
|
|
nodeWhich: name,
|
|
});
|
|
}),
|
|
|
|
out.push({name: 'custom', driver: 'rke', nodeWhich: 'custom', preSave: true});
|
|
out.push({name: 'import', driver: 'import', preSave: true});
|
|
|
|
out.forEach((driver) => {
|
|
const key = `clusterNew.${driver.name}.label`;
|
|
if ( !get(driver,'displayName') && intl.exists(key) ) {
|
|
set(driver, 'displayName', intl.t(key));
|
|
}
|
|
});
|
|
|
|
if ( get(this, 'isEdit') && get(this, 'cluster.rancherKubernetesEngineConfig') ) {
|
|
out = out.filterBy('driver','rke');
|
|
}
|
|
|
|
return out;
|
|
}),
|
|
|
|
providerGroups: computed('providerChoices.@each.{name,driver,nodeComponent,nodeWhich,preSave}', function() {
|
|
const choices = get(this, 'providerChoices');
|
|
const group = [];
|
|
let groupIndex = 0;
|
|
choices.forEach((item, index) => {
|
|
if (index % 6 === 0) {
|
|
group.push([item]);
|
|
groupIndex++;
|
|
} else {
|
|
group[groupIndex - 1].push(item);
|
|
}
|
|
});
|
|
|
|
return group;
|
|
}),
|
|
|
|
driverInfo: computed('provider', function() {
|
|
const name = get(this, 'provider');
|
|
const choices = get(this, 'providerChoices');
|
|
const entry = choices.findBy('name', name);
|
|
if ( entry ) {
|
|
return {
|
|
name: entry.name,
|
|
driverComponent: `cluster-driver/driver-${entry.driver}`,
|
|
nodeWhich: entry.nodeWhich,
|
|
preSave: !!entry.preSave,
|
|
};
|
|
}
|
|
}),
|
|
|
|
didSave() {
|
|
const originalCluster = get(this, 'cluster');
|
|
return originalCluster.waitForCondition('BackingNamespaceCreated').then(() => {
|
|
return this.applyHooks().then(() => {
|
|
const clone = originalCluster.clone();
|
|
set(this, 'cluster', clone);
|
|
set(this, 'originalCluster', originalCluster);
|
|
return clone;
|
|
});
|
|
});
|
|
},
|
|
|
|
doneSaving() {
|
|
if ( get(this, 'step') === 1 && get(this, 'driverInfo.preSave') ) {
|
|
set(this, 'step', 2);
|
|
set(this, 'initialProvider', get(this, 'provider'));
|
|
} else {
|
|
this.sendAction('close');
|
|
}
|
|
},
|
|
});
|