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
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)
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
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
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)
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