Ejemplo n.º 1
0
def api_vm_update(condiction_dict):
    """
    编辑虚拟机
    condiction_dict =
    {
        'action': [
            {
                'id': 1,
                'name': xxx,
                ...
            },
            {
                'id': 2,
                ...
            }
        ]
    }
    每个object中id是必填项
    """
    query_list = condiction_dict['action']
    para_list = []
    for item in query_list:
        q_dict, error = schema.VmSchema().load(item)
        if error != {}:
            raise UpdateParameterError('parament error: {}'.format(error))
        para_list.append(q_dict)
    with sql_engine.session_scope() as session:
        for para in para_list:
            session.query(
                models.Vm).filter(models.Vm.id == para['id']).update(para)
Ejemplo n.º 2
0
def api_idc_add(condiction_dict):
    """
    新增机房
    """
    query_list = condiction_dict['action']
    q_list, error = schema.IdcSchema(many=True,
                                     exclude=('id', )).load(query_list)
    if error != {}:
        raise InsertParameterError('参数错误: {}'.format(error))
    ci_items = [models.Idc(**item) for item in q_list]
    with sql_engine.session_scope() as session:
        session.add_all(ci_items)
Ejemplo n.º 3
0
def api_idc_del(condiction_dict):
    """
    删除机房
    参数是一个id列表组成的list
    """
    query_list = condiction_dict['action']
    if not isinstance(query_list, list):
        raise DeleteParameterError('参数错误,必须为int组成的列表')
    if not query_schema.NormalVerify.intlist(query_list):
        raise DeleteParameterError('参数错误,必须为int组成的列表')
    with sql_engine.session_scope() as session:
        session.query(models.Idc).filter(
            models.Idc.id.in_(query_list)).delete(synchronize_session=False)
Ejemplo n.º 4
0
def api_vm_add(condiction_dict):
    """
    新增虚拟机
    """
    query_list = condiction_dict['action']
    q_list, error = schema.VmSchema(many=True,
                                    exclude=('id', )).load(query_list)
    if error != {}:
        raise InsertParameterError('参数错误: {}'.format(error))
    ci_items = [models.Vm(**item) for item in q_list]
    try:
        with sql_engine.session_scope() as session:
            session.add_all(ci_items)
    except sqlalchemy.exc.IntegrityError as e:
        _log.warning('server insert failed: %s', str(e.args))
        raise InsertParameterError("Insert failed. Maybe you didn't "
                                   "choose an valid foreign key id")
Ejemplo n.º 5
0
def api_idc_list(condiction_dict):
    """
    获取机房列表
    """
    condiction_dict, error = query_schema.BaseParameterSchema().load(
        condiction_dict)
    query_dict = condiction_dict['action']
    q_dict, error = query_schema.PageQueryBaseSchema().load(query_dict)
    if error != {}:
        raise QueryParameterError('参数错误: {}'.format(error))

    with sql_engine.session_scope() as session:
        q_res = session.query(models.Idc)
        total = q_res.count()  # 总计
        q_res = query_sort(q_res, q_dict)
        q_res = pagination(q_res, q_dict)

        ci_schema = schema.IdcSchema(many=True, exclude=('rack', ))
        res, error = ci_schema.dump(q_res)

    data = {'total': total, 'rows': res}

    return data