def do_unlock(self): self.log.debug("unlocking %s" % self.args.container) cli, meta = self._setup_client() if cli is None: return 1 elif 'client' not in meta: self.log.warning("%s is not locked, nothing to do" % self.args.container) return 1 self.log.info("%s lock is: %s" % (self.args.container, meta['client'])) meta.update(client='', last=meta['client']) hdrs = setMeta(meta) self.log.debug("Meta headers: %s" % hdrs) try: cli.put_container(self.args.container, headers=hdrs) except client.ClientException as ex: self.log.error(ex) return 1 self.log.info("Done, %s is unlocked" % self.args.container) return 0
def do_setup(self): self.log.debug("setting up %s" % self.args.container) cli, meta = self._setup_client(create=True) if cli is None: return 1 elif meta and not self.args.force: self.log.error("%s has already been setup" % self.args.container) return 1 hdrs = setMeta( dict(version=disk_version, objects=self.args.objects, object_size=self.args.object_size, client='', last='')) self.log.debug("Meta headers: %s" % hdrs) try: cli.put_container(self.args.container, headers=hdrs) except client.ClientException as ex: self.log.error(ex) return 1 self.log.info("Done, %s" % self.args.container) return 0
def do_lock(self): self.log.debug("locking %s" % self.args.container) cli, meta = self._setup_client() if cli is None: return 1 elif 'client' in meta: self.log.warning("%s is already locked: %s" % (self.args.container, meta['client'])) return 1 meta.update(client='ctl@%i' % time()) hdrs = setMeta(meta) self.log.debug("Meta headers: %s" % hdrs) try: cli.put_container(self.args.container, headers=hdrs) except client.ClientException as ex: self.log.error(ex) return 1 self.log.info("Done, %s is locked" % self.args.container) return 0
def unlock(self): """Set the storage as free""" if not self.locked: return self.meta['last'] = self.meta.get('client') self.meta['client'] = '' hdrs = setMeta(self.meta) try: self.cli.put_container(self.container, headers=hdrs) except (socket.error, client.ClientException) as ex: raise StorageError(errno.EIO, "Failed to unlock: %s" % ex) self.locked = False
def do_setup(self): self.log.debug("setting up %s" % self.args.container) cli, meta = self._setup_client(create=True) if cli is None: return 1 elif meta and not self.args.force: self.log.error("%s has already been setup" % self.args.container) return 1 hdrs = setMeta(dict(version=disk_version, objects=self.args.objects, object_size=self.args.object_size, client='', last='')) self.log.debug("Meta headers: %s" % hdrs) try: cli.put_container(self.args.container, headers=hdrs) except client.ClientException as ex: self.log.error(ex) return 1 self.log.info("Done, %s" % self.args.container) return 0
def lock(self, client_id): """Set the storage as busy""" if self.locked: return try: headers, _ = self.cli.get_container(self.container) except (socket.error, client.ClientException) as ex: raise StorageError(errno.EIO, "Failed to lock: %s" % ex) self.meta = getMeta(headers) if self.meta.get('client'): raise StorageError(errno.EBUSY, "Already in use: %s" % self.meta['client']) self.meta['client'] = "%s@%i" % (client_id, time()) hdrs = setMeta(self.meta) try: self.cli.put_container(self.container, headers=hdrs) except (socket.error, client.ClientException) as ex: raise StorageError(errno.EIO, "Failed to lock: %s" % ex) self.locked = True