docker_container: improving idempotency (#44808)
* Only handle cpu_shares, volume_driver, auto_remove as in _host_config(). * Don't compare log_options (resp restart_retries) if log_driver (resp restart_policy) is not specified. * Warn that log_options (resp restart_retries) is ignored if log_driver (resp restart_policy) is not specified.
This commit is contained in:
parent
a96a51b0c6
commit
1dcf52c8fe
1 changed files with 22 additions and 6 deletions
|
@ -1276,7 +1276,6 @@ class Container(DockerBaseClass):
|
||||||
|
|
||||||
# Map parameters to container inspect results
|
# Map parameters to container inspect results
|
||||||
config_mapping = dict(
|
config_mapping = dict(
|
||||||
auto_remove=host_config.get('AutoRemove'),
|
|
||||||
expected_cmd=config.get('Cmd'),
|
expected_cmd=config.get('Cmd'),
|
||||||
domainname=config.get('Domainname'),
|
domainname=config.get('Domainname'),
|
||||||
hostname=config.get('Hostname'),
|
hostname=config.get('Hostname'),
|
||||||
|
@ -1296,8 +1295,6 @@ class Container(DockerBaseClass):
|
||||||
ipc_mode=host_config.get("IpcMode"),
|
ipc_mode=host_config.get("IpcMode"),
|
||||||
labels=config.get('Labels'),
|
labels=config.get('Labels'),
|
||||||
expected_links=host_config.get('Links'),
|
expected_links=host_config.get('Links'),
|
||||||
log_driver=log_config.get('Type'),
|
|
||||||
log_options=log_config.get('Config'),
|
|
||||||
mac_address=network.get('MacAddress'),
|
mac_address=network.get('MacAddress'),
|
||||||
memory_swappiness=host_config.get('MemorySwappiness'),
|
memory_swappiness=host_config.get('MemorySwappiness'),
|
||||||
network_mode=host_config.get('NetworkMode'),
|
network_mode=host_config.get('NetworkMode'),
|
||||||
|
@ -1309,7 +1306,6 @@ class Container(DockerBaseClass):
|
||||||
expected_ports=host_config.get('PortBindings'),
|
expected_ports=host_config.get('PortBindings'),
|
||||||
read_only=host_config.get('ReadonlyRootfs'),
|
read_only=host_config.get('ReadonlyRootfs'),
|
||||||
restart_policy=restart_policy.get('Name'),
|
restart_policy=restart_policy.get('Name'),
|
||||||
restart_retries=restart_policy.get('MaximumRetryCount'),
|
|
||||||
# Cannot test shm_size, as shm_size is not included in container inspection results.
|
# Cannot test shm_size, as shm_size is not included in container inspection results.
|
||||||
# shm_size=host_config.get('ShmSize'),
|
# shm_size=host_config.get('ShmSize'),
|
||||||
security_opts=host_config.get("SecurityOpt"),
|
security_opts=host_config.get("SecurityOpt"),
|
||||||
|
@ -1322,9 +1318,21 @@ class Container(DockerBaseClass):
|
||||||
expected_volumes=config.get('Volumes'),
|
expected_volumes=config.get('Volumes'),
|
||||||
expected_binds=host_config.get('Binds'),
|
expected_binds=host_config.get('Binds'),
|
||||||
volumes_from=host_config.get('VolumesFrom'),
|
volumes_from=host_config.get('VolumesFrom'),
|
||||||
volume_driver=host_config.get('VolumeDriver'),
|
|
||||||
working_dir=config.get('WorkingDir')
|
working_dir=config.get('WorkingDir')
|
||||||
)
|
)
|
||||||
|
if self.parameters.restart_policy:
|
||||||
|
config_mapping['restart_retries'] = restart_policy.get('MaximumRetryCount')
|
||||||
|
if self.parameters.log_driver:
|
||||||
|
config_mapping['log_driver'] = log_config.get('Type')
|
||||||
|
config_mapping['log_options'] = log_config.get('Config')
|
||||||
|
|
||||||
|
if self.parameters.client.HAS_AUTO_REMOVE_OPT:
|
||||||
|
# auto_remove is only supported in docker>=2
|
||||||
|
config_mapping['auto_remove'] = host_config.get('AutoRemove')
|
||||||
|
|
||||||
|
if HAS_DOCKER_PY_3:
|
||||||
|
# volume_driver moved to create_host_config in > 3
|
||||||
|
config_mapping['volume_driver'] = host_config.get('VolumeDriver')
|
||||||
|
|
||||||
differences = []
|
differences = []
|
||||||
for key, value in config_mapping.items():
|
for key, value in config_mapping.items():
|
||||||
|
@ -1422,7 +1430,6 @@ class Container(DockerBaseClass):
|
||||||
cpu_quota=host_config.get('CpuQuota'),
|
cpu_quota=host_config.get('CpuQuota'),
|
||||||
cpuset_cpus=host_config.get('CpusetCpus'),
|
cpuset_cpus=host_config.get('CpusetCpus'),
|
||||||
cpuset_mems=host_config.get('CpusetMems'),
|
cpuset_mems=host_config.get('CpusetMems'),
|
||||||
cpu_shares=host_config.get('CpuShares'),
|
|
||||||
kernel_memory=host_config.get("KernelMemory"),
|
kernel_memory=host_config.get("KernelMemory"),
|
||||||
memory=host_config.get('Memory'),
|
memory=host_config.get('Memory'),
|
||||||
memory_reservation=host_config.get('MemoryReservation'),
|
memory_reservation=host_config.get('MemoryReservation'),
|
||||||
|
@ -1431,6 +1438,10 @@ class Container(DockerBaseClass):
|
||||||
oom_killer=host_config.get('OomKillDisable'),
|
oom_killer=host_config.get('OomKillDisable'),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if HAS_DOCKER_PY_3:
|
||||||
|
# cpu_shares moved to create_host_config in > 3
|
||||||
|
config_mapping['cpu_shares'] = host_config.get('CpuShares')
|
||||||
|
|
||||||
differences = []
|
differences = []
|
||||||
for key, value in config_mapping.items():
|
for key, value in config_mapping.items():
|
||||||
if getattr(self.parameters, key, None) and getattr(self.parameters, key) != value:
|
if getattr(self.parameters, key, None) and getattr(self.parameters, key) != value:
|
||||||
|
@ -1744,6 +1755,11 @@ class ContainerManager(DockerBaseClass):
|
||||||
|
|
||||||
super(ContainerManager, self).__init__()
|
super(ContainerManager, self).__init__()
|
||||||
|
|
||||||
|
if client.module.params.get('log_options') and not client.module.params.get('log_driver'):
|
||||||
|
client.module.warn('log_options is ignored when log_driver is not specified')
|
||||||
|
if client.module.params.get('restart_retries') and not client.module.params.get('restart_policy'):
|
||||||
|
client.module.warn('restart_retries is ignored when restart_policy is not specified')
|
||||||
|
|
||||||
self.client = client
|
self.client = client
|
||||||
self.parameters = TaskParameters(client)
|
self.parameters = TaskParameters(client)
|
||||||
self.check_mode = self.client.check_mode
|
self.check_mode = self.client.check_mode
|
||||||
|
|
Loading…
Reference in a new issue