Пример #1
0
def delete_all_hosts(confirm_delete_all=None):
    if not confirm_delete_all:
        logger.error(
            "To delete all hosts, provide confirm_delete_all=true in the request."
        )
        flask.abort(
            400,
            "To delete all hosts, provide confirm_delete_all=true in the request."
        )

    try:
        # get all hosts from the DB; bypasses xjoin-search, which limits the number hosts to 10 by default.
        ids_list = get_all_hosts()
    except ValueError as err:
        log_get_host_list_failed(logger)
        flask.abort(400, str(err))
    except ConnectionError:
        logger.error("xjoin-search not accessible")
        flask.abort(503)

    if len(ids_list) == 0:
        flask.abort(status.HTTP_404_NOT_FOUND, "No hosts found for deletion.")

    delete_count = _delete_filtered_hosts(ids_list)

    json_data = {"hosts_found": len(ids_list), "hosts_deleted": delete_count}

    return flask_json_response(json_data, status.HTTP_202_ACCEPTED)
Пример #2
0
def delete_host_list(
    display_name=None,
    fqdn=None,
    hostname_or_id=None,
    insights_id=None,
    provider_id=None,
    provider_type=None,
    registered_with=None,
    staleness=None,
    tags=None,
    filter=None,
):
    if not any([
            display_name,
            fqdn,
            hostname_or_id,
            insights_id,
            provider_id,
            provider_type,
            registered_with,
            staleness,
            tags,
            filter,
    ]):
        logger.error(
            "bulk-delete operation needs at least one input property to filter on."
        )
        flask.abort(
            400,
            "bulk-delete operation needs at least one input property to filter on."
        )

    try:
        ids_list = get_host_ids_list_xjoin(
            display_name,
            fqdn,
            hostname_or_id,
            insights_id,
            provider_id,
            provider_type,
            registered_with,
            staleness,
            tags,
            filter,
        )
    except ValueError as err:
        log_get_host_list_failed(logger)
        flask.abort(400, str(err))
    except ConnectionError:
        logger.error("xjoin-search not accessible")
        flask.abort(503)

    if not len(ids_list):
        flask.abort(status.HTTP_404_NOT_FOUND, "No hosts found for deletion.")

    delete_count = _delete_filtered_hosts(ids_list)

    json_data = {"hosts_found": len(ids_list), "hosts_deleted": delete_count}

    return flask_json_response(json_data, status.HTTP_202_ACCEPTED)
Пример #3
0
def get_host_list(
    display_name=None,
    fqdn=None,
    hostname_or_id=None,
    insights_id=None,
    provider_id=None,
    provider_type=None,
    tags=None,
    page=1,
    per_page=100,
    order_by=None,
    order_how=None,
    staleness=None,
    registered_with=None,
    filter=None,
    fields=None,
):

    total = 0
    host_list = ()

    bulk_query_source = get_bulk_query_source()

    get_host_list = GET_HOST_LIST_FUNCTIONS[bulk_query_source]

    try:
        host_list, total, additional_fields = get_host_list(
            display_name,
            fqdn,
            hostname_or_id,
            insights_id,
            provider_id,
            provider_type,
            tags,
            page,
            per_page,
            order_by,
            order_how,
            staleness,
            registered_with,
            filter,
            fields,
        )
    except ValueError as e:
        log_get_host_list_failed(logger)
        flask.abort(400, str(e))

    json_data = build_paginated_host_list_response(total, page, per_page,
                                                   host_list,
                                                   additional_fields)
    return flask_json_response(json_data)