github.com/Ilhicas/nomad@v1.0.4-0.20210304152020-e86851182bc3/ui/app/components/agent-monitor.js (about) 1 import { inject as service } from '@ember/service'; 2 import Component from '@ember/component'; 3 import { computed } from '@ember/object'; 4 import { assert } from '@ember/debug'; 5 import { tagName } from '@ember-decorators/component'; 6 import classic from 'ember-classic-decorator'; 7 import Log from 'nomad-ui/utils/classes/log'; 8 9 const LEVELS = ['error', 'warn', 'info', 'debug', 'trace']; 10 11 @classic 12 @tagName('') 13 export default class AgentMonitor extends Component { 14 @service token; 15 16 client = null; 17 server = null; 18 level = LEVELS[2]; 19 onLevelChange() {} 20 21 levels = LEVELS; 22 monitorUrl = '/v1/agent/monitor'; 23 isStreaming = true; 24 logger = null; 25 26 @computed('client.id', 'level', 'server.{id,region}') 27 get monitorParams() { 28 assert( 29 'Provide a client OR a server to AgentMonitor, not both.', 30 this.server != null || this.client != null 31 ); 32 33 const type = this.server ? 'server_id' : 'client_id'; 34 const id = this.server ? this.server.id : this.client && this.client.id; 35 36 const params = { 37 log_level: this.level, 38 [type]: id, 39 }; 40 41 if (this.server) { 42 params.region = this.server.region; 43 } 44 45 return params; 46 } 47 48 didInsertElement() { 49 this.updateLogger(); 50 } 51 52 updateLogger() { 53 let currentTail = this.logger ? this.logger.tail : ''; 54 if (currentTail) { 55 currentTail += `\n...changing log level to ${this.level}...\n\n`; 56 } 57 this.set( 58 'logger', 59 Log.create({ 60 logFetch: url => this.token.authorizedRequest(url), 61 params: this.monitorParams, 62 url: this.monitorUrl, 63 tail: currentTail, 64 }) 65 ); 66 } 67 68 setLevel(level) { 69 this.logger.stop(); 70 this.set('level', level); 71 this.onLevelChange(level); 72 this.updateLogger(); 73 } 74 75 toggleStream() { 76 this.set('streamMode', 'streaming'); 77 this.toggleProperty('isStreaming'); 78 } 79 }