mirror of https://github.com/rancher/ui.git
123 lines
2.9 KiB
JavaScript
123 lines
2.9 KiB
JavaScript
import Component from '@ember/component';
|
|
import layout from './template';
|
|
import NewOrEdit from 'shared/mixins/new-or-edit';
|
|
import ModalBase from 'shared/mixins/modal-base';
|
|
import { alias } from '@ember/object/computed';
|
|
import { inject as service } from '@ember/service';
|
|
import { get, set, setProperties } from '@ember/object';
|
|
import { Promise } from 'rsvp';
|
|
|
|
export default Component.extend(ModalBase, NewOrEdit, {
|
|
modalService: service('modal'),
|
|
intl: service(),
|
|
|
|
|
|
classNames: ['medium-modal'],
|
|
clone: null,
|
|
errors: null,
|
|
updateKeys: true,
|
|
|
|
layout,
|
|
|
|
originalModel: alias('modalService.modalOpts.model'),
|
|
primaryResource: alias('originalModel'),
|
|
|
|
actions: {
|
|
confirmKeys(cb) {
|
|
const errors = [];
|
|
|
|
if (this.isValid()) {
|
|
this.canListEksClusters().then( () => {
|
|
get(this, 'primaryResource').save().then(() => {
|
|
get(this, 'primaryResource').delete().then(() => {
|
|
cb();
|
|
this.send('cancel');
|
|
}).catch( (e) => {
|
|
errors.push(e);
|
|
set(this, 'errors', errors);
|
|
cb(false, e);
|
|
});
|
|
}).catch( (e) => {
|
|
errors.push(e);
|
|
set(this, 'errors', errors);
|
|
cb(false, e);
|
|
});
|
|
}).catch( (e) => {
|
|
errors.push(e);
|
|
set(this, 'errors', errors);
|
|
cb(false, e);
|
|
});
|
|
} else {
|
|
cb(false);
|
|
}
|
|
}
|
|
},
|
|
|
|
canListEksClusters() {
|
|
return new Promise((resolve, reject) => {
|
|
const eks = new AWS.EKS(this.authCreds());
|
|
|
|
eks.listClusters({}, (err, clusters) => {
|
|
if ( err ) {
|
|
return reject(`${ get(err, 'statusCode') } ${ get(err, 'code') }: ${ get(err, 'message') }`);
|
|
}
|
|
|
|
return resolve({ clusters: clusters.clusters });
|
|
});
|
|
});
|
|
},
|
|
|
|
isValid() {
|
|
const config = get(this, 'primaryResource.amazonElasticContainerServiceConfig');
|
|
const errors = [];
|
|
|
|
let {
|
|
accessKey, secretKey, sessionToken
|
|
} = config;
|
|
|
|
if (!accessKey) {
|
|
errors.push(get(this, 'intl').t('deleteEksCluster.error.accessKey'));
|
|
}
|
|
|
|
if (!secretKey) {
|
|
errors.push(get(this, 'intl').t('deleteEksCluster.error.secretKey'));
|
|
}
|
|
if (!sessionToken) {
|
|
errors.push(get(this, 'intl').t('deleteEksCluster.error.sessionToken'));
|
|
}
|
|
|
|
set(this, 'errors', errors);
|
|
|
|
return errors.length > 0 ? false : true;
|
|
},
|
|
|
|
authCreds() {
|
|
const config = get(this, 'primaryResource.amazonElasticContainerServiceConfig');
|
|
|
|
let {
|
|
accessKey, secretKey, region, sessionToken
|
|
} = config;
|
|
|
|
accessKey = accessKey.trim();
|
|
secretKey = secretKey.trim();
|
|
|
|
setProperties(config, {
|
|
accessKey,
|
|
secretKey,
|
|
});
|
|
|
|
const auth = {
|
|
region,
|
|
accessKeyId: accessKey,
|
|
secretAccessKey: secretKey,
|
|
};
|
|
|
|
if (sessionToken) {
|
|
set(auth, 'sessionToken', sessionToken);
|
|
}
|
|
|
|
return auth;
|
|
},
|
|
|
|
});
|