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 }