diff --git a/compose/config/config_schema_compose_spec.json b/compose/config/config_schema_compose_spec.json index 3b26ba825..8af7faa63 100644 --- a/compose/config/config_schema_compose_spec.json +++ b/compose/config/config_schema_compose_spec.json @@ -258,7 +258,7 @@ "patternProperties": {"^x-": {}} }, "mac_address": {"type": "string"}, - "mem_limit": {"type": ["number", "string"]}, + "mem_limit": {"type": "string"}, "mem_reservation": {"type": ["string", "integer"]}, "mem_swappiness": {"type": "integer"}, "memswap_limit": {"type": ["number", "string"]}, @@ -503,7 +503,7 @@ "limits": { "type": "object", "properties": { - "cpus": {"type": "string"}, + "cpus": {"type": "number", "minimum": 0}, "memory": {"type": "string"} }, "additionalProperties": false, @@ -512,7 +512,7 @@ "reservations": { "type": "object", "properties": { - "cpus": {"type": "string"}, + "cpus": {"type": "number", "minimum": 0}, "memory": {"type": "string"}, "generic_resources": {"$ref": "#/definitions/generic_resources"} }, @@ -633,6 +633,7 @@ "patternProperties": {"^x-": {}} }, "internal": {"type": "boolean"}, + "enable_ipv6": {"type": "boolean"}, "attachable": {"type": "boolean"}, "labels": {"$ref": "#/definitions/list_or_dict"} }, diff --git a/compose/config/interpolation.py b/compose/config/interpolation.py index 72cb484b1..832344e2c 100644 --- a/compose/config/interpolation.py +++ b/compose/config/interpolation.py @@ -241,6 +241,7 @@ class ConversionMap: service_path('healthcheck', 'disable'): to_boolean, service_path('deploy', 'labels', PATH_JOKER): to_str, service_path('deploy', 'replicas'): to_int, + service_path('deploy', 'resources', 'limits', "cpus"): to_float, service_path('deploy', 'update_config', 'parallelism'): to_int, service_path('deploy', 'update_config', 'max_failure_ratio'): to_float, service_path('deploy', 'rollback_config', 'parallelism'): to_int, diff --git a/requirements.txt b/requirements.txt index b99542861..28ecf8f6e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,10 +4,11 @@ certifi==2020.6.20 chardet==3.0.4 colorama==0.4.3; sys_platform == 'win32' distro==1.5.0 -docker==4.3.0 docker-pycreds==0.4.0 dockerpty==0.4.1 docopt==0.6.2 +# temporary fix for the mem_limit float parsing +git+git://github.com/docker/docker-py@2c522fb362247a692c0493f0b47a33988eb2f3e3#egg=docker idna==2.10 ipaddress==1.0.23 jsonschema==3.2.0 diff --git a/tests/acceptance/cli_test.py b/tests/acceptance/cli_test.py index 4dd935210..ced0a2733 100644 --- a/tests/acceptance/cli_test.py +++ b/tests/acceptance/cli_test.py @@ -525,11 +525,11 @@ services: }, 'resources': { 'limits': { - 'cpus': '0.05', + 'cpus': 0.05, 'memory': '50M', }, 'reservations': { - 'cpus': '0.01', + 'cpus': 0.01, 'memory': '20M', }, }, diff --git a/tests/fixtures/v3-full/docker-compose.yml b/tests/fixtures/v3-full/docker-compose.yml index 3a7ac25c9..0a5156582 100644 --- a/tests/fixtures/v3-full/docker-compose.yml +++ b/tests/fixtures/v3-full/docker-compose.yml @@ -14,10 +14,10 @@ services: max_failure_ratio: 0.3 resources: limits: - cpus: '0.05' + cpus: 0.05 memory: 50M reservations: - cpus: '0.01' + cpus: 0.01 memory: 20M restart_policy: condition: on-failure