Merge "Fix _parse_block_device to return (str, int)"

This commit is contained in:
Zuul 2017-11-21 12:02:46 +00:00 committed by Gerrit Code Review
commit 19ff534498
5 changed files with 34 additions and 12 deletions

1
.gitignore vendored
View File

@ -6,3 +6,4 @@ bin
*.pyc
.unit-state.db
.stestr
__pycache__

View File

@ -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):

View File

@ -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)

View File

@ -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):

View File

@ -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)