mirror of https://github.com/rancher/ui.git
107 lines
3.1 KiB
JavaScript
107 lines
3.1 KiB
JavaScript
import { inject as service } from '@ember/service';
|
|
import {
|
|
get, set, setProperties, computed, observer
|
|
} from '@ember/object';
|
|
import Component from '@ember/component';
|
|
import ModalBase from 'shared/mixins/modal-base';
|
|
import layout from './template';
|
|
import moment from 'moment';
|
|
|
|
export default Component.extend(ModalBase, {
|
|
intl: service(),
|
|
growl: service(),
|
|
|
|
layout,
|
|
classNames: ['large-modal'],
|
|
backupId: null,
|
|
restoreRkeConfig: null,
|
|
loadingBackups: false,
|
|
|
|
k8sVersionRadioDisabled: computed.or('k8sVersionDisabled', 'restorationTypeDisabled'),
|
|
|
|
restorationTypeDisabled: computed.not('selectedBackup'),
|
|
|
|
init() {
|
|
this._super(...arguments);
|
|
|
|
this.initOwnProperties();
|
|
this.fetchAllBackupsForCluster();
|
|
},
|
|
|
|
actions: {
|
|
restore() {
|
|
const { backupId, restoreRkeConfig } = this;
|
|
const out = {};
|
|
|
|
if (backupId) {
|
|
set(out, 'etcdBackupId', backupId);
|
|
if (restoreRkeConfig !== 'etcd') {
|
|
set(out, 'restoreRkeConfig', restoreRkeConfig);
|
|
}
|
|
|
|
this.modalOpts.cluster.doAction('restoreFromEtcdBackup', out).then(() => {
|
|
this.send('cancel');
|
|
});
|
|
} else {
|
|
this.growl.fromError(this.intl.t('modalRestoreBackup.error'));
|
|
}
|
|
}
|
|
},
|
|
|
|
updateRestoreRkeConfig: observer('backupId', function() {
|
|
const value = this.backupId ? 'etcd' : '';
|
|
|
|
set(this, 'restoreRkeConfig', value);
|
|
}),
|
|
|
|
availableBackups: computed('modalOpts.cluster.etcdbackups.[]', function() {
|
|
return get(this, 'modalOpts.cluster.etcdbackups').map((backup) => {
|
|
let time = moment(get(backup, 'created'));
|
|
const hyphenatedVersion = backup.status.kubernetesVersion
|
|
? ` - ${ backup.status.kubernetesVersion }`
|
|
: '';
|
|
|
|
return {
|
|
id: backup.id,
|
|
label: `${ backup.displayName } (${ time.format('MMMM Do YYYY, H:mm:ss') })${ hyphenatedVersion }`,
|
|
created: backup.created,
|
|
state: backup.state,
|
|
}
|
|
}).sortBy('created').reverse();
|
|
}),
|
|
|
|
selectedBackup: computed('modalOpts.cluster.etcdbackups.[]', 'backupId', function() {
|
|
const backupId = this.backupId;
|
|
|
|
return !backupId ? null : get(this, 'modalOpts.cluster.etcdbackups').findBy('id', backupId);
|
|
}),
|
|
|
|
selectedVersion: computed('selectedBackup.status.kubernetesVersion', function() {
|
|
return get(this, 'selectedBackup.status.kubernetesVersion') || this.intl.t('modalRestoreBackup.type.versionUnknown');
|
|
}),
|
|
|
|
k8sVersionDisabled: computed('selectedVersion', 'restorationTypeDisabled', function() {
|
|
return !this.restorationTypeDisabled && this.selectedVersion === this.intl.t('modalRestoreBackup.type.versionUnknown');
|
|
}),
|
|
|
|
initOwnProperties() {
|
|
const backupId = this.modalOpts.selection ? this.modalOpts.selection.id : '';
|
|
const restoreRkeConfig = backupId ? 'etcd' : '';
|
|
|
|
setProperties(this, {
|
|
backupId,
|
|
restoreRkeConfig,
|
|
errors: [],
|
|
});
|
|
},
|
|
|
|
fetchAllBackupsForCluster() {
|
|
set(this, 'loadingBackups', true);
|
|
|
|
this.modalOpts.cluster.store.findAll('etcdbackup')
|
|
.finally(() => {
|
|
set(this, 'loadingBackups', false);
|
|
});
|
|
},
|
|
});
|