summaryrefslogtreecommitdiff
path: root/docker/api/service.py
diff options
context:
space:
mode:
Diffstat (limited to 'docker/api/service.py')
-rw-r--r--docker/api/service.py15
1 files changed, 12 insertions, 3 deletions
diff --git a/docker/api/service.py b/docker/api/service.py
index 4f7123e..051d34f 100644
--- a/docker/api/service.py
+++ b/docker/api/service.py
@@ -3,7 +3,7 @@ from .. import auth, errors, utils
from ..types import ServiceMode
-def _check_api_features(version, task_template, update_config):
+def _check_api_features(version, task_template, update_config, endpoint_spec):
def raise_version_error(param, min_version):
raise errors.InvalidVersion(
@@ -23,6 +23,11 @@ def _check_api_features(version, task_template, update_config):
if 'Order' in update_config:
raise_version_error('UpdateConfig.order', '1.29')
+ if endpoint_spec is not None:
+ if utils.version_lt(version, '1.32') and 'Ports' in endpoint_spec:
+ if any(p.get('PublishMode') for p in endpoint_spec['Ports']):
+ raise_version_error('EndpointSpec.Ports[].mode', '1.32')
+
if task_template is not None:
if 'ForceUpdate' in task_template and utils.version_lt(
version, '1.25'):
@@ -125,7 +130,9 @@ class ServiceApiMixin(object):
)
endpoint_spec = endpoint_config
- _check_api_features(self._version, task_template, update_config)
+ _check_api_features(
+ self._version, task_template, update_config, endpoint_spec
+ )
url = self._url('/services/create')
headers = {}
@@ -370,7 +377,9 @@ class ServiceApiMixin(object):
)
endpoint_spec = endpoint_config
- _check_api_features(self._version, task_template, update_config)
+ _check_api_features(
+ self._version, task_template, update_config, endpoint_spec
+ )
if fetch_current_spec:
inspect_defaults = True