(version, task_template, update_config, endpoint_spec,
rollback_config)
| 3 | |
| 4 | |
| 5 | def _check_api_features(version, task_template, update_config, endpoint_spec, |
| 6 | rollback_config): |
| 7 | |
| 8 | def raise_version_error(param, min_version): |
| 9 | raise errors.InvalidVersion( |
| 10 | f'{param} is not supported in API version < {min_version}' |
| 11 | ) |
| 12 | |
| 13 | if update_config is not None: |
| 14 | if utils.version_lt(version, '1.25'): |
| 15 | if 'MaxFailureRatio' in update_config: |
| 16 | raise_version_error('UpdateConfig.max_failure_ratio', '1.25') |
| 17 | if 'Monitor' in update_config: |
| 18 | raise_version_error('UpdateConfig.monitor', '1.25') |
| 19 | |
| 20 | if utils.version_lt(version, '1.28'): |
| 21 | if update_config.get('FailureAction') == 'rollback': |
| 22 | raise_version_error( |
| 23 | 'UpdateConfig.failure_action rollback', '1.28' |
| 24 | ) |
| 25 | |
| 26 | if utils.version_lt(version, '1.29'): |
| 27 | if 'Order' in update_config: |
| 28 | raise_version_error('UpdateConfig.order', '1.29') |
| 29 | |
| 30 | if rollback_config is not None: |
| 31 | if utils.version_lt(version, '1.28'): |
| 32 | raise_version_error('rollback_config', '1.28') |
| 33 | |
| 34 | if utils.version_lt(version, '1.29'): |
| 35 | if 'Order' in update_config: |
| 36 | raise_version_error('RollbackConfig.order', '1.29') |
| 37 | |
| 38 | if endpoint_spec is not None: |
| 39 | if utils.version_lt(version, '1.32') and 'Ports' in endpoint_spec: |
| 40 | if any(p.get('PublishMode') for p in endpoint_spec['Ports']): |
| 41 | raise_version_error('EndpointSpec.Ports[].mode', '1.32') |
| 42 | |
| 43 | if task_template is not None: |
| 44 | if 'ForceUpdate' in task_template and utils.version_lt( |
| 45 | version, '1.25'): |
| 46 | raise_version_error('force_update', '1.25') |
| 47 | |
| 48 | if task_template.get('Placement'): |
| 49 | if utils.version_lt(version, '1.30'): |
| 50 | if task_template['Placement'].get('Platforms'): |
| 51 | raise_version_error('Placement.platforms', '1.30') |
| 52 | if utils.version_lt(version, '1.27'): |
| 53 | if task_template['Placement'].get('Preferences'): |
| 54 | raise_version_error('Placement.preferences', '1.27') |
| 55 | |
| 56 | if task_template.get('ContainerSpec'): |
| 57 | container_spec = task_template.get('ContainerSpec') |
| 58 | |
| 59 | if utils.version_lt(version, '1.25'): |
| 60 | if container_spec.get('TTY'): |
| 61 | raise_version_error('ContainerSpec.tty', '1.25') |
| 62 | if container_spec.get('Hostname') is not None: |
no test coverage detected