def releaseHostId(self, hostId, wait, unused): self.log.info("Releasing host id for domain %s (id: %s)", self._sdUUID, hostId) # Ensure that future calls to acquire() will fail quickly. self._ready.valid = False with self._lock: try: sanlock.rem_lockspace(self._sdUUID, hostId, self._idsPath, unused=unused, **{'async': not wait}) except sanlock.SanlockException as e: if e.errno != errno.ENOENT: raise se.ReleaseHostIdFailure(self._sdUUID, e) self.log.info("Host id for domain %s released successfully " "(id: %s)", self._sdUUID, hostId)
raise se.AcquireHostIdFailure(self._sdUUID, e) # else silently continue, the host id has been acquired # or it's in the process of being acquired (async) elif e.errno != errno.EEXIST: raise se.AcquireHostIdFailure(self._sdUUID, e) self.log.debug("Host id for domain %s successfully acquired " "(id: %s)", self._sdUUID, hostId) def releaseHostId(self, hostId, async, unused): with self._lock: self.log.info("Releasing host id for domain %s (id: %s)", self._sdUUID, hostId) try: sanlock.rem_lockspace(self._sdUUID, hostId, self._idsPath, async=async, unused=unused) except sanlock.SanlockException as e: if e.errno != errno.ENOENT: raise se.ReleaseHostIdFailure(self._sdUUID, e) self.log.debug("Host id for domain %s released successfully " "(id: %s)", self._sdUUID, hostId) def hasHostId(self, hostId): with self._lock: try: return sanlock.inq_lockspace(self._sdUUID, hostId, self._idsPath) except sanlock.SanlockException: self.log.debug("Unable to inquire sanlock lockspace "