Merge "Fix _parse_block_device to return (str, int)"
This commit is contained in:
commit
19ff534498
|
@ -6,3 +6,4 @@ bin
|
|||
*.pyc
|
||||
.unit-state.db
|
||||
.stestr
|
||||
__pycache__
|
||||
|
|
|
@ -61,13 +61,19 @@ def bytes_from_string(value):
|
|||
if isinstance(value, six.string_types):
|
||||
value = six.text_type(value)
|
||||
else:
|
||||
msg = "Unable to interpret non-string value '%s' as boolean" % (value)
|
||||
msg = "Unable to interpret non-string value '%s' as bytes" % (value)
|
||||
raise ValueError(msg)
|
||||
matches = re.match("([0-9]+)([a-zA-Z]+)", value)
|
||||
if not matches:
|
||||
msg = "Unable to interpret string value '%s' as bytes" % (value)
|
||||
raise ValueError(msg)
|
||||
return int(matches.group(1)) * (1024 ** BYTE_POWER[matches.group(2)])
|
||||
if matches:
|
||||
size = int(matches.group(1)) * (1024 ** BYTE_POWER[matches.group(2)])
|
||||
else:
|
||||
# Assume that value passed in is bytes
|
||||
try:
|
||||
size = int(value)
|
||||
except ValueError:
|
||||
msg = "Unable to interpret string value '%s' as bytes" % (value)
|
||||
raise ValueError(msg)
|
||||
return size
|
||||
|
||||
|
||||
class BasicStringComparator(object):
|
||||
|
|
|
@ -25,6 +25,10 @@ from charmhelpers.contrib.python.packages import (
|
|||
pip_install,
|
||||
)
|
||||
|
||||
from charmhelpers.core.strutils import (
|
||||
bytes_from_string
|
||||
)
|
||||
|
||||
from charmhelpers.core.hookenv import (
|
||||
charm_dir,
|
||||
config,
|
||||
|
@ -518,7 +522,7 @@ def configure_lvm_storage(block_devices, volume_group, overwrite=False,
|
|||
if size == 0 and is_block_device(block_device):
|
||||
devices.append(block_device)
|
||||
elif size > 0:
|
||||
devices.append(ensure_loopback_device(block_device, size))
|
||||
devices.append(ensure_loopback_device(block_device, str(size)))
|
||||
|
||||
# NOTE(jamespage)
|
||||
# might need todo an initial one-time scrub on install if need be
|
||||
|
@ -619,7 +623,7 @@ def _parse_block_device(block_device):
|
|||
else:
|
||||
bdev = block_device
|
||||
size = DEFAULT_LOOPBACK_SIZE
|
||||
return (bdev, size)
|
||||
return (bdev, bytes_from_string(str(size)))
|
||||
else:
|
||||
return ('/dev/{}'.format(block_device), 0)
|
||||
|
||||
|
|
|
@ -61,13 +61,19 @@ def bytes_from_string(value):
|
|||
if isinstance(value, six.string_types):
|
||||
value = six.text_type(value)
|
||||
else:
|
||||
msg = "Unable to interpret non-string value '%s' as boolean" % (value)
|
||||
msg = "Unable to interpret non-string value '%s' as bytes" % (value)
|
||||
raise ValueError(msg)
|
||||
matches = re.match("([0-9]+)([a-zA-Z]+)", value)
|
||||
if not matches:
|
||||
msg = "Unable to interpret string value '%s' as bytes" % (value)
|
||||
raise ValueError(msg)
|
||||
return int(matches.group(1)) * (1024 ** BYTE_POWER[matches.group(2)])
|
||||
if matches:
|
||||
size = int(matches.group(1)) * (1024 ** BYTE_POWER[matches.group(2)])
|
||||
else:
|
||||
# Assume that value passed in is bytes
|
||||
try:
|
||||
size = int(value)
|
||||
except ValueError:
|
||||
msg = "Unable to interpret string value '%s' as bytes" % (value)
|
||||
raise ValueError(msg)
|
||||
return size
|
||||
|
||||
|
||||
class BasicStringComparator(object):
|
||||
|
|
|
@ -426,6 +426,7 @@ class TestCinderUtils(CharmTestCase):
|
|||
clean_storage, ensure_non_existent):
|
||||
devices = ['/dev/fakevbd', '/dev/fakevdc']
|
||||
self.is_lvm_physical_volume.return_value = False
|
||||
self.ensure_loopback_device.side_effect = lambda x, y: x
|
||||
cinder_utils.configure_lvm_storage(devices, 'test', True, True)
|
||||
clean_storage.assert_has_calls(
|
||||
[call('/dev/fakevbd'),
|
||||
|
@ -450,6 +451,7 @@ class TestCinderUtils(CharmTestCase):
|
|||
devices = ['/dev/fakevbd', '/dev/fakevdc']
|
||||
self.is_lvm_physical_volume.return_value = False
|
||||
has_part.return_value = False
|
||||
self.ensure_loopback_device.side_effect = lambda x, y: x
|
||||
cinder_utils.configure_lvm_storage(devices, 'test', False, True)
|
||||
clean_storage.assert_has_calls(
|
||||
[call('/dev/fakevbd'),
|
||||
|
@ -517,6 +519,7 @@ class TestCinderUtils(CharmTestCase):
|
|||
lvm_exists.return_value = False
|
||||
self.is_lvm_physical_volume.side_effect = pv_lookup
|
||||
self.list_lvm_volume_group.side_effect = vg_lookup
|
||||
self.ensure_loopback_device.side_effect = lambda x, y: x
|
||||
cinder_utils.configure_lvm_storage(devices, 'test', True, True)
|
||||
clean_storage.assert_has_calls(
|
||||
[call('/dev/fakevdc')]
|
||||
|
@ -552,6 +555,7 @@ class TestCinderUtils(CharmTestCase):
|
|||
self.is_lvm_physical_volume.side_effect = pv_lookup
|
||||
self.list_lvm_volume_group.side_effect = vg_lookup
|
||||
lvm_exists.return_value = False
|
||||
self.ensure_loopback_device.side_effect = lambda x, y: x
|
||||
cinder_utils.configure_lvm_storage(devices, 'test', True, True)
|
||||
clean_storage.assert_called_with('/dev/fakevdc')
|
||||
self.create_lvm_physical_volume.assert_called_with('/dev/fakevdc')
|
||||
|
@ -582,6 +586,7 @@ class TestCinderUtils(CharmTestCase):
|
|||
devices = ['/dev/fakevbd', '/dev/fakevdc']
|
||||
self.is_lvm_physical_volume.side_effect = pv_lookup
|
||||
self.list_lvm_volume_group.side_effect = vg_lookup
|
||||
self.ensure_loopback_device.side_effect = lambda x, y: x
|
||||
cinder_utils.configure_lvm_storage(devices, 'test', False, False)
|
||||
self.assertFalse(clean_storage.called)
|
||||
self.assertFalse(self.create_lvm_physical_volume.called)
|
||||
|
|
Loading…
Reference in New Issue