forked from extern/podman-compose
FIXES #120: parse mem and cpu limits
This commit is contained in:
parent
6e3383de72
commit
3d6ca3c204
@ -57,6 +57,15 @@ def try_int(i, fallback=None):
|
|||||||
pass
|
pass
|
||||||
return fallback
|
return fallback
|
||||||
|
|
||||||
|
def try_float(i, fallback=None):
|
||||||
|
try:
|
||||||
|
return float(i)
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
except TypeError:
|
||||||
|
pass
|
||||||
|
return fallback
|
||||||
|
|
||||||
dir_re = re.compile("^[~/\.]")
|
dir_re = re.compile("^[~/\.]")
|
||||||
propagation_re = re.compile("^(?:z|Z|r?shared|r?slave|r?private)$")
|
propagation_re = re.compile("^(?:z|Z|r?shared|r?slave|r?private)$")
|
||||||
norm_re = re.compile('[^-_a-z0-9]')
|
norm_re = re.compile('[^-_a-z0-9]')
|
||||||
@ -504,6 +513,29 @@ def get_mount_args(compose, cnt, volume):
|
|||||||
args = mount_desc_to_mount_args(compose, volume, srv_name, cnt['name'])
|
args = mount_desc_to_mount_args(compose, volume, srv_name, cnt['name'])
|
||||||
return ['--mount', args]
|
return ['--mount', args]
|
||||||
|
|
||||||
|
def container_to_res_args(cnt, podman_args):
|
||||||
|
# v2 < https://docs.docker.com/compose/compose-file/compose-file-v2/#cpu-and-other-resources
|
||||||
|
cpus_v2 = try_float(cnt.get('cpus', None), None)
|
||||||
|
mem_limit_v2 = cnt.get('mem_limit', None)
|
||||||
|
mem_res_v2 = cnt.get('mem_reservation', None)
|
||||||
|
# v3 < https://docs.docker.com/compose/compose-file/compose-file-v3/#resources
|
||||||
|
# spec < https://github.com/compose-spec/compose-spec/blob/master/deploy.md#resources
|
||||||
|
deploy = cnt.get('deploy', None) or {}
|
||||||
|
res = deploy.get('resources', None) or {}
|
||||||
|
limits = res.get('limits', None) or {}
|
||||||
|
cpus_limit_v3 = try_float(limits.get('cpus', None), None)
|
||||||
|
mem_limit_v3 = limits.get('memory', None)
|
||||||
|
reservations = res.get('reservations', None) or {}
|
||||||
|
#cpus_res_v3 = try_float(reservations.get('cpus', None), None)
|
||||||
|
mem_res_v3 = reservations.get('memory', None)
|
||||||
|
# add args
|
||||||
|
cpus = cpus_v3 or cpus_v2
|
||||||
|
podman_args.add('--cpus', str(cpus))
|
||||||
|
mem = mem_limit_v3 or mem_limit_v2
|
||||||
|
podman_args.add('-m', str(mem).lower())
|
||||||
|
mem_res = mem_res_v3 or mem_res_v2
|
||||||
|
podman_args.add('--memory-reservation', str(mem_res).lower())
|
||||||
|
|
||||||
def container_to_args(compose, cnt, detached=True):
|
def container_to_args(compose, cnt, detached=True):
|
||||||
# TODO: double check -e , --add-host, -v, --read-only
|
# TODO: double check -e , --add-host, -v, --read-only
|
||||||
dirname = compose.dirname
|
dirname = compose.dirname
|
||||||
@ -582,6 +614,7 @@ def container_to_args(compose, cnt, detached=True):
|
|||||||
if cnt.get('restart', None) is not None:
|
if cnt.get('restart', None) is not None:
|
||||||
podman_args.extend(['--restart', cnt['restart']])
|
podman_args.extend(['--restart', cnt['restart']])
|
||||||
container_to_ulimit_args(cnt, podman_args)
|
container_to_ulimit_args(cnt, podman_args)
|
||||||
|
container_to_res_args(cnt, podman_args)
|
||||||
# currently podman shipped by fedora does not package this
|
# currently podman shipped by fedora does not package this
|
||||||
if cnt.get('init', None):
|
if cnt.get('init', None):
|
||||||
podman_args.append('--init')
|
podman_args.append('--init')
|
||||||
|
Loading…
Reference in New Issue
Block a user