diff options
author | Anca Iordache <aiordache@users.noreply.github.com> | 2020-08-10 10:14:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-10 10:14:43 +0200 |
commit | b23eb2deab5695f0749902fb127d91f5ca16f051 (patch) | |
tree | f4401a7e7072c51bc3d612e547f2096c2f888408 /compose/config | |
parent | d4f55a721dfead3cee08d6406388b5e89de3e99c (diff) | |
parent | a8511e0884054ceed9fd022ef675d90801be8168 (diff) |
Merge pull request #7417 from EricHripko/ipc-service
[Compose Spec] Implement service mode for ipc
Diffstat (limited to 'compose/config')
-rw-r--r-- | compose/config/config.py | 2 | ||||
-rw-r--r-- | compose/config/sort_services.py | 1 | ||||
-rw-r--r-- | compose/config/validation.py | 15 |
3 files changed, 18 insertions, 0 deletions
diff --git a/compose/config/config.py b/compose/config/config.py index c5791e15..90baeeaa 100644 --- a/compose/config/config.py +++ b/compose/config/config.py @@ -47,6 +47,7 @@ from .validation import validate_credential_spec from .validation import validate_depends_on from .validation import validate_extends_file_path from .validation import validate_healthcheck +from .validation import validate_ipc_mode from .validation import validate_links from .validation import validate_network_mode from .validation import validate_pid_mode @@ -734,6 +735,7 @@ def validate_service(service_config, service_names, config_file): validate_cpu(service_config) validate_ulimits(service_config) + validate_ipc_mode(service_config, service_names) validate_network_mode(service_config, service_names) validate_pid_mode(service_config, service_names) validate_depends_on(service_config, service_names) diff --git a/compose/config/sort_services.py b/compose/config/sort_services.py index a600139b..65953891 100644 --- a/compose/config/sort_services.py +++ b/compose/config/sort_services.py @@ -36,6 +36,7 @@ def get_service_dependents(service_dict, services): name in get_service_names_from_volumes_from(service.get('volumes_from', [])) or name == get_service_name_from_network_mode(service.get('network_mode')) or name == get_service_name_from_network_mode(service.get('pid')) or + name == get_service_name_from_network_mode(service.get('ipc')) or name in service.get('depends_on', [])) ] diff --git a/compose/config/validation.py b/compose/config/validation.py index 942c4e03..61a3370d 100644 --- a/compose/config/validation.py +++ b/compose/config/validation.py @@ -218,6 +218,21 @@ def validate_pid_mode(service_config, service_names): ) +def validate_ipc_mode(service_config, service_names): + ipc_mode = service_config.config.get('ipc') + if not ipc_mode: + return + + dependency = get_service_name_from_network_mode(ipc_mode) + if not dependency: + return + if dependency not in service_names: + raise ConfigurationError( + "Service '{s.name}' uses the IPC namespace of service '{dep}' which " + "is undefined.".format(s=service_config, dep=dependency) + ) + + def validate_links(service_config, service_names): for link in service_config.config.get('links', []): if link.split(':')[0] not in service_names: |