diff --git a/app/models/cloudcredential.js b/app/models/cloudcredential.js index f0eeeca5c..b34177cc8 100644 --- a/app/models/cloudcredential.js +++ b/app/models/cloudcredential.js @@ -37,7 +37,10 @@ const cloudCredential = Resource.extend({ actions: { edit() { - this.modal.toggleModal('modal-add-cloud-credential', { cloudCredential: this }); + this.modal.toggleModal('modal-add-cloud-credential', { + cloudCredential: this, + mode: 'edit', + }); } }, }); diff --git a/lib/global-admin/addon/components/cru-cloud-credential/component.js b/lib/global-admin/addon/components/cru-cloud-credential/component.js index ebf0ed06e..56ad586ed 100644 --- a/lib/global-admin/addon/components/cru-cloud-credential/component.js +++ b/lib/global-admin/addon/components/cru-cloud-credential/component.js @@ -1,6 +1,6 @@ import { inject as service } from '@ember/service'; import Component from '@ember/component'; -import NewOrEdit from 'shared/mixins/new-or-edit'; +import ViewNewEdit from 'shared/mixins/view-new-edit'; import layout from './template'; import { get, set, computed, setProperties } from '@ember/object'; import { next } from '@ember/runloop'; @@ -34,13 +34,13 @@ const CRED_CONFIG_CHOICES = [ }, ] -export default Component.extend(NewOrEdit, { +export default Component.extend(ViewNewEdit, { globalStore: service(), digitalOcean: service(), intl: service(), layout, nodeConfigTemplateType: null, - cloudCredentialType: null, + cloudCredentialType: null, model: null, cancelAdd: null, doneSavingCloudCredential: null, @@ -48,8 +48,9 @@ export default Component.extend(NewOrEdit, { validatingKeys: false, errors: null, region: null, - regionChoices: REGIONS, sinlgeCloudKeyChoice: null, + regionChoices: REGIONS, + mode: 'new', init() { this._super(...arguments); @@ -137,6 +138,24 @@ export default Component.extend(NewOrEdit, { return 'saveCancel.saving'; }), + validate() { + var ok = this._super(...arguments); + let errors = get(this, 'errors') || []; + const { cloudCredentialType } = this; + + if (cloudCredentialType === 'amazon') { + if (!get(this, 'region')) { + ok = false; + + errors.pushObject(this.intl.t('modalAddCloudKey.errors.region')); + } + } + + set(this, 'errors', errors); + + return ok; + }, + willSave() { set(this, 'errors', null); @@ -202,7 +221,7 @@ export default Component.extend(NewOrEdit, { setError(message = '') { setProperties(this, { validatingKeys: false, - errors: [this.intl.t('modalAddCloudKey.error', { status: message })], + errors: [this.intl.t('modalAddCloudKey.errors.validation', { status: message })], }); return false; diff --git a/lib/global-admin/addon/components/cru-cloud-credential/template.hbs b/lib/global-admin/addon/components/cru-cloud-credential/template.hbs index b4691c333..6f017c5d8 100644 --- a/lib/global-admin/addon/components/cru-cloud-credential/template.hbs +++ b/lib/global-admin/addon/components/cru-cloud-credential/template.hbs @@ -1,7 +1,11 @@
{{#unless disableHeader}}

- {{t "modalAddCloudKey.header"}} + {{#if isNew}} + {{t "modalAddCloudKey.header.new"}} + {{else if isEdit}} + {{t "modalAddCloudKey.header.edit"}} + {{/if}}

{{/unless}}
@@ -49,7 +53,9 @@ {{#if (eq cloudCredentialType "amazon")}}
- +