32 lines
1,017 B
JavaScript
32 lines
1,017 B
JavaScript
import ApplicationSerializer from './application';
|
|
import { arrToObj } from '../utils';
|
|
|
|
export default ApplicationSerializer.extend({
|
|
embed: true,
|
|
include: ['taskStates', 'taskResources'],
|
|
|
|
serialize() {
|
|
var json = ApplicationSerializer.prototype.serialize.apply(this, arguments);
|
|
if (json instanceof Array) {
|
|
json.forEach(serializeAllocation);
|
|
} else {
|
|
serializeAllocation(json);
|
|
}
|
|
return json;
|
|
},
|
|
});
|
|
|
|
function serializeAllocation(allocation) {
|
|
allocation.TaskStates = allocation.TaskStates.reduce(arrToObj('Name'), {});
|
|
allocation.Resources = allocation.TaskResources.mapBy('Resources').reduce(
|
|
(hash, resources) => {
|
|
['CPU', 'DiskMB', 'IOPS', 'MemoryMB'].forEach(key => (hash[key] += resources[key]));
|
|
hash.Networks = resources.Networks;
|
|
hash.Ports = resources.Ports;
|
|
return hash;
|
|
},
|
|
{ CPU: 0, DiskMB: 0, IOPS: 0, MemoryMB: 0 }
|
|
);
|
|
allocation.TaskResources = allocation.TaskResources.reduce(arrToObj('Name', 'Resources'), {});
|
|
}
|