From 019468dad8330f183e06a9d030701b3906bfc73e Mon Sep 17 00:00:00 2001 From: Leonid Mirsky Date: Tue, 5 Aug 2014 11:40:08 +0300 Subject: [PATCH] Adding units specification to mem_limit variable --- README.md | 2 ++ docker/client.py | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/README.md b/README.md index 94e424a2..3c52a5fe 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,8 @@ more information on how to create port bindings and volume mappings. The `environment` variable accepts a dictionary or a list of strings in the following format `["PASSWORD=xxx"]` or `{"PASSWORD": "xxx"}`. +The `mem_limit` variable accepts float values (which represent the memory limit of the created container in bytes) or a string with a units identification char ('1000k', 128m', '1g'). + `volumes_from` and `dns` arguments raise TypeError exception if they are used against v1.10 of docker remote API. Those arguments should be passed to `start()` instead. diff --git a/docker/client.py b/docker/client.py index a7f1f498..22aedf54 100644 --- a/docker/client.py +++ b/docker/client.py @@ -111,6 +111,14 @@ class Client(requests.Session): '{0}={1}'.format(k, v) for k, v in environment.items() ] + if isinstance(mem_limit, six.string_types): + units = {'k': 1024, + 'm': 1024*1024, + 'g': 1024*1024*1024} + suffix = mem_limit[-1].lower() + if suffix in units.keys(): + mem_limit = int(mem_limit[:-1]) * units[suffix] + if isinstance(ports, list): exposed_ports = {} for port_definition in ports: