Skip to content

Commit

Permalink
Add sysctl option support
Browse files Browse the repository at this point in the history
Refactored split_label() to split_kv() so that it can be used for other
functions such as sysctls.
  • Loading branch information
jtakkala committed Jul 29, 2016
1 parent dec2c83 commit 87ea3c4
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 6 deletions.
15 changes: 9 additions & 6 deletions compose/config/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@
'shm_size',
'stdin_open',
'stop_signal',
'sysctls',
'tty',
'user',
'volume_driver',
Expand Down Expand Up @@ -743,14 +744,15 @@ def merge_service_dicts(base, override, version):
md.merge_mapping('labels', parse_labels)
md.merge_mapping('ulimits', parse_ulimits)
md.merge_mapping('networks', parse_networks)
md.merge_mapping('sysctls', parse_sysctls)
md.merge_sequence('links', ServiceLink.parse)

for field in ['volumes', 'devices']:
md.merge_field(field, merge_path_mappings)

for field in [
'ports', 'cap_add', 'cap_drop', 'expose', 'external_links',
'security_opt', 'volumes_from', 'depends_on',
'security_opt', 'sysctls', 'volumes_from', 'depends_on',
]:
md.merge_field(field, merge_unique_items_lists, default=[])

Expand Down Expand Up @@ -805,11 +807,11 @@ def merge_environment(base, override):
return env


def split_label(label):
if '=' in label:
return label.split('=', 1)
def split_kv(kvpair):
if '=' in kvpair:
return kvpair.split('=', 1)
else:
return label, ''
return kvpair, ''


def parse_dict_or_list(split_func, type_name, arguments):
Expand All @@ -830,8 +832,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_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_sysctls = functools.partial(parse_dict_or_list, split_kv, 'sysctls')


def parse_ulimits(ulimits):
Expand Down
1 change: 1 addition & 0 deletions compose/config/config_schema_v1.json
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@
"restart": {"type": "string"},
"security_opt": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
"shm_size": {"type": ["number", "string"]},
"sysctls": {"$ref": "#/definitions/list_or_dict"},
"stdin_open": {"type": "boolean"},
"stop_signal": {"type": "string"},
"tty": {"type": "boolean"},
Expand Down
1 change: 1 addition & 0 deletions compose/config/config_schema_v2.0.json
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,7 @@
"restart": {"type": "string"},
"security_opt": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
"shm_size": {"type": ["number", "string"]},
"sysctls": {"$ref": "#/definitions/list_or_dict"},
"stdin_open": {"type": "boolean"},
"stop_signal": {"type": "string"},
"tmpfs": {"$ref": "#/definitions/string_or_list"},
Expand Down
2 changes: 2 additions & 0 deletions compose/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
'restart',
'security_opt',
'shm_size',
'sysctls',
'volumes_from',
]

Expand Down Expand Up @@ -703,6 +704,7 @@ def _get_container_host_config(self, override_options, one_off=False):
cgroup_parent=options.get('cgroup_parent'),
cpu_quota=options.get('cpu_quota'),
shm_size=options.get('shm_size'),
sysctls=options.get('sysctls'),
tmpfs=options.get('tmpfs'),
oom_score_adj=options.get('oom_score_adj')
)
Expand Down

0 comments on commit 87ea3c4

Please sign in to comment.