Merge branch '3765-sysctl-support' of https://github.com/jtakkala/compose into jtakkala-3765-sysctl-support

Signed-off-by: Joffrey F <joffrey@docker.com>
This commit is contained in:
Joffrey F 2016-12-19 20:33:54 -08:00
commit 82230071d5
3 changed files with 22 additions and 10 deletions

View File

@ -86,6 +86,7 @@ DOCKER_CONFIG_KEYS = [
'shm_size', 'shm_size',
'stdin_open', 'stdin_open',
'stop_signal', 'stop_signal',
'sysctls',
'tty', 'tty',
'user', 'user',
'userns_mode', 'userns_mode',
@ -645,19 +646,24 @@ def process_service(service_config):
if 'extra_hosts' in service_dict: if 'extra_hosts' in service_dict:
service_dict['extra_hosts'] = parse_extra_hosts(service_dict['extra_hosts']) service_dict['extra_hosts'] = parse_extra_hosts(service_dict['extra_hosts'])
if 'healthcheck' in service_dict: if 'sysctls' in service_dict:
service_dict['healthcheck'] = process_healthcheck( service_dict['sysctls'] = build_string_dict(parse_sysctls(service_dict['sysctls']))
service_dict['healthcheck'], service_config.name)
for field in ['dns', 'dns_search', 'tmpfs']: for field in ['dns', 'dns_search', 'tmpfs']:
if field in service_dict: if field in service_dict:
service_dict[field] = to_list(service_dict[field]) service_dict[field] = to_list(service_dict[field])
service_dict = process_healthcheck(service_dict, service_config.name)
return service_dict return service_dict
def process_healthcheck(raw, service_name): def process_healthcheck(service_dict, service_name):
if 'healthcheck' not in service_dict:
return service_dict
hc = {} hc = {}
raw = service_dict['healthcheck']
if raw.get('disable'): if raw.get('disable'):
if len(raw) > 1: if len(raw) > 1:
@ -676,7 +682,8 @@ def process_healthcheck(raw, service_name):
if 'retries' in raw: if 'retries' in raw:
hc['retries'] = raw['retries'] hc['retries'] = raw['retries']
return hc service_dict['healthcheck'] = hc
return service_dict
def finalize_service(service_config, service_names, version, environment): def finalize_service(service_config, service_names, version, environment):
@ -800,6 +807,7 @@ def merge_service_dicts(base, override, version):
md.merge_mapping('labels', parse_labels) md.merge_mapping('labels', parse_labels)
md.merge_mapping('ulimits', parse_ulimits) md.merge_mapping('ulimits', parse_ulimits)
md.merge_mapping('networks', parse_networks) md.merge_mapping('networks', parse_networks)
md.merge_mapping('sysctls', parse_sysctls)
md.merge_sequence('links', ServiceLink.parse) md.merge_sequence('links', ServiceLink.parse)
for field in ['volumes', 'devices']: for field in ['volumes', 'devices']:
@ -874,11 +882,11 @@ def merge_environment(base, override):
return env return env
def split_label(label): def split_kv(kvpair):
if '=' in label: if '=' in kvpair:
return label.split('=', 1) return kvpair.split('=', 1)
else: else:
return label, '' return kvpair, ''
def parse_dict_or_list(split_func, type_name, arguments): def parse_dict_or_list(split_func, type_name, arguments):
@ -899,8 +907,9 @@ def parse_dict_or_list(split_func, type_name, arguments):
parse_build_arguments = functools.partial(parse_dict_or_list, split_env, 'build arguments') parse_build_arguments = functools.partial(parse_dict_or_list, split_env, 'build arguments')
parse_environment = functools.partial(parse_dict_or_list, split_env, 'environment') parse_environment = functools.partial(parse_dict_or_list, split_env, 'environment')
parse_labels = functools.partial(parse_dict_or_list, split_label, 'labels') parse_labels = functools.partial(parse_dict_or_list, split_kv, 'labels')
parse_networks = functools.partial(parse_dict_or_list, lambda k: (k, None), 'networks') parse_networks = functools.partial(parse_dict_or_list, lambda k: (k, None), 'networks')
parse_sysctls = functools.partial(parse_dict_or_list, split_kv, 'sysctls')
def parse_ulimits(ulimits): def parse_ulimits(ulimits):

View File

@ -193,6 +193,7 @@
"restart": {"type": "string"}, "restart": {"type": "string"},
"security_opt": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}, "security_opt": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
"shm_size": {"type": ["number", "string"]}, "shm_size": {"type": ["number", "string"]},
"sysctls": {"$ref": "#/definitions/list_or_dict"},
"stdin_open": {"type": "boolean"}, "stdin_open": {"type": "boolean"},
"stop_signal": {"type": "string"}, "stop_signal": {"type": "string"},
"tmpfs": {"$ref": "#/definitions/string_or_list"}, "tmpfs": {"$ref": "#/definitions/string_or_list"},

View File

@ -64,6 +64,7 @@ DOCKER_START_KEYS = [
'restart', 'restart',
'security_opt', 'security_opt',
'shm_size', 'shm_size',
'sysctls',
'userns_mode', 'userns_mode',
'volumes_from', 'volumes_from',
] ]
@ -718,6 +719,7 @@ class Service(object):
cgroup_parent=options.get('cgroup_parent'), cgroup_parent=options.get('cgroup_parent'),
cpu_quota=options.get('cpu_quota'), cpu_quota=options.get('cpu_quota'),
shm_size=options.get('shm_size'), shm_size=options.get('shm_size'),
sysctls=options.get('sysctls'),
tmpfs=options.get('tmpfs'), tmpfs=options.get('tmpfs'),
oom_score_adj=options.get('oom_score_adj'), oom_score_adj=options.get('oom_score_adj'),
mem_swappiness=options.get('mem_swappiness'), mem_swappiness=options.get('mem_swappiness'),