open-nomad/ui/app/models/task-state.js
Buck Doyle 89136cbf6a Add massaged results of class codemod
Manual interventions:
• decorators on the same line for service and controller
  injections and most computed property macros
• preserving import order when possible, both per-line
  and intra-line
• moving new imports to the bottom
• removal of classic decorator for trivial cases
• conversion of init to constructor when appropriate
2020-06-10 16:18:42 -05:00

61 lines
1.7 KiB
JavaScript

import { computed } from '@ember/object';
import { alias, none, and } from '@ember/object/computed';
import Fragment from 'ember-data-model-fragments/fragment';
import attr from 'ember-data/attr';
import { fragment, fragmentOwner, fragmentArray } from 'ember-data-model-fragments/attributes';
import classic from 'ember-classic-decorator';
@classic
export default class TaskState extends Fragment {
@fragmentOwner() allocation;
@attr('string') name;
@attr('string') state;
@attr('date') startedAt;
@attr('date') finishedAt;
@attr('boolean') failed;
@none('finishedAt') isActive;
@and('isActive', 'allocation.isRunning') isRunning;
@computed('task.kind')
get isConnectProxy() {
return (this.get('task.kind') || '').startsWith('connect-proxy:');
}
@computed('name', 'allocation.taskGroup.tasks.[]')
get task() {
const tasks = this.get('allocation.taskGroup.tasks');
return tasks && tasks.findBy('name', this.name);
}
@alias('task.driver') driver;
// TaskState represents a task running on a node, so in addition to knowing the
// driver via the task, the health of the driver is also known via the node
@computed('task.driver', 'allocation.node.drivers.[]')
get driverStatus() {
const nodeDrivers = this.get('allocation.node.drivers') || [];
return nodeDrivers.findBy('name', this.get('task.driver'));
}
@fragment('resources') resources;
@fragmentArray('task-event') events;
@computed('state')
get stateClass() {
const classMap = {
pending: 'is-pending',
running: 'is-primary',
finished: 'is-complete',
failed: 'is-error',
};
return classMap[this.state] || 'is-dark';
}
restart() {
return this.allocation.restart(this.name);
}
}