Merge pull request #4132 from westlywright/feature.eks.v2.nodegroup.versions

Expose node group versions on eks v2 node groups
This commit is contained in:
Westly Wright 2020-08-18 10:52:16 -07:00 committed by GitHub
commit 07e14bd4bf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 176 additions and 63 deletions

View File

@ -270,6 +270,18 @@ export default Resource.extend(Grafana, ResourceUsage, {
return out;
}),
nodeGroupVersionUpdate: computed('appliedSpec.eksConfig.kubernetesVersion', 'appliedSpec.eksConfig.nodeGroups.@each.{version}', function() {
if (isEmpty(get(this, 'appliedSpec.eksConfig.nodeGroups'))) {
return false;
}
const kubernetesVersion = get(this, 'appliedSpec.eksConfig.kubernetesVersion');
const nodeGroupVersions = (get(this, 'appliedSpec.eksConfig.nodeGroups') || []).getEach('version');
return nodeGroupVersions.any((ngv) => ngv !== kubernetesVersion);
}),
certsExpiring: computed('certificatesExpiration', function() {
let { certificatesExpiration = {}, expiringCerts } = this;

View File

@ -11,18 +11,22 @@
{{#link-to-external "authenticated.cluster" model.id}}
{{model.displayName}}
{{/link-to-external}}
{{#if (and model.displayWarnings.length (not-eq model.state "waiting") (not-eq model.state "provisioning"))}}
{{#if
(and
model.displayWarnings.length
(not-eq model.state "waiting")
(not-eq model.state "provisioning")
)
}}
{{#tooltip-element
type="tooltip-basic"
tooltipTemplate='tooltip-multi-lines'
tooltipTemplate="tooltip-multi-lines"
model=model.displayWarnings
inlineBlock=true
}}
<i class="icon icon-alert text-error" />
<i class="icon icon-alert text-error"></i>
{{/tooltip-element}}
{{/if}}
{{#if model.certsExpiring}}
{{#tooltip-element
type="tooltip-expiring"
@ -31,18 +35,34 @@
aria-describedby="tooltip-base"
tooltipFor="tooltipCertExpire"
}}
<i class="icon icon-alert text-warning" />
<i class="icon icon-alert text-warning"></i>
{{/tooltip-element}}
{{/if}}
{{#if model.nodeGroupVersionUpdate}}
{{#tooltip-element
type="tooltip-node-group-update"
model=model
tooltipTemplate="tooltip-static"
aria-describedby="tooltip-base"
tooltipFor="tooltipNodeGroupVersionUpdate"
}}
<i class="icon icon-alert text-warning"></i>
{{/tooltip-element}}
{{/if}}
{{cluster-template-revision-upgrade-notification cluster=model}}
</td>
<td data-title="{{dt.provider}}">
{{#if model.version.gitVersion}}
<small>{{model.displayProvider}}</small>
<p class="text-small text-muted m-0">{{model.version.gitVersion}}</p>
<small>
{{model.displayProvider}}
</small>
<p class="text-small text-muted m-0">
{{model.version.gitVersion}}
</p>
{{else}}
<small>{{model.displayProvider}}</small>
<small>
{{model.displayProvider}}
</small>
{{/if}}
</td>
{{#if (eq model.state "inactive")}}
@ -53,7 +73,9 @@
<td data-title="{{dt.nodes}}">
{{#link-to-external "authenticated.cluster.nodes" model.id}}
{{#if (gt (get subMatches model.id) 0)}}
<b>{{model.machines.length}}</b>
<b>
{{model.machines.length}}
</b>
{{else}}
{{model.machines.length}}
{{/if}}
@ -61,19 +83,26 @@
</td>
<td data-title="{{dt.cpu}}">
{{#if model.cpuUsage}}
<small>{{model.cpuUsage}}</small>
<p class="text-small text-muted m-0">{{model.cpuPercent}}</p>
<small>
{{model.cpuUsage}}
</small>
<p class="text-small text-muted m-0">
{{model.cpuPercent}}
</p>
{{else}}
<span class="text-muted">
{{t "generic.na"}}
</span>
{{/if}}
</td>
<td data-title="{{dt.memory}}">
{{#if model.memoryUsage}}
<small>{{model.memoryUsage}}</small>
<p class="text-small text-muted m-0">{{model.memoryPercent}}</p>
<small>
{{model.memoryUsage}}
</small>
<p class="text-small text-muted m-0">
{{model.memoryPercent}}
</p>
{{else}}
<span class="text-muted">
{{t "generic.na"}}
@ -81,11 +110,10 @@
{{/if}}
</td>
{{/if}}
<td data-title="{{dt.actions}} "class="actions">
<td data-title="{{dt.actions}}" class="actions">
{{action-menu model=model}}
</td>
</tr>
{{#if model.showTransitioningMessage}}
{{error-sub-row fullColspan=fullColspan model=model}}
{{/if}}

View File

@ -29,6 +29,9 @@ export default Component.extend(CatalogUpgrade, {
componentStatuses: alias('scope.currentCluster.componentStatuses'),
actions: {
edit() {
this.cluster.send('edit');
},
rotate() {
this.cluster.send('rotateCertificates');
},

View File

@ -3,6 +3,11 @@
<p>{{t "tooltipExpire.label"}} {{#if cluster.canRotateCerts}}<a href="#" {{action "rotate"}}>{{t "tooltipExpire.link"}}</a>{{/if}}</p>
{{/banner-message}}
{{/if}}
{{#if cluster.nodeGroupVersionUpdate}}
{{#banner-message color="bg-warning"}}
<p>{{t "tooltipNodeGroupUpdate.label"}} <a href="#" {{action "edit"}}>{{t "tooltipNodeGroupUpdate.link"}}</a></p>
{{/banner-message}}
{{/if}}
{{#if showDashboard}}
{{cluster-basic-info cluster=cluster}}

View File

@ -537,9 +537,12 @@
<div class="row">
{{#each config.nodeGroups as |nodeGroup|}}
<NodeGroupRow
@model={{nodeGroup}}
@clusterConfig={{config}}
@keyPairs={{filteredKeyPairs}}
@model={{nodeGroup}}
@mode={{mode}}
@removeNodeGroup={{action "removeNodeGroup"}}
@versions={{versionChoices}}
/>
{{else}}
<div class="p-20">

View File

@ -1,36 +1,54 @@
import Component from '@ember/component';
import layout from './template';
import { INSTANCE_TYPES } from 'shared/utils/amazon';
import { set } from '@ember/object';
import { get, set, observer, computed } from '@ember/object';
import { on } from '@ember/object/evented';
import { equal } from '@ember/object/computed';
export default Component.extend({
layout,
classNames: ['row', 'mb-20'],
editing: true,
instanceTypes: INSTANCE_TYPES,
keyPairs: null,
instanceTypes: INSTANCE_TYPES,
clusterConfig: null,
keyPairs: null,
mode: null,
model: null,
versions: null,
editing: equal('mode', 'edit'),
actions: {
setTags(section) {
const { model: { tags = {} } } = this;
for (let key in section) {
tags[key] = section[key];
}
set(this, 'model.tags', tags);
set(this, 'model.tags', section);
},
setLabels(section) {
const { model: { labels = {} } } = this;
set(this, 'model.labels', section);
},
},
for (let key in section) {
labels[key] = section[key];
shouldDisableVersionSelect: computed('clusterConfig.kubernetesVersion', function() {
const {
clusterConfig,
model,
} = this;
if (get(model, 'version') === get(clusterConfig, 'kubernetesVersion') ) {
return true;
}
set(this, 'model.labels', labels);
},
},
return false;
}),
clusterVersionDidChange: on('init', observer('clusterConfig.kubernetesVersion', function() {
const { clusterConfig, editing } = this;
if (get(clusterConfig, 'kubernetesVersion') && !editing) {
set(this, 'model.version', clusterConfig.kubernetesVersion);
}
})),
removeNodeGroup() {
throw new Error('remove node group action is required!');

View File

@ -1,4 +1,5 @@
<div class="box">
<div class="row">
<div class="row">
<div class="pull-right">
<button
@ -9,6 +10,8 @@
{{t "nodeGroupRow.remove.label"}}
</button>
</div>
</div>
<div class="row">
<div class="col span-6">
<label class="acc-label">
{{t "nodeGroupRow.name.label"}}
@ -19,8 +22,19 @@
@classNames="form-control"
/>
</div>
<div class="col span-6">
<label class="acc-label">
{{t "nodeGroupRow.version.label"}}
</label>
{{new-select
disabled=shouldDisableVersionSelect
classNames="form-control"
content=versions
value=model.version
}}
</div>
</div>
</div>
<div class="row">
<div class="col span-6">
<label class="acc-label">
@ -29,7 +43,7 @@
<NewSelect
class="form-control"
@value={{mut model.instanceType}}
@content={{ instanceTypes }}
@content={{instanceTypes}}
@optionValuePath="name"
@optionLabelPath="name"
@optionGroupPath="group"
@ -52,7 +66,6 @@
</div>
</div>
</div>
<div class="row">
<div class="col span-6">
<label class="acc-label">
@ -65,7 +78,6 @@
/>
</div>
</div>
<div class="row">
<div class="col span-6">
<label class="acc-label">
@ -88,7 +100,6 @@
/>
</div>
</div>
<div class="row">
<div class="col span-6">
<label class="acc-label">
@ -124,7 +135,6 @@
</div>
</div>
</div>
<div class="row">
<div class="col span-6">
<label class="acc-label">

View File

@ -0,0 +1,17 @@
import Component from '@ember/component';
import layout from './template';
import Tooltip from 'shared/mixins/tooltip';
import { alias } from '@ember/object/computed';
export default Component.extend(Tooltip, {
layout,
model: alias('tooltipService.tooltipOpts.model'),
actions: {
updateNodeGroup() {
this.model.send('edit')
this.tooltipService.hide();
}
}
});

View File

@ -0,0 +1,10 @@
<span class="tooltip-node-group-update">
<p class="mb-5">
{{t "tooltipNodeGroupUpdate.label"}}
</p>
<p>
<span class="text-link hand" {{on "click" (action "updateNodeGroup")}}>
{{t "tooltipNodeGroupUpdate.link"}}
</span>
</p>
</span>

View File

@ -0,0 +1 @@
export { default } from 'shared/components/tooltip-node-group-update/component';

View File

@ -7402,6 +7402,8 @@ nodeGroupRow:
addLabel: Add Tag
remove:
label: Remove Node Group
version:
label: Kubernetes Version
uploadFile:
@ -9600,6 +9602,10 @@ tooltipExpire:
label: 'This cluster has certs that are expiring or have expired.'
link: 'Rotate Now'
tooltipNodeGroupUpdate:
label: A node group Kubernetes version can be updated.
link: Edit Version
tooltipToggleOverride:
label: 'Allow user override?'