From cf1195575b793951e23817de7e609936012bdff3 Mon Sep 17 00:00:00 2001 From: Vincent Fiduccia Date: Mon, 19 Aug 2019 12:14:08 -0700 Subject: [PATCH 1/3] Clear errors on click (rancher/rancher#22228) --- .../cluster-driver/driver-rke/component.js | 35 ++++++++++++--- .../cluster-driver/driver-rke/template.hbs | 2 +- .../cru-cluster-template/component.js | 43 +------------------ .../cru-cluster-template/template.hbs | 4 +- 4 files changed, 33 insertions(+), 51 deletions(-) diff --git a/lib/shared/addon/components/cluster-driver/driver-rke/component.js b/lib/shared/addon/components/cluster-driver/driver-rke/component.js index dd4b2ff2e..114e40552 100644 --- a/lib/shared/addon/components/cluster-driver/driver-rke/component.js +++ b/lib/shared/addon/components/cluster-driver/driver-rke/component.js @@ -824,6 +824,15 @@ export default InputTextFile.extend(ManageLabels, ClusterDriver, { } }), + allErrors: computed('errors.[]', 'clusterErrors.[]', 'otherErrors.[]', 'clusterOptErrors.[]', function() { + let { + errors, clusterErrors, clusterOptErrors, otherErrors, + } = this; + + return [...(errors || []), ...(clusterErrors || []), ...(clusterOptErrors || []), ...(otherErrors || [])]; + }), + + getClusterFields(primaryResource) { let pojoPr = JSON.parse(JSON.stringify(removeEmpty(primaryResource, EXCLUDED_KEYS))); let decamelizedObj = {}; @@ -986,13 +995,25 @@ export default InputTextFile.extend(ManageLabels, ClusterDriver, { let errors = this.errors || []; - errors.pushObjects(this.clusterErrors || []); - errors.pushObjects(this.clusterOptErrors || []); - errors.pushObjects(this.otherErrors || []); - if (this.clusterTemplateCreate) { - if (this.model.clusterTemplateRevision) { - errors.pushObjects(this.model.clusterTemplateRevision.validationErrors()); + const revision = this.model.clusterTemplateRevision; + + if ( revision ) { + errors.pushObjects(revision.validationErrors()); + + const cloudProvider = get(revision, 'clusterConfig.rancherKubernetesEngineConfig.cloudProvider.name'); + const azureProvider = get(revision, 'clusterConfig.rancherKubernetesEngineConfig.cloudProvider.azureCloudProvider') || {}; + + if ( cloudProvider === 'azure' ) { + const azureQuestions = (get(revision, 'nuestions') || []).map((x) => x.variable.replace(/^rancherKubernetesEngineConfig\.cloudProvider\.azureCloudProvider\./, '')); + const requiredFields = Object.keys(AzureInfo).filter((k) => AzureInfo[k].required); + + requiredFields.forEach((key) => { + if ( !get(azureProvider, key) && !azureQuestions.includes(key)) { + errors.push(intl.t('validation.requiredOrOverride', { key })); + } + }); + } } } else { if ( !get(this, 'isCustom') ) { @@ -1025,7 +1046,7 @@ export default InputTextFile.extend(ManageLabels, ClusterDriver, { set(this, 'errors', errors); - return errors.length === 0; + return get(this, 'errors.length') === 0; }, validateAuthorizedClusterEndpoint(errors) { diff --git a/lib/shared/addon/components/cluster-driver/driver-rke/template.hbs b/lib/shared/addon/components/cluster-driver/driver-rke/template.hbs index 6beb0b673..d92c8dfa4 100644 --- a/lib/shared/addon/components/cluster-driver/driver-rke/template.hbs +++ b/lib/shared/addon/components/cluster-driver/driver-rke/template.hbs @@ -1251,7 +1251,7 @@ {{/if}} {{/if}} - {{top-errors errors=errors}} + {{top-errors errors=allErrors}} {{#if (or (and notView (eq step 1)) (and isEdit (eq step 2)))}} {{save-cancel diff --git a/lib/shared/addon/components/cru-cluster-template/component.js b/lib/shared/addon/components/cru-cluster-template/component.js index c51fa3ecf..ccc9be239 100644 --- a/lib/shared/addon/components/cru-cluster-template/component.js +++ b/lib/shared/addon/components/cru-cluster-template/component.js @@ -7,7 +7,6 @@ import { inject as service } from '@ember/service'; import { alias } from '@ember/object/computed'; import Errors from 'ui/utils/errors'; import { reject } from 'rsvp'; -import { azure as AzureInfo } from '../cru-cloud-provider/cloud-provider-info'; export default Component.extend(ViewNewEdit, ChildHook, { globalStore: service(), @@ -93,14 +92,8 @@ export default Component.extend(ViewNewEdit, ChildHook, { willSave() { set(this, 'clusterTemplateRevision.clusterTemplateId', '__TEMPID__'); - - let revisionOkay = this.validateClusterTemplateRevision(); - - if (revisionOkay) { - return this._super(...arguments); - } else { - return false; - } + this.validate(); + return this._super(...arguments); }, @@ -137,36 +130,4 @@ export default Component.extend(ViewNewEdit, ChildHook, { return reject(); } }, - - validateClusterTemplateRevision() { - const intl = get(this, 'intl'); - // var model = get(this, 'clusterTemplateRevision'); - // TODO - localclusterauth and rkeconfig get cleared in trimvalues - // var errors = model.validationErrors(); - var errors = []; - - const azureProvider = get(this, 'clusterTemplateRevision.clusterConfig.rancherKubernetesEngineConfig.cloudProvider.azureCloudProvider'); - - if ( azureProvider ) { - const azureQuestions = (get(this, 'clusterTemplateRevision.questions') || []).map((x) => x.variable.replace(/^rancherKubernetesEngineConfig\.cloudProvider\.azureCloudProvider\./, '')); - const requiredFields = Object.keys(AzureInfo).filter((k) => AzureInfo[k].required); - - requiredFields.forEach((k) => { - if ( !get(azureProvider, k) && !azureQuestions.includes(k)) { - errors.push(intl.t('validation.requiredOrOverride', { key: k })); - } - }); - } - - if ( errors.get('length') ) { - set(this, 'errors', errors); - - return false; - } else { - set(this, 'errors', null); - - return true; - } - }, - }); diff --git a/lib/shared/addon/components/cru-cluster-template/template.hbs b/lib/shared/addon/components/cru-cluster-template/template.hbs index f3ab1f036..3655bfe31 100644 --- a/lib/shared/addon/components/cru-cluster-template/template.hbs +++ b/lib/shared/addon/components/cru-cluster-template/template.hbs @@ -77,7 +77,7 @@ @addAuthorizedPrincipal={{action "addAuthorizedPrincipal"}} @removeMember={{action "removeMember"}} @users={{users}} - @errors={{errors}} + @errors={{memberErrors}} /> @@ -109,4 +109,4 @@ close=(action "cancel") registerHook=(action "registerHook") }} - \ No newline at end of file + From c958770ea8bb0b51bf6b73be983e696a12a490fd Mon Sep 17 00:00:00 2001 From: Vincent Fiduccia Date: Mon, 19 Aug 2019 12:57:33 -0700 Subject: [PATCH 2/3] Enable default cluster tempalte checkbox (rancher/rancher#22230) --- app/models/clustertemplaterevision.js | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/app/models/clustertemplaterevision.js b/app/models/clustertemplaterevision.js index 5b5e6f4d6..053a33cf8 100644 --- a/app/models/clustertemplaterevision.js +++ b/app/models/clustertemplaterevision.js @@ -23,18 +23,6 @@ export default Resource.extend({ return 'disabled'; }), - canBulkRemove: computed('clusterTemplateId', function() { - let { clusterTemplate } = this; - - if (clusterTemplate && - clusterTemplate.defaultRevisionId && - clusterTemplate.defaultRevisionId !== this.id) { - return true; - } - - return false; - }), - canMakeDefault: computed('clusterTemplate.defaultRevisionId', function() { let { clusterTemplate: { defaultRevisionId = '' } } = this; From 7fb0520d932c1811d9c6723a3a8f2abb5db19f0c Mon Sep 17 00:00:00 2001 From: Vincent Fiduccia Date: Mon, 19 Aug 2019 15:48:18 -0700 Subject: [PATCH 3/3] RKE driver label --- .../cru-cluster-template/component.js | 1 + .../addon/components/cru-cluster/template.hbs | 38 ++++++++++--------- lib/shared/addon/helpers/driver-name.js | 2 +- translations/en-us.yaml | 1 + 4 files changed, 23 insertions(+), 19 deletions(-) diff --git a/lib/shared/addon/components/cru-cluster-template/component.js b/lib/shared/addon/components/cru-cluster-template/component.js index ccc9be239..729f0cb09 100644 --- a/lib/shared/addon/components/cru-cluster-template/component.js +++ b/lib/shared/addon/components/cru-cluster-template/component.js @@ -93,6 +93,7 @@ export default Component.extend(ViewNewEdit, ChildHook, { willSave() { set(this, 'clusterTemplateRevision.clusterTemplateId', '__TEMPID__'); this.validate(); + return this._super(...arguments); }, diff --git a/lib/shared/addon/components/cru-cluster/template.hbs b/lib/shared/addon/components/cru-cluster/template.hbs index c45b1c9a6..afca498d4 100644 --- a/lib/shared/addon/components/cru-cluster/template.hbs +++ b/lib/shared/addon/components/cru-cluster/template.hbs @@ -90,23 +90,25 @@ {{/if}} {{#unless routeLoading}} - {{component driverInfo.driverComponent - applyClusterTemplate=applyClusterTemplate - clusterTemplateQuestions=model.clusterTemplateRevision.questions - clusterTemplateRevisionId=clusterTemplateRevisionId - clusterErrors=errors - mode=mode - model=model - nodePoolErrors=nodePoolErrors - nodeWhich=driverInfo.nodeWhich - originalCluster=originalCluster - otherErrors=memberErrors - isEditCluster=isEdit - save=(action "save") - close=(action "close") - registerHook=(action "registerHook") - updateFromYaml=(action "updateFromYaml") - }} + {{#if driverInfo}} + {{component driverInfo.driverComponent + applyClusterTemplate=applyClusterTemplate + clusterTemplateQuestions=model.clusterTemplateRevision.questions + clusterTemplateRevisionId=clusterTemplateRevisionId + clusterErrors=errors + mode=mode + model=model + nodePoolErrors=nodePoolErrors + nodeWhich=driverInfo.nodeWhich + originalCluster=originalCluster + otherErrors=memberErrors + isEditCluster=isEdit + save=(action "save") + close=(action "close") + registerHook=(action "registerHook") + updateFromYaml=(action "updateFromYaml") + }} + {{/if}} {{/unless}} {{#if (and isEdit (not provider))}} @@ -116,4 +118,4 @@ save=(action "save" ) cancel=(action "close") }} -{{/if}} \ No newline at end of file +{{/if}} diff --git a/lib/shared/addon/helpers/driver-name.js b/lib/shared/addon/helpers/driver-name.js index 86569cf3b..a6cd208d2 100644 --- a/lib/shared/addon/helpers/driver-name.js +++ b/lib/shared/addon/helpers/driver-name.js @@ -10,7 +10,7 @@ export default Helper.extend({ const driver = params[0]; const intl = get(this, 'intl'); - const key = `nodeDriver.displayName.${ driver }`; + const key = `nodeDriver.displayName.${ driver.toLowerCase() }`; let name = ucFirst(driver); if ( intl.exists(key) ) { diff --git a/translations/en-us.yaml b/translations/en-us.yaml index 8a73a11a9..d7eee9774 100644 --- a/translations/en-us.yaml +++ b/translations/en-us.yaml @@ -6620,6 +6620,7 @@ nodeDriver: otc: Open Telekom Cloud packet: Packet rackspace: RackSpace + rancherkubernetesengine: RKE softlayer: SoftLayer tencenttke: Tencent TKE upcloud: UpCloud