Avoid import ConfigurationError inside compose.utils (circular import)

Signed-off-by: Joffrey F <joffrey@docker.com>
This commit is contained in:
Joffrey F 2017-09-27 18:24:46 -07:00 committed by Joffrey F
parent 7f82a28572
commit 9430e5bf9d
3 changed files with 13 additions and 3 deletions
compose
tests/unit

View File

@ -762,7 +762,10 @@ def process_blkio_config(service_dict):
for field in ['device_read_bps', 'device_write_bps']:
if field in service_dict['blkio_config']:
for v in service_dict['blkio_config'].get(field, []):
v['rate'] = parse_bytes(v.get('rate', 0))
rate = v.get('rate', 0)
v['rate'] = parse_bytes(rate)
if v['rate'] is None:
raise ConfigurationError('Invalid format for bytes value: "{}"'.format(rate))
for field in ['device_read_iops', 'device_write_iops']:
if field in service_dict['blkio_config']:

View File

@ -12,7 +12,6 @@ import six
from docker.errors import DockerException
from docker.utils import parse_bytes as sdk_parse_bytes
from .config.errors import ConfigurationError
from .errors import StreamParseError
from .timeparse import MULTIPLIERS
from .timeparse import timeparse
@ -143,4 +142,4 @@ def parse_bytes(n):
try:
return sdk_parse_bytes(n)
except DockerException:
raise ConfigurationError('Invalid format for bytes value: {}'.format(n))
return None

View File

@ -60,3 +60,11 @@ class TestJsonStream(object):
{'three': 'four'},
{'x': 2}
]
class TestParseBytes(object):
def test_parse_bytes(self):
assert utils.parse_bytes('123kb') == 123 * 1024
assert utils.parse_bytes(123) == 123
assert utils.parse_bytes('foobar') is None
assert utils.parse_bytes('123') == 123