summaryrefslogtreecommitdiff
path: root/compose/config
diff options
context:
space:
mode:
authorAnca Iordache <aiordache@users.noreply.github.com>2020-08-10 10:14:43 +0200
committerGitHub <noreply@github.com>2020-08-10 10:14:43 +0200
commitb23eb2deab5695f0749902fb127d91f5ca16f051 (patch)
treef4401a7e7072c51bc3d612e547f2096c2f888408 /compose/config
parentd4f55a721dfead3cee08d6406388b5e89de3e99c (diff)
parenta8511e0884054ceed9fd022ef675d90801be8168 (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.py2
-rw-r--r--compose/config/sort_services.py1
-rw-r--r--compose/config/validation.py15
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: