@ -1390,24 +1390,20 @@ class DockerManager(object):
self . module . fail_json ( msg = " failed to login to the remote registry, check your username/password. " , error = repr ( e ) )
self . module . fail_json ( msg = " failed to login to the remote registry, check your username/password. " , error = repr ( e ) )
try :
try :
changes = list ( self . client . pull ( image , tag = tag , stream = True , * * extra_params ) )
changes = list ( self . client . pull ( image , tag = tag , stream = True , * * extra_params ) )
try :
pull_success = False
last = changes [ - 1 ]
for change in changes :
# seems Docker 1.8 puts an empty dict at the end of the
status = json . loads ( change ) . get ( ' status ' , ' ' )
# stream; catch that and get the previous instead
if status . startswith ( ' Status: Image is up to date for ' ) :
# https://github.com/ansible/ansible-modules-core/issues/2043
# Image is already up to date. Don't increment the counter.
if last . strip ( ) == ' {} ' :
pull_success = True
last = changes [ - 2 ]
break
except IndexError :
elif ( status . startswith ( ' Status: Downloaded newer image for ' ) or
last = ' {} '
status . startswith ( ' Download complete ' ) ) :
status = json . loads ( last ) . get ( ' status ' , ' ' )
# Image was updated. Increment the pull counter.
if status . startswith ( ' Status: Image is up to date for ' ) :
self . increment_counter ( ' pulled ' )
# Image is already up to date. Don't increment the counter.
pull_success = True
pass
break
elif ( status . startswith ( ' Status: Downloaded newer image for ' ) or
if not pull_success :
status . startswith ( ' Download complete ' ) ) :
# Image was updated. Increment the pull counter.
self . increment_counter ( ' pulled ' )
else :
# Unrecognized status string.
# Unrecognized status string.
self . module . fail_json ( msg = " Unrecognized status from pull. " , status = status , changes = changes )
self . module . fail_json ( msg = " Unrecognized status from pull. " , status = status , changes = changes )
except Exception as e :
except Exception as e :