def request_rest_event_splunk(token, username, host, params, service_state, host_group, raw): if params == "": if not host_group or not service_state: print "you don't have startTime and host_group information for request" sys.exit() else: for each in ["ok", "warning", "critical", "unknown"]: if service_state == each: params += "service_state=" + service_state + "&" else: continue params += "host_group=" + str(host_group) + "&" else: pass params += "cols=state&cols=hostname&cols=time&cols=output" url = "https://" + host + "/rest/event?" + params + "&format_datetime=1" print "request url is", url if raw == 0: # get data from API as dictionary format dataFile = Ops.opsgetsend(url, user=username, key=token) elif raw == 1: # get data from API as json raw format dataFile = Ops.opsgetsend_rawjson(url, user=username, key=token) # print dataFile return dataFile
def getHostIP(host, hostid, username, token): url = "https://" + host + "/rest/config/host/"+hostid print url dataFile = Ops.opsgetsend_rawjson(url=url, user=username, key=token) dataFile = json.loads(dataFile) print dataFile["object"]["ip"] return dataFile["object"]["ip"]
def request_rest_status_hostgroup( token, username, host, params="", hostgroupid="", fromhostgroupid="", servicecheck="", host_state=0, host_filter="unhandled", includeunhandledhosts="0", include_servicegroup="0", raw=0, ): if not username or not host: print "you have to input username in function request_rest_status_hostgroup" sys.exit() else: if hostgroupid == "": print "program don't get data by hostgroupid" params += "fromhostgroupid=" + str(fromhostgroupid) + "&" else: params += "hostgroupid=" + str(hostgroupid) + "&" if fromhostgroupid != "": print "program cannot get data from hostgroupid and fromhostgroupid , please chose only one" sys.exit() if servicecheck == "": print "program will get data by any servicecheck , if not please chose one" else: params += "servicecheck=" + str(servicecheck) + "&" print "program will get data by specific servicecheck :%s" % servicecheck if host_state == 0: print "default program will get data by any host_sate - 0:up , 1:down : %s" % host_state else: params += "host_state=" + str(host_state) + "&" print "program will get data by specific host_state :%s" % host_state if host_filter == "handled": print "program get data by %s host_filter" % host_filter params += "host_filter=" + host_filter + "&" else: pass if includeunhandledhosts == "0": print "program don't include host that are unhandled by request with specific services" elif include_servicegroup == "0": print "program don't include service group information" params += "includeunhandledhosts=" + str(1) + "&" else: params += "includeunhandledhosts=" + str(1) + "&" + "include_servicegroup=" + str(1) url = "https://" + host + "/rest/status/hostgroup?" + params print "request url is", url if raw == 0: # get data from API as dictionary format dataFile = Ops.opsgetsend(url, user=username, key=token) elif raw == 1: # get data from API as json raw format dataFile = Ops.opsgetsend_rawjson(url, user=username, key=token) # print dataFile return dataFile
def GetEventService(token, username, host, host_group, services=None, params="" ,service_state="ok,critical", state_type="hard", eventtype="0", raw=0): if not host_group or not service_state or not state_type or not token or not username or not host: print "you have to input service_state in function request_rest_event_splunk_service_state" sys.exit() else: host_group = host_group.split(",") if type(host_group) is StringType: params += "host_group=" + str(host_group) + "&" else: for each in host_group: params += "host_group=" + str(each) + "&" if services is not None: services = services.split(",") if type(services) is StringType: params += "service=" + str(services) + "&" else: for each in services: params += "service=" + str(each) + "&" else: pass service_state = service_state.split(",") if type(service_state) is StringType: params += "service_state=" + str(service_state) + "&" else: for each in service_state: params += "service_state=" + str(each) + "&" state_type = state_type.split(",") if type(state_type) is StringType: params += "state_type=" + str(state_type) + "&" else: for each in state_type: params += "state_type=" + str(each) + "&" if eventtype is not "0": eventtype = eventtype.split(",") if type(eventtype)is StringType: params += "eventtype=" + str(eventtype) + "&" else: for each in list(eventtype): params += "eventtype=" + str(each) + "&" else: params += "eventtype=" + str(eventtype) + "&" params += "cols=state&cols=hostname&cols=time&cols=output" url = "https://" + host + "/rest/event?" + params + "&format_datetime=1" logger.info("request url is: %s" % url) if raw == 0: # get data from API as dictionary format dataFile = Ops.opsgetsend(url, user=username, key=token) elif raw == 1: # get data from API as json raw format dataFile = Ops.opsgetsend_rawjson(url, user=username, key=token) #print dataFile if dataFile == None: return [] else: return dataFile
def request_rest_event_splunk_all(token, username, host, params, raw): params += "cols=state&cols=hostname&cols=time&cols=output" url = "https://" + host + "/rest/event?" + params + "&format_datetime=1" print "request url is", url if raw == 0: # get data from API as dictionary format dataFile = Ops.opsgetsend(url, user=username, key=token) elif raw == 1: # get data from API as json raw format dataFile = Ops.opsgetsend_rawjson(url, user=username, key=token) # print dataFile return dataFile
def request_rest_serverinfo(token, username, host, raw=0): if not username or not host: print "you have to input host_state in function request_rest_event_splunk_host_state" sys.exit() else: pass url = "https://" + host + "/rest/serverinfo" print "request url is", url if raw == 0: # get data from API as dictionary format dataFile = Ops.opsgetsend(url, user=username, key=token) elif raw == 1: # get data from API as json raw format dataFile = Ops.opsgetsend_rawjson(url, user=username, key=token) #print dataFile return dataFile
def request_rest_event_splunk_host_state(token, username, host, params, host_state, state_type, raw): if not host_state or not state_type: print "you have to input host_state in function request_rest_event_splunk_host_state" sys.exit() else: params += "host_state=" + host_state + "&" + "state_type=" + state_type + "&" params += "cols=state&cols=hostname&cols=time&cols=output" url = "https://" + host + "/rest/event?" + params + "&format_datetime=1" print "request url is", url if raw == 0: # get data from API as dictionary format dataFile = Ops.opsgetsend(url, user=username, key=token) elif raw == 1: # get data from API as json raw format dataFile = Ops.opsgetsend_rawjson(url, user=username, key=token) # print dataFile return dataFile
def GetAckStatusHost(token, username, host, host_group, params="", host_filter="unhandled,handled", host_state="0,1", state_type="0,1", raw=0): if not host_group or not token or not username or not host: logger.error("you have to input host_state in function request_rest_event_splunk_host_state") return [] else: host_group = host_group.split(",") if type(host_group) is StringType: params += "hostgroupid=" + str(host_group) + "&" else: for each in host_group: params += "hostgroupid=" + str(each) + "&" host_state = host_state.split(",") if type(host_state) is StringType: params += "host_state=" + str(host_state) + "&" else: for each in host_state: params += "host_state=" + str(each) + "&" state_type = state_type.split(",") if type(state_type) is StringType: params += "state_type=" + str(state_type) + "&" else: for each in state_type: params += "state_type=" + str(each) + "&" host_filter = host_filter.split(",") if type(host_filter) is StringType: params += "host_filter=" + str(host_filter) + "&" else: for each in host_filter: params += "host_filter=" + str(each) + "&" #params += "cols=state&cols=hostname&cols=time&cols=output" + "&" url = "https://" + host + "/rest/status/host?" + params + "format_datetime=1" logger.info("request url is: %s" % url ) if raw == 0: # get data from API as dictionary format dataFile = Ops.opsgetsend(url, user=username, key=token) elif raw == 1: # get data from API as json raw format dataFile = Ops.opsgetsend_rawjson(url, user=username, key=token) #print dataFile if dataFile == None: return [] else: return dataFile
def request_rest_event_opsview_hostgroup_hardstate( token, username, host, host_group, params="", host_state="down,up", state_type="hard", eventtype="0", raw=0 ): if not host_group or not host_state or not state_type or not token or not username or not host: print "you have to input host_state in function request_rest_event_splunk_host_state" sys.exit() else: host_group = host_group.split(",") if type(host_group) is StringType: params += "host_group=" + str(host_group) + "&" else: for each in host_group: params += "host_group=" + str(each) + "&" host_state = host_state.split(",") if type(host_state) is StringType: params += "host_state=" + str(host_state) + "&" else: for each in host_state: params += "host_state=" + str(each) + "&" state_type = state_type.split(",") if type(state_type) is StringType: params += "state_type=" + str(state_type) + "&" else: for each in state_type: params += "state_type=" + str(each) + "&" if eventtype is not "0": eventtype = eventtype.split(",") if type(eventtype) is StringType: params += "eventtype=" + str(eventtype) + "&" else: for each in list(eventtype): params += "eventtype=" + str(each) + "&" params += "cols=state&cols=hostname&cols=time&cols=output" url = "https://" + host + "/rest/event?" + params + "&format_datetime=1" print "request url is", url if raw == 0: # get data from API as dictionary format dataFile = Ops.opsgetsend(url, user=username, key=token) elif raw == 1: # get data from API as json raw format dataFile = Ops.opsgetsend_rawjson(url, user=username, key=token) # print dataFile return dataFile
def request_rest_event(token, username, host, host_group, eventtype, params="", service_state="critical", raw=0): if params == "": if not service_state or not host_group or not username: print "you don't have service_state and host_group information for request" sys.exit() else: pass host_group = host_group.split(",") if type(host_group) is StringType: params += "host_group=" + str(host_group) + "&" else: for each in host_group: params += "host_group=" + str(each) + "&" service_state = service_state.split(",") if type(service_state) is StringType: params += "service_state=" + service_state + "&" else: for each in service_state: params += "service_state=" + each + "&" eventtype = eventtype.split(",") if type(eventtype) is StringType: params += "eventtype=" + str(eventtype) + "&" else: for each in list(eventtype): params += "eventtype=" + str(each) + "&" else: pass params += "cols=state&cols=hostname&cols=time&cols=output&cols=" url = "https://" + host + "/rest/event?" + params + "&format_datetime=1" print "request url is", url if raw == 0: # get data from API as dictionary format dataFile = Ops.opsgetsend(url, user=username, key=token) elif raw == 1: # get data from API as json raw format dataFile = Ops.opsgetsend_rawjson(url, user=username, key=token) # print dataFile return dataFile
def request_rest_event_opsview_hostgroup_hardstate(token, username, host, host_group, params="", host_state="down,up", state_type="hard", eventtype="0", raw=0): """ REST API: Event URL: /rest/event. This requires authentication. Requires VIEWALL or VIEWSOME permission GET - returns event data for requested objects POST, PUT, DELETE - not implemented An event is considered to be either: a host or service changing state (eg, from OK to CRITICAL) a host or service result during soft failures (eg, CRITICAL SOFT 1 to CRITICAL SOFT 2) a host or service in a failure state where alert every failure is enabled an acknowledgement a downtime start a downtime stop (or cancel) Note: The last three were added into trunk on 2012-06-18. Access Control VIEWALL allows all event data to be returned. VIEWSOME allows event data to be returned for objects where permission has been granted for the service based on the access object selection. Requesting Event Data Parameters: cols - defines which columns of data to return. Acceptable values: hostname, time, objectid, servicename, state, state_type, output, eventid, host_group, host_group_id, markdown_filter. Note that some columns will always be returned. For multiple columns use: cols=state&cols=hostname startTime - filter by start time, eg '2011-11-01 18:43:22'. Time is based on the server's timezone endTime - filter by end time rows - the number of rows to return page - which page of data to return sortby - a json structure to describe the ordering of results. Defaults to host_state - host states to filter on. Can be repeated. Acceptable values: up, down, unreachable service_state - service states to filter on. Can be repeated. Acceptable values: ok, warning, critical, unknown host - host names to filter on. Can be repeated service - service names to filter on. Can be repeated state_type - state type to filter on. Acceptable values: soft, hard host_group - host group to filter on. Can be anywhere in the hierarchy. Can be repeated keyword - keyword to filter on. Can be repeated search - search terms. Will search in host name, service name or output. Can be repeated to produce an AND effect saved_maxeventid - if set with the value of the last max event id, an extra attribute will be in the result to signify the number of new events since the last max event id (based on the filtering parameters) eventtype - there are 4 types of events: 0 = state change event; 1 = acknowledgements event; 2 = downtime start event; 3 = downtime end event. If no eventtype is specified, only eventtype=0 is returned, otherwise specify multiple times to get different types added. This was committed into trunk 2012-06-18. """ if not host_group or not host_state or not state_type or not token or not username or not host: print "you have to input host_state in function request_rest_event_splunk_host_state" sys.exit() else: host_group = host_group.split(",") if type(host_group) is StringType: params += "host_group=" + str(host_group) + "&" else: for each in host_group: params += "host_group=" + str(each) + "&" host_state = host_state.split(",") if type(host_state) is StringType: params += "host_state=" + str(host_state) + "&" else: for each in host_state: params += "host_state=" + str(each) + "&" state_type = state_type.split(",") if type(state_type) is StringType: params += "state_type=" + str(state_type) + "&" else: for each in state_type: params += "state_type=" + str(each) + "&" if eventtype is not "0": eventtype = eventtype.split(",") if type(eventtype)is StringType: params += "eventtype=" + str(eventtype) + "&" else: for each in list(eventtype): params += "eventtype=" + str(each) + "&" params += "cols=state&cols=hostname&cols=time&cols=output" url = "https://" + host + "/rest/event?" + params + "&format_datetime=1" print "request url is", url if raw == 0: # get data from API as dictionary format dataFile = Ops.opsgetsend(url, user=username, key=token) elif raw == 1: # get data from API as json raw format dataFile = Ops.opsgetsend_rawjson(url, user=username, key=token) #print dataFile return dataFile