def r_update(uuids): ret = dict() ret['state'] = ji.Common.exchange_state(20000) ret['data'] = list() args_rules = [Rules.UUIDS.value] if 'remark' in request.json: args_rules.append(Rules.REMARK.value) if 'iops' in request.json: args_rules.append(Rules.IOPS.value) if 'iops_rd' in request.json: args_rules.append(Rules.IOPS_RD.value) if 'iops_wr' in request.json: args_rules.append(Rules.IOPS_WR.value) if 'iops_max' in request.json: args_rules.append(Rules.IOPS_MAX.value) if 'iops_max_length' in request.json: args_rules.append(Rules.IOPS_MAX_LENGTH.value) if 'bps' in request.json: args_rules.append(Rules.BPS.value) if 'bps_rd' in request.json: args_rules.append(Rules.BPS_RD.value) if 'bps_wr' in request.json: args_rules.append(Rules.BPS_WR.value) if 'bps_max' in request.json: args_rules.append(Rules.BPS_MAX.value) if 'bps_max_length' in request.json: args_rules.append(Rules.BPS_MAX_LENGTH.value) if args_rules.__len__() < 2: return ret request.json['uuids'] = uuids need_update_quota = False need_update_quota_parameters = [ 'iops', 'iops_rd', 'iops_wr', 'iops_max', 'iops_max_length', 'bps', 'bps_rd', 'bps_wr', 'bps_max', 'bps_max_length' ] if filter(lambda p: p in request.json, need_update_quota_parameters).__len__() > 0: need_update_quota = True try: ji.Check.previewing(args_rules, request.json) disk = Disk() # 检测所指定的 UUDIs 磁盘都存在 for uuid in uuids.split(','): disk.uuid = uuid disk.get_by('uuid') for uuid in uuids.split(','): disk.uuid = uuid disk.get_by('uuid') disk.remark = request.json.get('remark', disk.remark) disk.iops = request.json.get('iops', disk.iops) disk.iops_rd = request.json.get('iops_rd', disk.iops_rd) disk.iops_wr = request.json.get('iops_wr', disk.iops_wr) disk.iops_max = request.json.get('iops_max', disk.iops_max) disk.iops_max_length = request.json.get('iops_max_length', disk.iops_max_length) disk.bps = request.json.get('bps', disk.bps) disk.bps_rd = request.json.get('bps_rd', disk.bps_rd) disk.bps_wr = request.json.get('bps_wr', disk.bps_wr) disk.bps_max = request.json.get('bps_max', disk.bps_max) disk.bps_max_length = request.json.get('bps_max_length', disk.bps_max_length) disk.update() disk.get() if disk.sequence >= 0 and need_update_quota: message = { '_object': 'disk', 'action': 'quota', 'uuid': disk.uuid, 'guest_uuid': disk.guest_uuid, 'node_id': disk.node_id, 'disks': [disk.__dict__] } Utils.emit_instruction(message=json.dumps(message)) ret['data'].append(disk.__dict__) return ret except ji.PreviewingError, e: return json.loads(e.message)
def r_update_quota(): config = Config() args_rules = [ ] if 'iops_base' in request.json: args_rules.append( Rules.IOPS_BASE.value, ) if 'iops_pre_unit' in request.json: args_rules.append( Rules.IOPS_PRE_UNIT.value, ) if 'iops_cap' in request.json: args_rules.append( Rules.IOPS_CAP.value, ) if 'iops_max' in request.json: args_rules.append( Rules.IOPS_MAX.value, ) if 'iops_max_length' in request.json: args_rules.append( Rules.IOPS_MAX_LENGTH.value, ) if 'bps_base' in request.json: args_rules.append( Rules.BPS_BASE.value, ) if 'bps_pre_unit' in request.json: args_rules.append( Rules.BPS_PRE_UNIT.value, ) if 'bps_cap' in request.json: args_rules.append( Rules.BPS_CAP.value, ) if 'bps_max' in request.json: args_rules.append( Rules.BPS_MAX.value, ) if 'bps_max_length' in request.json: args_rules.append( Rules.BPS_MAX_LENGTH.value, ) if 'influence_current_guest' in request.json: args_rules.append( Rules.INFLUENCE_CURRENT_GUEST.value, ) if args_rules.__len__() < 1: ret = dict() ret['state'] = ji.Common.exchange_state(20000) return ret try: config.id = 1 ji.Check.previewing(args_rules, request.json) config.get() config.iops_base = int(request.json.get('iops_base', config.iops_base)) config.iops_pre_unit = int(request.json.get('iops_pre_unit', config.iops_pre_unit)) config.iops_cap = int(request.json.get('iops_cap', config.iops_cap)) config.iops_max = int(request.json.get('iops_max', config.iops_max)) config.iops_max_length = int(request.json.get('iops_max_length', config.iops_max_length)) config.bps_base = int(request.json.get('bps_base', config.bps_base)) config.bps_pre_unit = int(request.json.get('bps_pre_unit', config.bps_pre_unit)) config.bps_cap = int(request.json.get('bps_cap', config.bps_cap)) config.bps_max = int(request.json.get('bps_max', config.bps_max)) config.bps_max_length = int(request.json.get('bps_max_length', config.bps_max_length)) if request.json.get('influence_current_guest', False): disks, _ = Disk.get_all() disk = Disk() for disk_info in disks: disk.id = disk_info['id'] disk.get() disk.quota(config=config) disk.update() if disk.sequence >= 0: message = { '_object': 'disk', 'action': 'quota', 'uuid': disk.uuid, 'guest_uuid': disk.guest_uuid, 'node_id': disk.node_id, 'disks': [disk.__dict__] } Utils.emit_instruction(message=json.dumps(message)) config.update() config.get() ret = dict() ret['state'] = ji.Common.exchange_state(20000) ret['data'] = config.__dict__ return ret except ji.PreviewingError, e: return json.loads(e.message)