code: def resource_reaches_status(self, resource, resource_id,
                                  expected_stat='available',
                                  msg='resource', max_wait=120):
          
  
          tries = 0
          resource_stat = resource.get(resource_id).status
          while resource_stat != expected_stat and tries < (max_wait / 4):
              self.log.debug('{} status check: '
                             '{} [{}:{}] {}'.format(msg, tries,
                                                    resource_stat,
                                                    expected_stat,
                                                    resource_id))
              time.sleep(4)
              resource_stat = resource.get(resource_id).status
              tries += 1
  
          self.log.debug('{}:  expected, actual status = {}, '
                         '{}'.format(msg, resource_stat, expected_stat))
  
          if resource_stat == expected_stat:
              return True
          else:
              self.log.debug('{} never reached expected status: '
                             '{}'.format(resource_id, expected_stat))
              return False
docs: Wait for an openstack resources status to reach an
             expected status within a specified time.  Useful to confirm that
             nova instances, cinder vols, snapshots, glance images, heat stacks
             and other resources eventually reach the expected status.
  
          :param resource: pointer to os resource type, ex: heat_client.stacks
          :param resource_id: unique id for the openstack resource
          :param expected_stat: status to expect resource to reach
          :param msg: text to identify purpose in logging
          :param max_wait: maximum wait time in seconds
          :returns: True if successful, False if status is not reached