docs: def delete_resource(self, resource, resource_id,
                          msg="resource", max_wait=120):
          """Delete one openstack resource, such as one instance, keypair,
          image, volume, stack, etc., and confirm deletion within max wait time.
  
          :param resource: pointer to os resource type, ex:glance_client.images
          :param resource_id: unique name or id for the openstack resource
          :param msg: text to identify purpose in logging
          :param max_wait: maximum wait time in seconds
          :returns: True if successful, otherwise False
          """
          self.log.debug('Deleting OpenStack resource '
                         '{} ({})'.format(resource_id, msg))
          num_before = len(list(resource.list()))
          resource.delete(resource_id)
  
          tries = 0
          num_after = len(list(resource.list()))
          while num_after != (num_before - 1) and tries < (max_wait / 4):
              self.log.debug('{} delete check: '
                             '{} [{}:{}] {}'.format(msg, tries,
                                                    num_before,
                                                    num_after,
                                                    resource_id))
              time.sleep(4)
              num_after = len(list(resource.list()))
              tries += 1
  
          self.log.debug('{}:  expected, actual count = {}, '
                         '{}'.format(msg, num_before - 1, num_after))
  
          if num_after == (num_before - 1):
              return True
          else:
              self.log.error('{} delete timed out'.format(msg))
              return False