summaryrefslogtreecommitdiff
path: root/compose/config
diff options
context:
space:
mode:
authorEric Hripko <ehripko@bloomberg.net>2020-05-01 16:56:46 +0100
committerEric Hripko <ehripko@bloomberg.net>2020-08-07 14:43:46 +0100
commitefb5601323d243595248f85e2e2aa57cb0afded9 (patch)
tree7bb7ec33fe6762b54c8de96dfb0f29d35a819a26 /compose/config
parentd4f55a721dfead3cee08d6406388b5e89de3e99c (diff)
Implement service mode for ipc
Signed-off-by: Eric Hripko <ehripko@bloomberg.net>
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: