/** * Copyright (c) HashiCorp, Inc. * SPDX-License-Identifier: MPL-2.0 */ import { bool, equal } from '@ember/object/computed'; import Model from '@ember-data/model'; import { attr, belongsTo, hasMany } from '@ember-data/model'; import { fragmentArray } from 'ember-data-model-fragments/attributes'; import shortUUIDProperty from '../utils/properties/short-uuid'; export default class Evaluation extends Model { @shortUUIDProperty('id') shortId; @shortUUIDProperty('nodeId') shortNodeId; @attr('number') priority; @attr('string') type; @attr('string') triggeredBy; @attr('string') status; @attr('string') statusDescription; @fragmentArray('placement-failure', { defaultValue: () => [] }) failedTGAllocs; @attr('string') previousEval; @attr('string') nextEval; @attr('string') blockedEval; @hasMany('evaluation-stub', { async: false }) relatedEvals; @bool('failedTGAllocs.length') hasPlacementFailures; @equal('status', 'blocked') isBlocked; @belongsTo('job') job; @belongsTo('node') node; @attr('number') modifyIndex; @attr('date') modifyTime; @attr('number') createIndex; @attr('date') createTime; @attr('date') waitUntil; @attr('string') namespace; @attr('string') plainJobId; get hasJob() { return !!this.plainJobId; } get hasNode() { return !!this.belongsTo('node').id(); } get nodeId() { return this.belongsTo('node').id(); } }