summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoffrey F <joffrey@docker.com>2017-09-27 18:24:46 -0700
committerJoffrey F <f.joffrey@gmail.com>2017-10-17 17:20:00 -0700
commit21d597c2b4b2c2293bf02a22db6664ae0af7bc62 (patch)
tree05312bf654bafb2d74cd4708b97d485a48147d82
parent78fe655dbce206e3e6e64ce3e62af94267782487 (diff)
Avoid import ConfigurationError inside compose.utils (circular import)
Signed-off-by: Joffrey F <joffrey@docker.com>
-rw-r--r--compose/config/config.py5
-rw-r--r--compose/utils.py3
-rw-r--r--tests/unit/utils_test.py8
3 files changed, 13 insertions, 3 deletions
diff --git a/compose/config/config.py b/compose/config/config.py
index 0fddfd3a..b90ab030 100644
--- a/compose/config/config.py
+++ b/compose/config/config.py
@@ -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']:
diff --git a/compose/utils.py b/compose/utils.py
index 1ede4d37..197ae6eb 100644
--- a/compose/utils.py
+++ b/compose/utils.py
@@ -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
diff --git a/tests/unit/utils_test.py b/tests/unit/utils_test.py
index 85231957..84becb97 100644
--- a/tests/unit/utils_test.py
+++ b/tests/unit/utils_test.py
@@ -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