Ejemplo n.º 1
0
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))
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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])
Ejemplo n.º 6
0
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)