Esempio n. 1
0
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-")
Esempio n. 2
0
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)
Esempio n. 3
0
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)
Esempio n. 5
0
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)
Esempio n. 6
0
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)
Esempio n. 7
0
def delete_func(index_id, subject):
    search_client = get_search_client()
    format_output(search_client.delete_subject(index_id, subject).data)
Esempio n. 8
0
def show_func(index_id, subject):
    search_client = get_search_client()
    format_output(search_client.get_subject(index_id, subject).data)
Esempio n. 9
0
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)
Esempio n. 10
0
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)
Esempio n. 11
0
def list_func(index_id):
    search_client = get_search_client()
    format_output(search_client.get_query_template_list(index_id).data)
Esempio n. 12
0
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)
Esempio n. 13
0
def show_func(index_id, template_name):
    search_client = get_search_client()
    format_output(search_client.get_query_template(index_id, template_name).data)
Esempio n. 14
0
def show_cmd(task_id):
    search_client = get_search_client()
    format_output(search_client.get_task(task_id).data)
Esempio n. 15
0
def list_cmd(index_id):
    search_client = get_search_client()
    format_output(search_client.get_task_list(index_id).data)
Esempio n. 16
0
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)
Esempio n. 17
0
def show_index_cmd(index_id):
    search_client = get_search_client()
    format_output(search_client.get_index(index_id).data)
Esempio n. 18
0
def list_cmd():
    search_client = get_search_client()
    format_output(search_client.get("/v1/index_list").data)
Esempio n. 19
0
def list_cmd(index_id):
    search_client = get_search_client()
    format_output(search_client.get(f"/v1/index/{index_id}/role_list").data)