github.com/hernad/nomad@v1.6.112/ui/app/adapters/node.js (about)

     1  /**
     2   * Copyright (c) HashiCorp, Inc.
     3   * SPDX-License-Identifier: MPL-2.0
     4   */
     5  
     6  import Watchable from './watchable';
     7  import addToPath from 'nomad-ui/utils/add-to-path';
     8  import classic from 'ember-classic-decorator';
     9  
    10  @classic
    11  export default class NodeAdapter extends Watchable {
    12    setEligible(node) {
    13      return this.setEligibility(node, true);
    14    }
    15  
    16    setIneligible(node) {
    17      return this.setEligibility(node, false);
    18    }
    19  
    20    setEligibility(node, isEligible) {
    21      const url = addToPath(
    22        this.urlForFindRecord(node.id, 'node'),
    23        '/eligibility'
    24      );
    25      return this.ajax(url, 'POST', {
    26        data: {
    27          NodeID: node.id,
    28          Eligibility: isEligible ? 'eligible' : 'ineligible',
    29        },
    30      });
    31    }
    32  
    33    // Force: -1s deadline
    34    // No Deadline: 0 deadline
    35    drain(node, drainSpec) {
    36      const url = addToPath(this.urlForFindRecord(node.id, 'node'), '/drain');
    37      return this.ajax(url, 'POST', {
    38        data: {
    39          NodeID: node.id,
    40          DrainSpec: Object.assign(
    41            {
    42              Deadline: 0,
    43              IgnoreSystemJobs: true,
    44            },
    45            drainSpec
    46          ),
    47        },
    48      });
    49    }
    50  
    51    forceDrain(node, drainSpec) {
    52      return this.drain(
    53        node,
    54        Object.assign({}, drainSpec, {
    55          Deadline: -1,
    56        })
    57      );
    58    }
    59  
    60    cancelDrain(node) {
    61      const url = addToPath(this.urlForFindRecord(node.id, 'node'), '/drain');
    62      return this.ajax(url, 'POST', {
    63        data: {
    64          NodeID: node.id,
    65          DrainSpec: null,
    66        },
    67      });
    68    }
    69  
    70    addMeta(node, newMeta) {
    71      const url = `/v1/client/metadata?node_id=${node.id}`;
    72      return this.ajax(url, 'POST', {
    73        data: { Meta: newMeta },
    74      });
    75    }
    76  }