github.com/hernad/nomad@v1.6.112/ui/app/models/task.js (about)

     1  /**
     2   * Copyright (c) HashiCorp, Inc.
     3   * SPDX-License-Identifier: MPL-2.0
     4   */
     5  
     6  import { attr } from '@ember-data/model';
     7  import Fragment from 'ember-data-model-fragments/fragment';
     8  import {
     9    fragment,
    10    fragmentArray,
    11    fragmentOwner,
    12  } from 'ember-data-model-fragments/attributes';
    13  import { computed } from '@ember/object';
    14  
    15  export default class Task extends Fragment {
    16    @fragmentOwner() taskGroup;
    17  
    18    @attr('string') name;
    19    @attr('string') driver;
    20    @attr('string') kind;
    21  
    22    @attr() meta;
    23  
    24    @computed('taskGroup.mergedMeta', 'meta')
    25    get mergedMeta() {
    26      return {
    27        ...this.taskGroup.mergedMeta,
    28        ...this.meta,
    29      };
    30    }
    31  
    32    @fragment('lifecycle') lifecycle;
    33  
    34    @computed('lifecycle', 'lifecycle.sidecar')
    35    get lifecycleName() {
    36      if (this.lifecycle) {
    37        const { hook, sidecar } = this.lifecycle;
    38  
    39        if (hook === 'prestart') {
    40          return sidecar ? 'prestart-sidecar' : 'prestart-ephemeral';
    41        } else if (hook === 'poststart') {
    42          return sidecar ? 'poststart-sidecar' : 'poststart-ephemeral';
    43        } else if (hook === 'poststop') {
    44          return 'poststop';
    45        }
    46      }
    47  
    48      return 'main';
    49    }
    50  
    51    @attr('number') reservedMemory;
    52    @attr('number') reservedMemoryMax;
    53    @attr('number') reservedCPU;
    54    @attr('number') reservedDisk;
    55    @attr('number') reservedEphemeralDisk;
    56    @fragmentArray('service-fragment') services;
    57  
    58    @fragmentArray('volume-mount', { defaultValue: () => [] }) volumeMounts;
    59  
    60    async _fetchParentJob() {
    61      let job = await this.store.findRecord('job', this.taskGroup.job.id, {
    62        reload: true,
    63      });
    64      this._job = job;
    65    }
    66  
    67    get pathLinkedVariable() {
    68      if (!this._job) {
    69        this._fetchParentJob();
    70        return null;
    71      } else {
    72        let jobID = this._job.plainId;
    73        if (this._job.parent.get('plainId')) {
    74          jobID = this._job.parent.get('plainId');
    75        }
    76        return this._job.variables?.findBy(
    77          'path',
    78          `nomad/jobs/${jobID}/${this.taskGroup.name}/${this.name}`
    79        );
    80      }
    81    }
    82  }