Move the API into a subdirectory for ease of imports.
Previously, if users of our code put the API folder in their pyshared they would have to import it as "humbug.humbug". By moving Humbug's API into a directory named "humbug" and moving the API into __init__, you can just "import humbug". (imported from commit 1d2654ae57f8ecbbfe76559de267ec4889708ee8)
This commit is contained in:
		
							parent
							
								
									d4d7da3acc
								
							
						
					
					
						commit
						f2f4a2f8bd
					
				
					 23 changed files with 0 additions and 0 deletions
				
			
		
							
								
								
									
										50
									
								
								humbug/bots/send-nagios-notification
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										50
									
								
								humbug/bots/send-nagios-notification
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,50 @@ | |||
| #!/usr/bin/env python | ||||
| import sys | ||||
| import optparse | ||||
| from os import path | ||||
| 
 | ||||
| sys.path.append(path.join(path.dirname(__file__), '..')) | ||||
| import humbug | ||||
| 
 | ||||
| # Nagios passes the notification details as command line options. | ||||
| # In Nagios, "output" means "first line of output", and "long | ||||
| # output" means "other lines of output". | ||||
| parser = optparse.OptionParser() | ||||
| parser.add_option('--output',      default='') | ||||
| parser.add_option('--long-output', default='') | ||||
| for opt in ('type', 'host', 'service', 'state'): | ||||
|     parser.add_option('--' + opt) | ||||
| (opts, args) = parser.parse_args() | ||||
| 
 | ||||
| msg = dict(type='stream', to='nagios') | ||||
| 
 | ||||
| # Set a subject based on the host or service in question.  This enables | ||||
| # threaded discussion of multiple concurrent issues, and provides useful | ||||
| # context when narrowed. | ||||
| # | ||||
| # We send PROBLEM and RECOVERY messages to the same subject. | ||||
| if opts.service is None: | ||||
|     # Host notification | ||||
|     thing = 'host' | ||||
|     msg['subject'] = 'host %s' % (opts.host,) | ||||
| else: | ||||
|     # Service notification | ||||
|     thing = 'service' | ||||
|     msg['subject'] = 'service %s on %s' % (opts.service, opts.host) | ||||
| 
 | ||||
| # e.g. **PROBLEM**: service is CRITICAL | ||||
| msg['content'] = '**%s**: %s is %s' % (opts.type, thing, opts.state) | ||||
| 
 | ||||
| # The "long output" can contain newlines represented by "\n" escape sequences. | ||||
| # The Nagios mail command uses /usr/bin/printf "%b" to expand these. | ||||
| # We will be more conservative and handle just this one escape sequence. | ||||
| output = (opts.output + '\n' + opts.long_output.replace(r'\n', '\n')).strip() | ||||
| if output: | ||||
|     # Put any command output in a code block. | ||||
|     msg['content'] += ('\n\n~~~~\n' + output + "\n~~~~\n") | ||||
| 
 | ||||
| client = humbug.Client( | ||||
|     email   = 'humbug+nagios@humbughq.com', | ||||
|     api_key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', | ||||
|     site    = 'https://staging.humbughq.com') | ||||
| client.send_message(msg) | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Luke Faraone
						Luke Faraone