mirror of https://github.com/rancher/ui.git
61 lines
1.5 KiB
JavaScript
61 lines
1.5 KiB
JavaScript
import Mixin from '@ember/object/mixin';
|
|
import { get, set } from '@ember/object';
|
|
import { resolve, reject } from 'rsvp';
|
|
|
|
// Adds on to view-new-project/new-or-edit to handle resources that
|
|
// are optionally project-level or namespace-level
|
|
// (secrets)
|
|
export default Mixin.create({
|
|
projectType: 'Set me to the type for project-level resources',
|
|
namespacedType: 'Set me to the type for namespaced resources',
|
|
|
|
namespacePromise() {
|
|
let scope = get(this, 'scope');
|
|
let pr = get(this, 'primaryResource');
|
|
let ns = get(this, 'namespace');
|
|
|
|
if ( !get(this, 'isNew')) {
|
|
return resolve();
|
|
}
|
|
|
|
if ( scope === 'namespace' && !ns ) {
|
|
return reject('No namespace specified');
|
|
}
|
|
|
|
let obj = pr.serialize();
|
|
|
|
if ( scope === 'namespace' ) {
|
|
obj.type = get(this, 'namespacedType');
|
|
pr = get(this, 'store').createRecord(obj);
|
|
set(this, 'primaryResource', pr);
|
|
|
|
if ( get(ns, 'id') ) {
|
|
set(pr, 'namespaceId', get(ns, 'id'));
|
|
|
|
return resolve();
|
|
} else {
|
|
return ns.save().then((newNs) => {
|
|
set(pr, 'namespaceId', get(newNs, 'id'));
|
|
|
|
return newNs.waitForState('active');
|
|
});
|
|
}
|
|
} else {
|
|
obj.type = get(this, 'projectType');
|
|
pr = get(this, 'store').createRecord(obj);
|
|
set(this, 'primaryResource', pr);
|
|
|
|
return resolve();
|
|
}
|
|
},
|
|
|
|
doSave() {
|
|
let self = this;
|
|
let sup = self._super;
|
|
|
|
return this.namespacePromise().then(() => {
|
|
return sup.apply(self, arguments);
|
|
});
|
|
},
|
|
});
|