diff options
author | Joffrey F <joffrey@docker.com> | 2017-09-27 18:24:46 -0700 |
---|---|---|
committer | Joffrey F <f.joffrey@gmail.com> | 2017-10-17 17:20:00 -0700 |
commit | 21d597c2b4b2c2293bf02a22db6664ae0af7bc62 (patch) | |
tree | 05312bf654bafb2d74cd4708b97d485a48147d82 | |
parent | 78fe655dbce206e3e6e64ce3e62af94267782487 (diff) |
Avoid import ConfigurationError inside compose.utils (circular import)
Signed-off-by: Joffrey F <joffrey@docker.com>
-rw-r--r-- | compose/config/config.py | 5 | ||||
-rw-r--r-- | compose/utils.py | 3 | ||||
-rw-r--r-- | tests/unit/utils_test.py | 8 |
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 |