@ -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
# https://github.com/ansible/ansible-modules-core/issues/2043
if last . strip ( ) == ' {} ' :
last = changes [ - 2 ]
except IndexError :
last = ' {} '
status = json . loads ( last ) . get ( ' status ' , ' ' )
if status . startswith ( ' Status: Image is up to date for ' ) :
if status . startswith ( ' Status: Image is up to date for ' ) :
# Image is already up to date. Don't increment the counter.
# Image is already up to date. Don't increment the counter.
pass
pull_success = True
break
elif ( status . startswith ( ' Status: Downloaded newer image for ' ) or
elif ( status . startswith ( ' Status: Downloaded newer image for ' ) or
status . startswith ( ' Download complete ' ) ) :
status . startswith ( ' Download complete ' ) ) :
# Image was updated. Increment the pull counter.
# Image was updated. Increment the pull counter.
self . increment_counter ( ' pulled ' )
self . increment_counter ( ' pulled ' )
else :
pull_success = True
break
if not pull_success :
# 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 :