diff --git a/lib/global-admin/addon/clusters/new/rke/controller.js b/lib/global-admin/addon/clusters/new/rke/controller.js index fb101ef6f..91744dbb2 100644 --- a/lib/global-admin/addon/clusters/new/rke/controller.js +++ b/lib/global-admin/addon/clusters/new/rke/controller.js @@ -158,10 +158,6 @@ export default Controller.extend(ACC, { isDedicated: equal('scope', 'dedicated'), - filteredMachines: computed('model.cluster.nodes.@each.{id,state}', function () { - return (get(this, 'model.cluster.nodes') || []); - }), - etcdCount: computed('model.cluster.nodes.@each.role', function () { return (get(this, 'model.cluster.nodes')||[]) .filter((x) => (get(x,'role')||[]) @@ -218,8 +214,15 @@ export default Controller.extend(ACC, { nodes.removeObject(node); }, - pickRoles() { + clearRoles() { const nodes = get(this, 'model.cluster.nodes'); + nodes.forEach((node) => { + node.set('role',[]); + }); + }, + + pickRoles() { + const nodes = get(this, 'model.cluster.nodes').sortBy('displayName'); const numNodes = get(nodes, 'length'); let haveEtcd = get(this,'etcdCount'); let haveCp = get(this,'cpCount'); @@ -280,19 +283,19 @@ export default Controller.extend(ACC, { }, toggleRole(node, type) { - if (get(node, 'role')) { - let roles = get(node, 'role').slice(); - - if (roles.includes(type)) { - set(node, 'role', roles.without(type)); - } else { - roles.pushObject(type); - // wont notify of change with out this - node.notifyPropertyChange('role'); - } - } else { - set(node, 'role', [type]); + let roles = get(node, 'role'); + if ( !roles ) { + roles = []; + set(node, 'role', roles); } + + if ( roles.includes(type) ) { + roles.removeObject(type); + } else { + roles.addObject(type); + } + + node.notifyPropertyChange('role'); } }, diff --git a/lib/global-admin/addon/clusters/new/rke/template.hbs b/lib/global-admin/addon/clusters/new/rke/template.hbs index 11e621c75..c70fbf88c 100644 --- a/lib/global-admin/addon/clusters/new/rke/template.hbs +++ b/lib/global-admin/addon/clusters/new/rke/template.hbs @@ -42,10 +42,10 @@
- {{#liquid-if createNodes}} + {{#if createNodes}} {{#sortable-table classNames="grid sortable-table" - body=filteredMachines + body=model.cluster.nodes sortBy=sortBy suffix=true search=false @@ -102,9 +102,15 @@ {{/sortable-table}}
- +
+ + +
+
{{else}} {{t 'clustersPage.addPage.rke.new.nodes.createLaterDetail'}} - {{/liquid-if}} + {{/if}} {{/accordion-list-item}} {{#accordion-list-item diff --git a/lib/shared/addon/mixins/host-driver.js b/lib/shared/addon/mixins/host-driver.js index e9a7909f8..32f09a61f 100644 --- a/lib/shared/addon/mixins/host-driver.js +++ b/lib/shared/addon/mixins/host-driver.js @@ -244,7 +244,7 @@ export default Mixin.create(NewOrEdit, ManageLabels, { requestedHostname: get(this, 'primaryResource.name'), displayName: get(this, 'primaryResource.name'), state: 'to-create', - role: [], + role: ['worker'], }); } else { tpl = get(this, 'globalStore').createRecord({ @@ -272,7 +272,7 @@ export default Mixin.create(NewOrEdit, ManageLabels, { requestedHostname: get(this, 'primaryResource.name'), displayName: get(this, 'primaryResource.name'), state: 'to-create', - role: [], + role: ['worker'], }); } else { // The model was the first one, add subsequent numbers diff --git a/translations/en-us.yaml b/translations/en-us.yaml index cc5d3499e..d71916070 100644 --- a/translations/en-us.yaml +++ b/translations/en-us.yaml @@ -690,6 +690,7 @@ clustersPage: header: Add Cluster new: addNode: Add a new node + clearRoles: Clear all roles setRoles: Pick roles for me nodes: header: Nodes