37 lines
971 B
JavaScript
37 lines
971 B
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
*/
|
|
|
|
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'), {});
|
|
const { Ports, Networks } = allocation.TaskResources[0]
|
|
? allocation.TaskResources[0].Resources
|
|
: {};
|
|
allocation.AllocatedResources = {
|
|
Shared: { Ports, Networks },
|
|
Tasks: allocation.TaskResources.map(({ Name, Resources }) => ({ Name, ...Resources })).reduce(
|
|
arrToObj('Name'),
|
|
{}
|
|
),
|
|
};
|
|
}
|