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