github.com/zoomfoo/nomad@v0.8.5-0.20180907175415-f28fd3a1a056/ui/app/models/task-state.js (about)

     1  import { none } from '@ember/object/computed';
     2  import { computed } from '@ember/object';
     3  import { alias } from '@ember/object/computed';
     4  import Fragment from 'ember-data-model-fragments/fragment';
     5  import attr from 'ember-data/attr';
     6  import { fragment, fragmentOwner, fragmentArray } from 'ember-data-model-fragments/attributes';
     7  
     8  export default Fragment.extend({
     9    name: attr('string'),
    10    state: attr('string'),
    11    startedAt: attr('date'),
    12    finishedAt: attr('date'),
    13    failed: attr('boolean'),
    14  
    15    isActive: none('finishedAt'),
    16  
    17    allocation: fragmentOwner(),
    18    task: computed('allocation.taskGroup.tasks.[]', function() {
    19      const tasks = this.get('allocation.taskGroup.tasks');
    20      return tasks && tasks.findBy('name', this.get('name'));
    21    }),
    22  
    23    driver: alias('task.driver'),
    24  
    25    // TaskState represents a task running on a node, so in addition to knowing the
    26    // driver via the task, the health of the driver is also known via the node
    27    driverStatus: computed('task.driver', 'allocation.node.drivers.[]', function() {
    28      const nodeDrivers = this.get('allocation.node.drivers') || [];
    29      return nodeDrivers.findBy('name', this.get('task.driver'));
    30    }),
    31  
    32    resources: fragment('resources'),
    33    events: fragmentArray('task-event'),
    34  
    35    stateClass: computed('state', function() {
    36      const classMap = {
    37        pending: 'is-pending',
    38        running: 'is-primary',
    39        finished: 'is-complete',
    40        failed: 'is-error',
    41      };
    42  
    43      return classMap[this.get('state')] || 'is-dark';
    44    }),
    45  });