mirror of
https://github.com/itsdave-de/msp.git
synced 2025-05-06 15:35:12 +02: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
|
||||
|
||||
from __future__ import unicode_literals
|
||||
# import frappe
|
||||
import frappe
|
||||
import requests
|
||||
from frappe.model.document import 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