Exemplo n.º 1
0
def get_lookups_from_splunk(searchinfo, namespace, cb_reply_parser, query_params):
    """
    Gets a list of models from Splunk's /lookup-table-files endpoint

    Args:
        searchinfo (dict): a seachinfo object
        namespace (string): which namespace to get lookups from
        cb_reply_parser(function): a callback to process the reply from splunk
        query_params (list): a list of tuples representing URL params, ie. [(count, -1)]

    Returns:
        lookup_files (dict): a map from a lookup file's location on disk to info about it
    """

    rest_proxy = rest_proxy_from_searchinfo(searchinfo)

    # searchinfo can be null, in which case we should fall back to the safe 'nobody' username because we can't get the user
    try:
        username = rest_proxy.splunk_user
    except AttributeError:
        username = '******'

    query_params_copy = build_lookups_query_params(query_params, username)
    url = make_get_lookup_url(rest_proxy, namespace=namespace, lookup_file=None, url_params=query_params_copy)
    reply = rest_proxy.make_rest_call('GET', url)
    lookup_files = cb_reply_parser(reply)

    return lookup_files
Exemplo n.º 2
0
def delete_model_with_splunk_rest(model_name, searchinfo=None, namespace=None):
    file_name = models_util.model_name_to_filename(model_name)
    logger.debug('Deleting model: %s' % file_name)
    rest_proxy = rest_proxy_from_searchinfo(searchinfo)
    url = rest_url_util.make_get_lookup_url(rest_proxy,
                                            namespace=namespace,
                                            lookup_file=file_name)
    reply = rest_proxy.make_rest_call('DELETE', url)
    parse_model_reply(reply)
Exemplo n.º 3
0
def get_model_list_by_experiment(rest_proxy, namespace, experiment_id):
    url_params = [('search', '__mlspl__exp_*{}*.csv'.format(experiment_id)),
                  ('count', '0')]
    url = rest_url_util.make_get_lookup_url(rest_proxy,
                                            namespace=namespace,
                                            url_params=url_params)
    reply = rest_proxy.make_rest_call('GET', url)
    content = json.loads(reply.get('content'))
    entries = content.get('entry')
    model_list = []
    for entry in entries:
        model_list.append(entry.get('name'))
    return model_list
Exemplo n.º 4
0
 def _delete_models(request, url_parts):
     if len(url_parts) == 1:
         try:
             searchinfo = searchinfo_from_request(request)
             rest_proxy = rest_proxy_from_searchinfo(searchinfo)
             model_list = get_model_list_by_experiment(
                 rest_proxy, namespace='user', experiment_id=url_parts[0])
             for model_name in model_list:
                 url = rest_url_util.make_get_lookup_url(
                     rest_proxy, namespace='user', lookup_file=model_name)
                 reply = rest_proxy.make_rest_call('DELETE', url)
         except Exception as e:
             cexc.log_traceback()
             pass
Exemplo n.º 5
0
def get_lookup_file_from_searchinfo(file_name, searchinfo, namespace):
    """
    file a GET request to /lookup-table-files/filename endpoint, return the reply

    Args:
        file_name (str) : file name of the existing lookup file
        searchinfo (dict) : searchinfo
        namespace (str) : lookup file namespace

    Returns:
        reply (dict) : the response from GET

    """
    rest_proxy = rest_proxy_from_searchinfo(searchinfo)
    url = rest_url_util.make_get_lookup_url(rest_proxy, namespace=namespace, lookup_file=file_name)
    return rest_proxy.make_rest_call('GET', url)
Exemplo n.º 6
0
def model_name_to_path_from_splunk_rest(model_name,
                                        searchinfo,
                                        namespace=None):
    file_name = model_name_to_filename(model_name)

    rest_proxy = rest_proxy_from_searchinfo(searchinfo)
    url = rest_url_util.make_get_lookup_url(rest_proxy,
                                            namespace=namespace,
                                            lookup_file=file_name)
    reply = rest_proxy.make_rest_call('GET', url)
    json_content = models_util.parse_reply(reply)
    try:
        file_path = json_content['entry'][0]['content']['eai:data']
    except Exception as e:
        logger.debug(str(e))
        logger.debug(json_content)
        raise Exception("Please check mlspl.log for more details.")

    return file_path