コード例 #1
0
ファイル: lsapi.py プロジェクト: zwopir/lsapi
def get_host_filtered_by_name(host):
    entity = 'hosts'
    query_filter = filter_to_dict('{"eq":["display_name", "%s"]}' % host)
    columns = get_columns_from_get_parameter_or_use_defaults(
        request.args, entity)
    with QueryTableCtx(ls_query, entity, query_filter, columns) as ls_ctx:
        data, ls_return_code = ls_ctx.query()
        with LivestatusActionCtx(data, ls_return_code) as task_ctx:
            if request.method == 'POST':
                downtime_data = request.get_json(force=True,
                                                 silent=False,
                                                 cache=False)
                count, downtime_identifier = task_ctx.set_downtime(
                    ls_ctx, downtime_data)
                # verify new downtimes
                downtime_filter = filter_to_dict('{"rei": ["comment", "%s"]}' %
                                                 downtime_identifier)
                downtime_columns = get_columns_from_get_parameter_or_use_defaults(
                    {}, 'downtimes')
                with QueryTableCtx(ls_query, 'downtimes', downtime_filter,
                                   downtime_columns) as downtime_ls_ctx:
                    downtime_return_code, message = downtime_ls_ctx.verify_downtimes(
                        count)
                    return jsonify({"message": message}), downtime_return_code
            else:
                # GET request
                return task_ctx.return_table()
コード例 #2
0
ファイル: lsapi.py プロジェクト: zwopir/lsapi
def get_service_filtered_by_host_and_service(host, service):
    entity = 'services'
    unencoded_service = urllib.unquote_plus(service)
    query_filter = filter_to_dict(
        '{"and":[{"eq":["host_display_name","%s"]},{"eq":["service_description","%s"]}]}'
        % (host, unencoded_service))
    columns = get_columns_from_get_parameter_or_use_defaults(
        request.args, entity)
    with QueryTableCtx(ls_query, entity, query_filter, columns) as ls_ctx:
        data, ls_return_code = ls_ctx.query()
        with LivestatusActionCtx(data, ls_return_code) as task_ctx:
            if request.method == 'POST':
                downtime_data = request.get_json(force=True,
                                                 silent=False,
                                                 cache=False)
                count, downtime_identifier = task_ctx.set_downtime(
                    ls_ctx, downtime_data)
                # verify new downtimes
                downtime_filter = filter_to_dict('{"rei": ["comment", "%s"]}' %
                                                 downtime_identifier)
                downtime_columns = get_columns_from_get_parameter_or_use_defaults(
                    {}, 'downtimes')
                with QueryTableCtx(ls_query, 'downtimes', downtime_filter,
                                   downtime_columns) as downtime_ls_ctx:
                    downtime_return_code, message = downtime_ls_ctx.verify_downtimes(
                        count)
                    return jsonify({"message": message}), downtime_return_code
            else:
                return task_ctx.return_table()
コード例 #3
0
ファイル: lsapi.py プロジェクト: zwopir/lsapi
def get_services():
    entity = 'services'
    query_filter = get_filter_from_get_parameter(request.args)
    columns = get_columns_from_get_parameter_or_use_defaults(
        request.args, entity)
    with QueryTableCtx(ls_query, entity, query_filter, columns) as ls_ctx:
        data, ls_return_code = ls_ctx.query()
        with LivestatusActionCtx(data, ls_return_code) as task_ctx:
            if request.method == 'POST':
                if not query_filter:
                    raise BadRequestException(
                        "no filter given, not setting downtime on all services",
                        status_code=400)
                downtime_data = request.get_json(force=True,
                                                 silent=False,
                                                 cache=False)
                count, downtime_identifier = task_ctx.set_downtime(
                    ls_ctx, downtime_data)
                # verify new downtimes
                downtime_filter = filter_to_dict('{"rei": ["comment", "%s"]}' %
                                                 downtime_identifier)
                downtime_columns = get_columns_from_get_parameter_or_use_defaults(
                    {}, 'downtimes')
                with QueryTableCtx(ls_query, 'downtimes', downtime_filter,
                                   downtime_columns) as downtime_ls_ctx:
                    downtime_return_code, message = downtime_ls_ctx.verify_downtimes(
                        count)
                    return jsonify({"message": message}), downtime_return_code
            else:
                # GET request
                return task_ctx.return_table()
コード例 #4
0
ファイル: lsapi.py プロジェクト: zwopir/lsapi
def get_comment(comment_id):
    entity = 'comments'
    query_filter = filter_to_dict('{"eq":["id","%d"]}' % comment_id)
    columns = get_columns_from_get_parameter_or_use_defaults(
        request.args, entity)
    with QueryTableCtx(ls_query, entity, query_filter, columns) as ls_ctx:
        data, ls_return_code = ls_ctx.query()
        with LivestatusActionCtx(data, ls_return_code) as task_ctx:
            return task_ctx.return_table()
コード例 #5
0
ファイル: lsapi.py プロジェクト: zwopir/lsapi
def g_comments():
    entity = 'comments'
    query_filter = get_filter_from_get_parameter(request.args)
    columns = get_columns_from_get_parameter_or_use_defaults(
        request.args, entity)
    with QueryTableCtx(ls_query, entity, query_filter, columns) as ls_ctx:
        data, ls_return_code = ls_ctx.query()
        with LivestatusActionCtx(data, ls_return_code) as task_ctx:
            return task_ctx.return_table()
コード例 #6
0
ファイル: lsapi.py プロジェクト: zwopir/lsapi
def get_downtime(downtime_id):
    entity = 'downtimes'
    query_filter = filter_to_dict('{"eq":["id",%d]}' % downtime_id)
    columns = get_columns_from_get_parameter_or_use_defaults(
        request.args, entity)
    with QueryTableCtx(ls_query, entity, query_filter, columns) as ls_ctx:
        data, ls_return_code = ls_ctx.query()
        with LivestatusActionCtx(data, ls_return_code) as task_ctx:
            if request.method == 'GET':
                return task_ctx.return_table()
            elif request.method == 'DELETE':
                return task_ctx.delete_downtime(ls_ctx)
コード例 #7
0
ファイル: lsapi.py プロジェクト: zwopir/lsapi
def g_downtime():
    entity = 'downtimes'
    columns = get_columns_from_get_parameter_or_use_defaults(
        request.args, entity)
    query_filter = get_filter_from_get_parameter(request.args)
    with QueryTableCtx(ls_query, entity, query_filter, columns) as ls_ctx:
        data, ls_return_code = ls_ctx.query()
        with LivestatusActionCtx(data, ls_return_code) as task_ctx:
            if request.method == 'GET':
                return task_ctx.return_table()
            elif request.method == 'DELETE':
                if query_filter:
                    return task_ctx.delete_downtime(ls_ctx)
                else:
                    raise BadRequestException(
                        "no filter given, not deleting all downtimes",
                        status_code=400)