@ -1912,34 +1912,43 @@ class ContainerManager(DockerBaseClass):
container = self . _get_container ( self . parameters . name )
# If the image parameter was passed then we need to deal with the image
# version comparison, otherwise we should not care
if self . parameters . image :
image = self . _get_image ( )
self . log ( image , pretty_print = True )
if not container . exists :
# New container
self . log ( ' No container found ' )
new_container = self . container_create ( self . parameters . image , self . parameters . create_parameters )
# version comparison. Otherwise we handle this depending on whether
# the container already runs or not; in the former case, in case the
# container needs to be restarted, we use the existing container's
# image ID.
image = self . _get_image ( )
self . log ( image , pretty_print = True )
if not container . exists :
# New container
self . log ( ' No container found ' )
if not self . parameters . image :
self . fail ( ' Cannot create container when image is not specified! ' )
new_container = self . container_create ( self . parameters . image , self . parameters . create_parameters )
if new_container :
container = new_container
else :
# Existing container
different , differences = container . has_different_configuration ( image )
image_different = False
if self . parameters . comparisons [ ' image ' ] [ ' comparison ' ] == ' strict ' :
image_different = self . _image_is_different ( image , container )
if image_different or different or self . parameters . recreate :
self . diff [ ' differences ' ] = differences
if image_different :
self . diff [ ' image_different ' ] = True
self . log ( " differences " )
self . log ( differences , pretty_print = True )
image_to_use = self . parameters . image
if not image_to_use and container and container . Image :
image_to_use = container . Image
if not image_to_use :
self . fail ( ' Cannot recreate container when image is not specified or cannot be extracted from current container! ' )
if container . running :
self . container_stop ( container . Id )
self . container_remove ( container . Id )
new_container = self . container_create ( image_to_use , self . parameters . create_parameters )
if new_container :
container = new_container
else :
# Existing container
different , differences = container . has_different_configuration ( image )
image_different = False
if self . parameters . comparisons [ ' image ' ] [ ' comparison ' ] == ' strict ' :
image_different = self . _image_is_different ( image , container )
if image_different or different or self . parameters . recreate :
self . diff [ ' differences ' ] = differences
if image_different :
self . diff [ ' image_different ' ] = True
self . log ( " differences " )
self . log ( differences , pretty_print = True )
if container . running :
self . container_stop ( container . Id )
self . container_remove ( container . Id )
new_container = self . container_create ( self . parameters . image , self . parameters . create_parameters )
if new_container :
container = new_container
if container and container . exists :
container = self . update_limits ( container )