def search(): """@params: q: query statement fl: filter by column count: the number of ci ret_key: id, name, alias facet: statistic wt: result format """ page = get_page(request.values.get("page", 1)) count = get_per_page(request.values.get("count")) query = request.values.get('q', "") fl = request.values.get('fl', "").split(",") ret_key = request.values.get('ret_key', "name") if ret_key not in ('name', 'alias', 'id'): ret_key = 'name' facet = request.values.get("facet", "").split(",") wt = request.values.get('wt', 'json') fl = filter(lambda x: x != "", fl) facet = filter(lambda x: x != "", facet) sort = request.values.get("sort") start = time.time() s = Search(query, fl, facet, page, ret_key, count, sort) try: response, counter, total, page, numfound, facet = s.search() except SearchError, e: return abort(400, str(e))
def get_second_cis_by_first_ci(first_ci=None): page = get_page(request.values.get("page", 1)) count = get_per_page(request.values.get("count")) relation_type = request.values.get("relation_type", "contain") manager = CIRelationManager() numfound, total, second_cis = manager.get_second_cis( first_ci, page=page, per_page=count, relation_type=relation_type) return jsonify(numfound=numfound, total=total, page=page, second_cis=second_cis)
def get_heartbeat(): page = get_page(request.values.get("page", 1)) ci_type = request.values.get("ci_type", "").strip() try: ci_type = CITypeCache.get(ci_type).type_id except: return jsonify(numfound=0, result=[]) agent_status = request.values.get("agent_status", None) if agent_status: agent_status = int(agent_status) numfound, result = CIManager().get_heartbeat(page, ci_type, agent_status=agent_status) return jsonify(numfound=numfound, result=result)
def search_records(): page = get_page(request.values.get("page", 1)) count = get_per_page(request.values.get("count")) isp = request.values.get("isp", "") record_type = request.args.get("record_type", "") record = request.args.get("record", "") record_value = request.args.get("record_value", "") comment = request.args.get("comment", "") args = { "isp": isp, "record_type": record_type, "record": record, "record_value": record_value, "comment": comment, } manager = DnsRecordManager() numfound, page, res = manager.search_records(args, page, count) return jsonify(numfound=numfound, page=page, records=res)
def get_cis_by_type(type_id=None): fields = request.args.get("fields", "").strip().split(",") fields = filter(lambda x: x != "", fields) ret_key = request.args.get("ret_key", "name") if ret_key not in ('name', 'alias', 'id'): ret_key = 'name' page = get_page(request.values.get("page", 1)) count = get_per_page(request.values.get("count")) manager = CIManager() res = manager.get_cis_by_type(type_id, ret_key=ret_key, fields=fields, page=page, per_page=count) return jsonify(type_id=type_id, numfound=res[0], total=len(res[2]), page=res[1], cis=res[2])
def get_record(): page = get_page(request.values.get("page", 1)) _start = request.values.get("start") _end = request.values.get("end") username = request.values.get("username", "") per_page_cnt = current_app.config.get("DEFAULT_PAGE_COUNT") start, end = None, None if _start: try: start = datetime.datetime.strptime(_start, '%Y-%m-%d %H:%M:%S') except ValueError: abort(400, 'incorrect start date time') if _end: try: end = datetime.datetime.strptime(_end, '%Y-%m-%d %H:%M:%S') except ValueError: abort(400, 'incorrect end date time') records = db.session.query(OperationRecord) numfound = db.session.query(db.func.count(OperationRecord.record_id)) if start: records = records.filter(OperationRecord.timestamp >= start) numfound = numfound.filter(OperationRecord.timestamp >= start) if end: records = records.filter(OperationRecord.timestamp <= end) numfound = records.filter(OperationRecord.timestamp <= end) if username: user = UserCache.get(username) if user: records = records.filter(OperationRecord.uid == user.uid) else: return jsonify(numfound=0, records=[], page=1, total=0, start=_start, end=_end, username=username) records = records.order_by(-OperationRecord.record_id).offset( per_page_cnt * (page - 1)).limit(per_page_cnt).all() total = len(records) numfound = numfound.first()[0] res = [] for record in records: _res = row2dict(record) _res["user"] = UserCache.get(_res.get("uid")).nickname \ if UserCache.get(_res.get("uid")).nickname \ else UserCache.get(_res.get("uid")).username attr_history = db.session.query(CIAttributeHistory.attr_id).filter( CIAttributeHistory.record_id == _res.get("record_id")).all() _res["attr_history"] = [ CIAttributeCache.get(h.attr_id).attr_alias for h in attr_history ] rel_history = db.session.query(CIRelationHistory.operate_type).filter( CIRelationHistory.record_id == _res.get("record_id")).all() rel_statis = {} for rel in rel_history: if rel.operate_type not in rel_statis: rel_statis[rel.operate_type] = 1 else: rel_statis[rel.res.operate_type] += 1 _res["rel_history"] = rel_statis res.append(_res) return jsonify(numfound=numfound, records=res, page=page, total=total, start=_start, end=_end, username=username)