diff --git a/_states/glancev2.py b/_states/glancev2.py
index 5b149f2..6664b7e 100644
--- a/_states/glancev2.py
+++ b/_states/glancev2.py
@@ -52,7 +52,8 @@
            :param visibility: Scope of image accessibility.
                               Valid values: public, private, community, shared
     :param import_from_format: (optional) Format to import the image from
-    :param timeout: (optional) Time for task to download image
+    :param timeout: (optional) Time for task to download image or wait
+            until it becomes active if it is already present
     :param sleep_time: (optional) Timer countdown
     :param checksum: (optional) checksum of the image to verify it
     :param volume_name: (optional) name of the volume if specified the command
@@ -94,7 +95,7 @@
                 while timeout > 0 and image_status != 'active':
                     try:
                         image = _glancev2_call('image_get_details', name=name,
-                                                   cloud_name=cloud_name)
+                                               cloud_name=cloud_name)
                     except Exception as e:
                         if 'ResourceNotFound' in repr(e):
                             timeout -= sleep_time
@@ -188,15 +189,32 @@
                             return _failed('create', name, 'image')
 
                     elif image['status'] in ['saving', 'queued']:
-                        resp['comment'] = resp['comment'] \
-                                          + " checksum couldn't be verified, " \
-                                            "since status is not active"
+                        resp['comment'] += (" checksum couldn't be verified, "
+                                            "since status is not active")
                 return resp
         elif 'MultipleResourcesFound' in repr(e):
             return _failed('find', name, 'image')
         else:
             raise
 
+    # NOTE(pas-ha) fail the salt state if existing image is not in active state
+    image_status = exact_image['status'].copy()
+    while timeout > 0 and image_status != 'active':
+        log.warning("Image {name} is not ACTIVE in state, waiting..".format(
+            name=exact_image['name']))
+        timeout -= sleep_time
+        time.sleep(sleep_time)
+        try:
+            image = _glancev2_call('image_get_details', name=name,
+                                   cloud_name=cloud_name)
+        except Exception:
+            raise
+        image_status = image['status']
+    if image_status != 'active':
+        log.error("Image {name} failed to reach ACTIVE in state".format(
+            name=exact_image['name']))
+        return _failed('present', name, 'image')
+
     to_change = []
     for prop in image_properties:
         path = prop.replace('~', '~0').replace('/', '~1')
@@ -259,6 +277,7 @@
     }
     return changes_dict
 
+
 def _failed(op, name, resource):
     msg_map = {
         'create': '{0} {1} failed to create',
@@ -274,4 +293,4 @@
         'comment': msg_map[op].format(resource, name),
         'changes': {},
     }
-    return changes_dict
\ No newline at end of file
+    return changes_dict
