Example #1
0
File: vm.py Project: bobff/ev-cloud
def op(args):
    '''虚拟机操作'''
    api = VmAPI()
    vm = api.get_vm_by_uuid(args['uuid'])
    if not vm:
        return {'res': False, 'err': ERR_VM_UUID}
    if not vm.can_operate_by(args['req_user']):
        return {'res': False, 'err': ERR_AUTH_PERM}

    if args['op'] == 'delete':
        res = api.delete_vm(args['uuid'])
    elif args['op'] == 'reset':
        res = api.reset_vm(args['uuid'])
    else:   
        #虚拟机操作类型。 key,操作代码; value,VM对象中对应处理函数名称
        op_list = {
            'start': 'start', 
            'reboot': 'reboot', 
            'shutdown': 'shutdown', 
            'poweroff': 'poweroff'}
        
        if args['op'] in op_list:
            try:
                res = getattr(vm, op_list[args['op']]).__call__()
            except Error as e:
                return {'res': False, 'err': e.err}
            except Exception as e:
                raise e
                return {'res': False, 'err': ERR_VM_OP}
        else:
            return {'res': False, 'err': ERR_VM_NO_OP}
    if res:
        return {'res':res}
    return {'res': res, 'err': ERR_VM_OP}
Example #2
0
def op(args):
    '''虚拟机操作'''
    api = VmAPI()
    vm = api.get_vm_by_uuid(args['uuid'])
    if not vm:
        return {'res': False, 'err': ERR_VM_UUID}
    if not vm.can_operate_by(args['req_user']):
        return {'res': False, 'err': ERR_AUTH_PERM}

    if args['op'] == 'delete':
        res = api.delete_vm(args['uuid'])
    elif args['op'] == 'reset':
        res = api.reset_vm(args['uuid'])
    else:
        #虚拟机操作类型。 key,操作代码; value,VM对象中对应处理函数名称
        op_list = {
            'start': 'start',
            'reboot': 'reboot',
            'shutdown': 'shutdown',
            'poweroff': 'poweroff'
        }

        if args['op'] in op_list:
            try:
                res = getattr(vm, op_list[args['op']]).__call__()
            except Error as e:
                return {'res': False, 'err': e.err}
            except Exception as e:
                raise e
                return {'res': False, 'err': ERR_VM_OP}
        else:
            return {'res': False, 'err': ERR_VM_NO_OP}
    if res:
        return {'res': res}
    return {'res': res, 'err': ERR_VM_OP}
Example #3
0
def reset(args):
    #镜像重置
    api = VmAPI()
    vm = api.get_vm_by_uuid(args['uuid'])
    if not vm:
        return {'res': False, 'err': ERR_VM_UUID}
    if not vm.can_operate_by(args['req_user']):
        return {'res': False, 'err': ERR_AUTH_PERM}

    res = api.reset_vm(args['uuid'], args['image_id'])
    if res:
        return {'res': True}
    return {'res': False, 'err': ERR_VM_RESET}