def _validate_size(size_str, roundup=False): import capacity from capacity import byte if size_str == '0' or size_str is None: return 0 try: size = capacity.from_string(size_str) except ValueError: log_n_raise(logger, "{} is an invalid capacity ! Please try one of the following:\n".format(size_str) + "<number> KB, KiB, MB, MiB, GB, GiB, TB, TiB... ", level=WARNING) if size == capacity.Capacity(0): return 0 if roundup: if (size / byte) / 512.0 != int((size / byte) / 512.0): size = ((int((size / byte) / 512) + 1) * 512) * byte return size
def from_string(capacity_string): import capacity try: return capacity.from_string(capacity_string) except ValueError: # \d+B return int(capacity_string[:-1])
def from_parted_non_machine_parsable_line(cls, disk_device_path, line, column_indexes): from capacity import from_string column_indexes.append(1024) items = [line[column_indexes[index]:column_indexes[index + 1]] for index in range(len(column_indexes) - 1)] number, start, end, size, filesystem, name, flags = [item.strip() for item in items] return cls(disk_device_path, number, name, from_string(size), filesystem)
def from_parted_machine_parsable_line(cls, disk_device_path, line): from capacity import from_string number, start, end, size, filesystem, name, flags = line.strip(';').split(':') return cls(disk_device_path, number, name, from_string(size), filesystem)
def test_from_string(string_and_value): string, value = string_and_value assert from_string(string) == value
def assert_value_error(s): with pytest.raises(ValueError): from_string(s)