github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/ui/mirage/serializers/allocation.js (about)

     1  import ApplicationSerializer from './application';
     2  import { arrToObj } from '../utils';
     3  
     4  export default ApplicationSerializer.extend({
     5    embed: true,
     6    include: ['taskStates', 'taskResources'],
     7  
     8    serialize() {
     9      var json = ApplicationSerializer.prototype.serialize.apply(this, arguments);
    10      if (json instanceof Array) {
    11        json.forEach(serializeAllocation);
    12      } else {
    13        serializeAllocation(json);
    14      }
    15      return json;
    16    },
    17  });
    18  
    19  function serializeAllocation(allocation) {
    20    allocation.TaskStates = allocation.TaskStates.reduce(arrToObj('Name'), {});
    21    const { Ports, Networks } = allocation.TaskResources[0]
    22      ? allocation.TaskResources[0].Resources
    23      : {};
    24    allocation.AllocatedResources = {
    25      Shared: { Ports, Networks },
    26      Tasks: allocation.TaskResources.map(({ Name, Resources }) => ({ Name, ...Resources })).reduce(
    27        arrToObj('Name'),
    28        {}
    29      ),
    30    };
    31  }