mirror of
https://github.com/docker/compose.git
synced 2025-07-28 08:04:09 +02:00
error out on both scale and deploy.replicas being set
Signed-off-by: aiordache <anca.iordache@docker.com>
This commit is contained in:
parent
faedc4aa9e
commit
6cf72381f9
@ -276,19 +276,31 @@ class Project(object):
|
|||||||
|
|
||||||
def get_service_scale(self, service_dict):
|
def get_service_scale(self, service_dict):
|
||||||
# service.scale for v2 and deploy.replicas for v3
|
# service.scale for v2 and deploy.replicas for v3
|
||||||
scale = service_dict.get('scale', 1)
|
scale = service_dict.get('scale', None)
|
||||||
deploy_dict = service_dict.get('deploy', None)
|
deploy_dict = service_dict.get('deploy', None)
|
||||||
if deploy_dict:
|
if not deploy_dict:
|
||||||
if deploy_dict.get('mode', 'replicated') == 'replicated':
|
return 1 if scale is None else scale
|
||||||
scale = deploy_dict.get('replicas', scale)
|
|
||||||
# deploy may contain placement constraints introduced in v3.8
|
if deploy_dict.get('mode', 'replicated') != 'replicated':
|
||||||
max_replicas = deploy_dict.get('placement', {}).get(
|
return 1 if scale is None else scale
|
||||||
'max_replicas_per_node',
|
|
||||||
scale)
|
replicas = deploy_dict.get('replicas', None)
|
||||||
scale = min(scale, max_replicas)
|
if scale and replicas:
|
||||||
if max_replicas < scale:
|
raise ConfigurationError(
|
||||||
log.warning("Scale is limited to {} ('max_replicas_per_node' field).".format(
|
"Both service.scale and service.deploy.replicas are set."
|
||||||
max_replicas))
|
" Only one of them must be set."
|
||||||
|
)
|
||||||
|
if replicas:
|
||||||
|
scale = replicas
|
||||||
|
# deploy may contain placement constraints introduced in v3.8
|
||||||
|
max_replicas = deploy_dict.get('placement', {}).get(
|
||||||
|
'max_replicas_per_node',
|
||||||
|
scale)
|
||||||
|
|
||||||
|
scale = min(scale, max_replicas)
|
||||||
|
if max_replicas < scale:
|
||||||
|
log.warning("Scale is limited to {} ('max_replicas_per_node' field).".format(
|
||||||
|
max_replicas))
|
||||||
return scale
|
return scale
|
||||||
|
|
||||||
def start(self, service_names=None, **options):
|
def start(self, service_names=None, **options):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user