def test_size_calc_convert(self): self.assertEqual(10485760, SizeCalc.auto_convert("10M", SizeCalc.UNIT_B)) self.assertEqual(10485760, SizeCalc.auto_convert("10MiB", SizeCalc.UNIT_B)) self.assertEqual(10000000, SizeCalc.auto_convert("10MB", SizeCalc.UNIT_B)) self.assertEqual(3221225472, SizeCalc.auto_convert("3Gib", SizeCalc.UNIT_B)) self.assertEqual(3145728, SizeCalc.auto_convert("3Gib", SizeCalc.UNIT_KiB))
def parse_opts(cls, new_args, object_name): modify = {} deletes = [] for arg in new_args: value = new_args[arg] is_unset = arg.startswith(cls.unsetprefix) prop_name = arg[len(cls.unsetprefix) + 1:] if is_unset else arg option = cls.drbd_options[object_name][prop_name] key = option['key'] if is_unset: deletes.append(key) else: if 'bytes' in option and option['unit'] == 'bytes': value = SizeCalc.auto_convert(value, SizeCalc.UNIT_B) if option['min'] < value < option['max']: value = str(value) else: raise argparse.ArgumentTypeError( prop_name + " value {v} is out of range [{mi}-{ma}]".format( v=value, mi=option['min'], ma=option['max'])) modify[key] = str(value) return modify, deletes
def parse_opts(cls, new_args, object_name): modify = {} deletes = [] for arg in new_args: is_unset = arg.startswith(cls.unsetprefix) value = new_args[arg] prop_name = arg[len(cls.unsetprefix) + 1:] if is_unset else arg if prop_name.startswith( "drbd-") and prop_name[5:] in cls.CLASH_OPTIONS: prop_name = prop_name[5:] option = cls.drbd_options[object_name][prop_name] key = option['key'] if is_unset: deletes.append(key) else: if DrbdOptions._is_byte_unit(option): unit = SizeCalc.UNIT_KiB if option.get( 'unit_prefix') == 'k' else SizeCalc.UNIT_B value = SizeCalc.auto_convert(value, unit) if option['min'] <= value <= option['max']: value = str(value) else: raise ArgumentError( prop_name + " value {v}{u} is out of range [{mi}-{ma}]".format( v=value, u=SizeCalc.unit_to_str(unit), mi=str(option['min']) + option.get('unit_prefix', ''), ma=str(option['max']) + option.get('unit_prefix', ''))) modify[key] = str(value) return modify, deletes