github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/ui/app/routes/jobs/job.js (about)

     1  import { inject as service } from '@ember/service';
     2  import Route from '@ember/routing/route';
     3  import RSVP from 'rsvp';
     4  import notifyError from 'nomad-ui/utils/notify-error';
     5  import classic from 'ember-classic-decorator';
     6  
     7  @classic
     8  export default class JobRoute extends Route {
     9    @service can;
    10    @service store;
    11    @service token;
    12    @service router;
    13  
    14    serialize(model) {
    15      return { job_name: model.get('idWithNamespace') };
    16    }
    17  
    18    model(params) {
    19      let name,
    20        namespace = 'default';
    21      const { job_name } = params;
    22      const delimiter = job_name.lastIndexOf('@');
    23      if (delimiter !== -1) {
    24        name = job_name.slice(0, delimiter);
    25        namespace = job_name.slice(delimiter + 1);
    26      } else {
    27        name = job_name;
    28      }
    29  
    30      const fullId = JSON.stringify([name, namespace]);
    31  
    32      return this.store
    33        .findRecord('job', fullId, { reload: true })
    34        .then((job) => {
    35          const relatedModelsQueries = [
    36            job.get('allocations'),
    37            job.get('evaluations'),
    38            this.store.query('job', { namespace, meta: true }),
    39            this.store.findAll('namespace'),
    40          ];
    41  
    42          if (this.can.can('accept recommendation')) {
    43            relatedModelsQueries.push(job.get('recommendationSummaries'));
    44          }
    45  
    46          // Optimizing future node look ups by preemptively loading everything
    47          if (job.get('hasClientStatus') && this.can.can('read client')) {
    48            relatedModelsQueries.push(this.store.findAll('node'));
    49          }
    50  
    51          return RSVP.all(relatedModelsQueries).then(() => job);
    52        })
    53        .catch(notifyError(this));
    54    }
    55  }