2017-12-15 21:39:18 +00:00
|
|
|
import { inject as service } from '@ember/service';
|
|
|
|
import { assign } from '@ember/polyfills';
|
2018-02-08 23:06:10 +00:00
|
|
|
import Watchable from './watchable';
|
2017-09-19 14:47:10 +00:00
|
|
|
|
2018-02-08 23:06:10 +00:00
|
|
|
export default Watchable.extend({
|
2017-12-15 21:39:18 +00:00
|
|
|
system: service(),
|
2017-10-10 01:53:20 +00:00
|
|
|
|
2017-10-18 17:37:40 +00:00
|
|
|
buildQuery() {
|
2017-10-23 17:22:58 +00:00
|
|
|
const namespace = this.get('system.activeNamespace.id');
|
2017-10-10 01:53:20 +00:00
|
|
|
|
2017-10-23 17:22:58 +00:00
|
|
|
if (namespace && namespace !== 'default') {
|
|
|
|
return { namespace };
|
2017-10-10 01:53:20 +00:00
|
|
|
}
|
2018-02-16 02:55:59 +00:00
|
|
|
return {};
|
2017-10-10 01:53:20 +00:00
|
|
|
},
|
|
|
|
|
2017-10-10 16:36:15 +00:00
|
|
|
findAll() {
|
|
|
|
const namespace = this.get('system.activeNamespace');
|
|
|
|
return this._super(...arguments).then(data => {
|
|
|
|
data.forEach(job => {
|
2017-10-23 17:22:58 +00:00
|
|
|
job.Namespace = namespace ? namespace.get('id') : 'default';
|
2017-10-10 16:36:15 +00:00
|
|
|
});
|
|
|
|
return data;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
|
2018-02-08 23:02:48 +00:00
|
|
|
findRecordSummary(modelName, name, snapshot, namespaceQuery) {
|
|
|
|
return this.ajax(`${this.buildURL(modelName, name, snapshot, 'findRecord')}/summary`, 'GET', {
|
|
|
|
data: assign(this.buildQuery() || {}, namespaceQuery),
|
|
|
|
});
|
|
|
|
},
|
2017-10-23 17:22:58 +00:00
|
|
|
|
2018-02-08 23:02:48 +00:00
|
|
|
findRecord(store, type, id, snapshot) {
|
2018-02-14 23:37:51 +00:00
|
|
|
const [, namespace] = JSON.parse(id);
|
2017-10-23 17:22:58 +00:00
|
|
|
const namespaceQuery = namespace && namespace !== 'default' ? { namespace } : {};
|
2018-02-08 23:02:48 +00:00
|
|
|
|
2018-02-14 23:37:51 +00:00
|
|
|
return this._super(store, type, id, snapshot, namespaceQuery);
|
|
|
|
},
|
|
|
|
|
|
|
|
urlForFindRecord(id, type, hash) {
|
|
|
|
const [name, namespace] = JSON.parse(id);
|
|
|
|
let url = this._super(name, type, hash);
|
|
|
|
if (namespace && namespace !== 'default') {
|
2018-02-16 02:55:59 +00:00
|
|
|
url += `?namespace=${namespace}`;
|
2018-02-14 23:37:51 +00:00
|
|
|
}
|
|
|
|
return url;
|
2017-09-19 14:47:10 +00:00
|
|
|
},
|
|
|
|
|
|
|
|
findAllocations(job) {
|
|
|
|
const url = `${this.buildURL('job', job.get('id'), job, 'findRecord')}/allocations`;
|
2017-10-18 17:37:40 +00:00
|
|
|
return this.ajax(url, 'GET', { data: this.buildQuery() }).then(allocs => {
|
2017-09-19 14:47:10 +00:00
|
|
|
return this.store.pushPayload('allocation', {
|
|
|
|
allocations: allocs,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
},
|
|
|
|
|
|
|
|
fetchRawDefinition(job) {
|
2018-02-16 02:55:59 +00:00
|
|
|
const url = this.buildURL('job', job.get('id'), job, 'findRecord');
|
|
|
|
return this.ajax(url, 'GET', { data: this.buildQuery() });
|
2017-09-19 14:47:10 +00:00
|
|
|
},
|
2018-01-26 22:32:11 +00:00
|
|
|
|
|
|
|
forcePeriodic(job) {
|
|
|
|
if (job.get('periodic')) {
|
2018-02-16 02:55:59 +00:00
|
|
|
const [path, params] = this.buildURL('job', job.get('id'), job, 'findRecord').split('?');
|
|
|
|
let url = `${path}/periodic/force`;
|
2018-01-26 22:32:11 +00:00
|
|
|
|
2018-02-16 02:55:59 +00:00
|
|
|
if (params) {
|
|
|
|
url += `?${params}`;
|
2018-01-26 22:32:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return this.ajax(url, 'POST');
|
|
|
|
}
|
|
|
|
},
|
2017-09-19 14:47:10 +00:00
|
|
|
});
|