def ingest_func(index_id, source_type, batch_size, documents): search_client = get_search_client() # limit batch size to the 1-1000 range batch_size = min(max(batch_size, 1), 1000) for document in documents: loaded_doc = json.load(document) if source_type == "gingest": format_output(search_client.ingest(index_id, loaded_doc).data) elif source_type == "gmetalist": entry_list = loaded_doc.pop("gmeta") current_doc = copy.copy(loaded_doc) while entry_list: current_slice = entry_list[:batch_size] entry_list = entry_list[batch_size:] current_doc["gmeta"] = current_slice gingest_doc = { "ingest_type": "GMetaList", "ingest_data": current_doc, } format_output("Sending batch of size {}".format(batch_size)) format_output("-Start Results-") format_output(search_client.ingest(index_id, gingest_doc).data) format_output("-End Results-")
def create_cmd(index_id, role_name, principal, principal_type): """ Example usage: idx="...index ID here..." principal=ae341a98-d274-11e5-b888-dbae3a8ba545 globus-search index role create writer $idx $principal --type identity globus-search index role create admin $idx "urn:globus:auth:identity:$principal" """ if principal.startswith("urn:"): if principal_type == "identity" and not principal.startswith( "urn:globus:auth:identity:"): raise click.UsageError( f"--type=identity but '{principal}' is not a valid identity URN" ) if principal_type == "group" and not principal.startswith( "urn:globus:groups:id:"): raise click.UsageError( f"--type=group but '{principal}' is not a valid group URN") else: if principal_type == "identity": principal = f"urn:globus:auth:identity:{principal}" elif principal_type == "group": principal = f"urn:globus:groups:id:{principal}" else: raise click.UsageError(f"'{principal}' is not a valid URN") role_doc = {"role_name": role_name, "principal": principal} search_client = get_search_client() format_output( search_client.post(f"/v1/index/{index_id}/role", data=role_doc).data)
def query_func(index_id, query_string, query_template, limit, offset): search_client = get_search_client() format_output( search_client.search( index_id, query_string, query_template=query_template, limit=limit, offset=offset, ).data)
def delete_by_query_cmd(index_id, query_string, advanced): search_client = get_search_client() format_output( search_client.delete_by_query( index_id, { "q": query_string, "advanced": advanced, }, ).data)
def query_func( index_id, query_string, limit, offset, bypass_visible_to, advanced, filter_principal_sets, ): search_client = get_search_client() format_output( search_client.search( index_id, query_string, advanced=advanced, limit=limit, offset=offset, query_params={ "filter_principal_sets": filter_principal_sets, "bypass_visible_to": bypass_visible_to, }, ).data)
def update_func(index_id, source): search_client = get_search_client() with open(source) as f: format_output(search_client.update_entry(index_id, f.read()).data)
def delete_func(index_id, subject): search_client = get_search_client() format_output(search_client.delete_subject(index_id, subject).data)
def show_func(index_id, subject): search_client = get_search_client() format_output(search_client.get_subject(index_id, subject).data)
def create_func(index_id, source): search_client = get_search_client() with open(source) as f: format_output(search_client.create_entry(index_id, json.load(f)).data)
def create_cmd(display_name, description): index_doc = {"display_name": display_name, "description": description} search_client = get_search_client() format_output(search_client.post("/beta/index", data=index_doc).data)
def list_func(index_id): search_client = get_search_client() format_output(search_client.get_query_template_list(index_id).data)
def delete_cmd(index_id, role_id): search_client = get_search_client() format_output( search_client.delete(f"/v1/index/{index_id}/role/{role_id}").data)
def show_func(index_id, template_name): search_client = get_search_client() format_output(search_client.get_query_template(index_id, template_name).data)
def show_cmd(task_id): search_client = get_search_client() format_output(search_client.get_task(task_id).data)
def list_cmd(index_id): search_client = get_search_client() format_output(search_client.get_task_list(index_id).data)
def delete_func(index_id, subject, entry_id): search_client = get_search_client() format_output( search_client.delete_entry(index_id, subject, entry_id=entry_id).data)
def show_index_cmd(index_id): search_client = get_search_client() format_output(search_client.get_index(index_id).data)
def list_cmd(): search_client = get_search_client() format_output(search_client.get("/v1/index_list").data)
def list_cmd(index_id): search_client = get_search_client() format_output(search_client.get(f"/v1/index/{index_id}/role_list").data)