mirror of
				https://github.com/itsdave-de/msp.git
				synced 2025-10-30 08:57:09 -03:00 
			
		
		
		
	15 | Make request to openITCOCKPIT API to get status data for host
This commit is contained in:
		
							parent
							
								
									38f4a9bac4
								
							
						
					
					
						commit
						986019cd1f
					
				| @ -3,8 +3,75 @@ | |||||||
| # For license information, please see license.txt | # For license information, please see license.txt | ||||||
| 
 | 
 | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| # import frappe | import frappe | ||||||
|  | import requests | ||||||
| from frappe.model.document import Document | from frappe.model.document import Document | ||||||
| 
 | 
 | ||||||
| class ITObject(Document): | class ITObject(Document): | ||||||
| 	pass | 
 | ||||||
|  |     def get_host_status_from_hosts_data(self, hosts_data, status_colors): | ||||||
|  | 
 | ||||||
|  |         host_data_response = {}  | ||||||
|  | 
 | ||||||
|  |         for host_data in hosts_data['all_hosts']: | ||||||
|  | 
 | ||||||
|  |             if host_data['Host']['uuid'] != self.oitc_host_uuid: | ||||||
|  |                 continue | ||||||
|  | 
 | ||||||
|  |             host_data_response = { | ||||||
|  |                 'status': 200, | ||||||
|  |                 'host': { | ||||||
|  |                     'id': host_data['Host']['id'], | ||||||
|  |                     'uuid': host_data['Host']['uuid'], | ||||||
|  |                     'hostStatus': { | ||||||
|  |                         'currentState': host_data['Hoststatus']['humanState'], | ||||||
|  |                         'lastCheck': host_data['Hoststatus']['lastCheckInWords'], | ||||||
|  |                         'nextCheck': host_data['Hoststatus']['nextCheckInWords'], | ||||||
|  |                         'currentStateSince': host_data['Hoststatus']['lastHardStateChangeInWords'] | ||||||
|  |                     }, | ||||||
|  |                     'servicesStatus': { | ||||||
|  |                         'totalServices': host_data['ServicestatusSummary']['total'], | ||||||
|  |                         'state': { | ||||||
|  |                             'ok': host_data['ServicestatusSummary']['state']['ok'], | ||||||
|  |                             'critical': host_data['ServicestatusSummary']['state']['critical'], | ||||||
|  |                             'unknown': host_data['ServicestatusSummary']['state']['unknown'], | ||||||
|  |                             'warning': host_data['ServicestatusSummary']['state']['warning'] | ||||||
|  |                         } | ||||||
|  |                     } | ||||||
|  |                 }, | ||||||
|  |                 'statusColors': status_colors | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |         return host_data_response | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     @frappe.whitelist() | ||||||
|  |     def get_oitc_host_status_data(self): | ||||||
|  |         msp_settings_doc = frappe.get_doc('MSP Settings') | ||||||
|  | 
 | ||||||
|  |         if not self.oitc_host_uuid: | ||||||
|  |             return { | ||||||
|  |                 'status': 422, | ||||||
|  |                 'response': "This host does not have any OITC Host UUID stored. Please store an OITC Host UUID in the 'External References' section to get its status data." | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |         try: | ||||||
|  |             endpoint = f'{msp_settings_doc.oitc_url}hosts/index.json?angular=true&scroll=true&page=1' | ||||||
|  |             api_authorization = f'{msp_settings_doc.oitc_api_key_header_string}' + msp_settings_doc.get_password('oitc_api_key') | ||||||
|  |             headers = {'Authorization': api_authorization} | ||||||
|  | 
 | ||||||
|  |             hosts_data = requests.get(url=endpoint, headers=headers, verify=False) | ||||||
|  | 
 | ||||||
|  |             status_colors = { | ||||||
|  |                 'upStateColor': msp_settings_doc.oitc_status_up_color, | ||||||
|  |                 'downStateColor': msp_settings_doc.oitc_status_down_color, | ||||||
|  |                 'unreachableStateColor': msp_settings_doc.oitc_status_unreachable_color | ||||||
|  |             } | ||||||
|  |             return self.get_host_status_from_hosts_data(hosts_data.json(), status_colors) | ||||||
|  |         except Exception as exception: | ||||||
|  |             exception_message = f'Data could not be fetched from {msp_settings_doc.oitc_url}. Error -> {str(exception)}' | ||||||
|  | 
 | ||||||
|  |             return { | ||||||
|  |                 'status': 500, | ||||||
|  |                 'response': exception_message | ||||||
|  |             } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user