def _do_blocking_operation(self,
                               function,
                               timeout_sec=VOLUME_DEFAULT_TIMEOUT,
                               sleep=None,
                               **kwargs):
        if sleep is None:
            sleep = time.sleep

        def lock_dropped_sleep(*args, **kwargs):
            """
            A custom sleep function that drops the lock while the actual
            sleeping is going on.
            """
            self._lock.release()
            try:
                return sleep(*args, **kwargs)
            finally:
                self._lock.acquire()

        args = dict(project=self._project, zone=self._zone)
        args.update(kwargs)
        with self._lock:
            operation = function(**args).execute()
            return wait_for_operation(
                self._compute, operation, [1]*timeout_sec, lock_dropped_sleep)
Short property to provide a sender address in SMTP format,
dataset/ETHPy150Open ClusterHQ/flocker/flocker/node/agents/gce.py/GCEOperations._do_blocking_operation--crossover with--dataset/ETHPy150Open rossp/django-helpdesk/helpdesk/models.py/Queue._from_address