github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/ui/app/adapters/node.js (about)

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