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 }