github.com/blixtra/nomad@v0.7.2-0.20171221000451-da9a1d7bb050/ui/app/models/task-event.js (about)

     1  import Ember from 'ember';
     2  import Fragment from 'ember-data-model-fragments/fragment';
     3  import attr from 'ember-data/attr';
     4  import { fragmentOwner } from 'ember-data-model-fragments/attributes';
     5  import moment from 'moment';
     6  
     7  const { computed } = Ember;
     8  const displayProps = [
     9    'message',
    10    'validationError',
    11    'setupError',
    12    'driverError',
    13    'downloadError',
    14    'killReason',
    15    'killTimeout',
    16    'killError',
    17    'exitCode',
    18    'signal',
    19    'startDelay',
    20    'restartReason',
    21    'failedSibling',
    22    'taskSignal',
    23    'taskSignalReason',
    24    'driverMessage',
    25  ];
    26  
    27  export default Fragment.extend({
    28    state: fragmentOwner(),
    29  
    30    type: attr('string'),
    31    signal: attr('number'),
    32    exitCode: attr('number'),
    33  
    34    time: attr('date'),
    35    timeNanos: attr('number'),
    36  
    37    downloadError: attr('string'),
    38    driverError: attr('string'),
    39    driverMessage: attr('string'),
    40    killError: attr('string'),
    41    killReason: attr('string'),
    42    killTimeout: attr('number'),
    43    restartReason: attr('string'),
    44    setupError: attr('string'),
    45    startDelay: attr('number'),
    46    taskSignal: attr('string'),
    47    taskSignalReason: attr('string'),
    48    validationError: attr('string'),
    49    vaultError: attr('string'),
    50    message: attr('string'),
    51    failedSibling: attr('string'),
    52  
    53    displayMessage: computed(...displayProps, function() {
    54      let desc = '';
    55      switch (this.get('type')) {
    56        case 'Task Setup':
    57          desc = this.get('message');
    58          break;
    59        case 'Started':
    60          desc = 'Task started by client';
    61          break;
    62        case 'Received':
    63          desc = 'Task received by client';
    64          break;
    65        case 'Failed Validation':
    66          desc = this.get('validationError') || 'Validation of task failed';
    67          break;
    68        case 'Setup Failure':
    69          desc = this.get('setupError') || 'Task setup failed';
    70          break;
    71        case 'Driver Failure':
    72          desc = this.get('driverError') || 'Failed to start task';
    73          break;
    74        case 'Downloading Artifacts':
    75          desc = 'Client is downloading artifacts';
    76          break;
    77        case 'Failed Artifact Download':
    78          desc = this.get('downloadError') || 'Failed to download artifacts';
    79          break;
    80        case 'Killing':
    81          desc =
    82            this.get('killReason') ||
    83            (this.get('killTimeout') &&
    84              `Sent interrupt. Waiting ${this.get('killTimeout')} before force killing`);
    85          break;
    86        case 'Killed':
    87          desc = this.get('killError') || 'Task successfully killed';
    88          break;
    89        case 'Terminated':
    90          var parts = [`Exit Code: ${this.get('exitCode')}`];
    91          if (this.get('signal')) {
    92            parts.push(`Signal: ${this.get('signal')}`);
    93          }
    94          if (this.get('message')) {
    95            parts.push(`Exit Message: ${this.get('message')}`);
    96          }
    97          desc = parts.join(', ');
    98          break;
    99        case 'Restarting':
   100          var timerMessage = `Task restarting in ${moment
   101            .duration(this.get('startDelay') / 1000000, 'ms')
   102            .humanize()}`;
   103          if (this.get('restartReason') && this.get('restartReason') !== 'Restart within policy') {
   104            desc = `${this.get('restartReason')} - ${timerMessage}`;
   105          } else {
   106            desc = timerMessage;
   107          }
   108          break;
   109        case 'Not Restarting':
   110          desc = this.get('restartReason') || 'Task exceeded restart policy';
   111          break;
   112        case 'Sibling Task Failed':
   113          desc = this.get('failedSibling')
   114            ? `Task's sibling ${this.get('failedSibling')} failed`
   115            : "Task's sibling failed";
   116          break;
   117        case 'Signaling':
   118          var signal = this.get('taskSignal');
   119          var reason = this.get('taskSignalReason');
   120  
   121          if (!signal && !reason) {
   122            desc = 'Task being sent a signal';
   123          } else if (!signal) {
   124            desc = reason;
   125          } else if (!reason) {
   126            desc = `Task being sent signal ${signal}`;
   127          } else {
   128            desc = `Task being sent signal ${signal}: ${reason}`;
   129          }
   130  
   131          break;
   132        case 'Restart Signaled':
   133          desc = this.get('restartReason') || 'Task signaled to restart';
   134          break;
   135        case 'Driver':
   136          desc = this.get('driverMessage');
   137          break;
   138        case 'Leader Task Dead':
   139          desc = 'Leader Task in Group dead';
   140          break;
   141        case 'Generic':
   142          desc = this.get('message');
   143          break;
   144      }
   145  
   146      return desc;
   147    }),
   148  });