예제 #1
0
def get_services_by_name_and_host(servicename, hostid):
    """
    GET /system/services/<servicename>/<hostid>

    :param request_inputs:
    :param servicename:
    :param hostid:
    :return:
    """
    request_inputs = anchore_engine.services.common.do_request_prep(
        request, default_params={})
    user_auth = request_inputs['auth']
    params = request_inputs['params']

    return_object = []
    httpcode = 500
    try:
        service_records = catalog.get_service(user_auth,
                                              servicename=servicename,
                                              hostid=hostid)
        for service_record in service_records:
            return_object.append(
                make_response_service(user_auth, service_record, params))

        httpcode = 200
    except Exception as err:
        return_object = anchore_engine.services.common.make_response_error(
            err, in_httpcode=httpcode)
        httpcode = return_object['httpcode']

    return (return_object, httpcode)
예제 #2
0
def get_simplequeue_endpoint(userId):
    global localconfig, headers
    if localconfig == None:
        localconfig = anchore_engine.configuration.localconfig.get_config()

    base_url = ""
    try:
        service = None

        service_reports = catalog.get_service(userId, servicename='simplequeue')
        if service_reports:
            service = service_reports[0]

        if not service:
            raise Exception("cannot locate registered simplequeue service")

        endpoint = service['base_url']
        if endpoint:
            apiversion = service['version']
            base_url = '/'.join([endpoint, apiversion, 'queues'])
        else:
            raise Exception("cannot load valid endpoint from service record")

    except Exception as err:
        raise Exception("could not find valid simplequeue endpoint - exception: " + str(err))

    return(base_url)
예제 #3
0
def get_service_detail():
    global apiext_status
    """
    GET /system/status

    :return: list of service details
    """

    request_inputs = anchore_engine.services.common.do_request_prep(
        request, default_params={})
    user_auth = request_inputs['auth']
    method = request_inputs['method']
    params = request_inputs['params']

    httpcode = 500
    service_detail = {}

    try:
        try:
            try:
                service_detail['service_states'] = []
                try:
                    up_services = {}
                    service_records = catalog.get_service(user_auth)
                    for service in service_records:
                        el = make_response_service(user_auth, service, params)

                        service_detail['service_states'].append(el)

                        if el['servicename'] not in up_services:
                            up_services[el['servicename']] = 0

                        if el['status']:
                            up_services[el['servicename']] += 1

                except Exception as err:
                    pass

                service_detail['queues'] = {}
                ret_queues = {}
                try:
                    queues = simplequeue.get_queues(user_auth)
                    for queuename in queues:
                        ret_queues[queuename] = {}
                        qlen = simplequeue.qlen(user_auth, queuename)
                        ret_queues[queuename]['qlen'] = qlen
                    service_detail['queues'] = ret_queues
                except:
                    pass

                service_detail['error_event'] = []
                try:
                    events = catalog.get_event(user_auth)
                    for event in events:
                        el = {}
                        for k in ['message_ts', 'hostId', 'message', 'level']:
                            el[k] = event[k]
                        service_detail['error_event'].append(el)
                except:
                    pass
                httpcode = 200

            except Exception as err:
                return_object = anchore_engine.services.common.make_response_error(
                    err, in_httpcode=httpcode)
                httpcode = return_object['httpcode']
        except:
            service_detail = {}

        return_object = service_detail
    except Exception as err:
        return_object = str(err)

    apiext_status.update(return_object)
    return (return_object, httpcode)
예제 #4
0
def get_service_detail():
    """
    GET /system/status

    :return: list of service details
    """

    request_inputs = anchore_engine.services.common.do_request_prep(
        request, default_params={})
    user_auth = request_inputs['auth']
    method = request_inputs['method']
    params = request_inputs['params']

    httpcode = 500
    service_detail = {}

    try:
        try:
            try:
                service_detail['service_states'] = []
                try:
                    up_services = {}
                    service_records = catalog.get_service(user_auth)
                    for service in service_records:
                        el = make_response_service(user_auth, service, params)

                        service_detail['service_states'].append(el)

                        if el['servicename'] not in up_services:
                            up_services[el['servicename']] = 0

                        if el['status']:
                            up_services[el['servicename']] += 1

                except Exception as err:
                    pass

                # Bring back when eventing subsystem is utilized
                #service_detail['error_event'] = []
                #try:
                #    events = catalog.get_event(user_auth)
                #    for event in events:
                #        el = {}
                #        for k in ['message_ts', 'hostId', 'message', 'level']:
                #            el[k] = event[k]
                #        service_detail['error_event'].append(el)
                #except:
                #    pass
                httpcode = 200

            except Exception as err:
                return_object = anchore_engine.services.common.make_response_error(
                    err, in_httpcode=httpcode)
                httpcode = return_object['httpcode']
        except:
            service_detail = {}

        return_object = service_detail
    except Exception as err:
        return_object = str(err)

    return (return_object, httpcode)