github.com/aminovpavel/nomad@v0.11.8/ui/app/adapters/node.js (about)

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