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
예제 #10
0
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
예제 #11
0
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