def retrieve_backup_data(self, object_name, output_filepath=None): """ Argument: object_name: delete target object name """ if (client.is_container(self.token, self.storage_url, self.container_name, verify=self.verify) and client.is_object(self.token, self.storage_url, self.container_name, object_name, verify=self.verify)): rc, content = client.retrieve_object(self.token, self.storage_url, self.container_name, object_name, verify=self.verify) if not rc: raise RuntimeError('Failed to retrieve the object "%s"' % object_name) if output_filepath: fpath = os.path.abspath(output_filepath) dpath = os.path.dirname(fpath) if not os.path.isdir(dpath): raise IOError('No such directory "%s"' % dpath) else: dpath = os.path.abspath(os.curdir) fpath = os.path.join(dpath, object_name) with open(fpath, 'w') as f: f.write(content) else: raise RuntimeError('No such object "%s"' % object_name)
def delete_backup_data(self, object_name): """ Argument: object_name: delete target object name """ if (client.is_container(self.token, self.storage_url, self.container_name, verify=self.verify) and client.is_object(self.token, self.storage_url, self.container_name, object_name, verify=self.verify)): rc = client.delete_object(self.token, self.storage_url, self.container_name, object_name, veirfy=self.verify) if not rc == 204: raise RuntimeError('Failed to delete the object "%s"' % object_name) return True else: raise RuntimeError('No such object "%s"' % object_name)
def retrieve_backup_data_list(self, verbose=False): """ Argument: verbose: boolean flag of listing objects """ if not client.is_container(self.token, self.storage_url, self.container_name, verify=self.verify): return [] if verbose: backup_l = [i for i in client.list_objects(self.token, self.storage_url, self.container_name, verify=self.verify)] else: backup_l = [i.get('name') for i in client.list_objects(self.token, self.storage_url, self.container_name, verify=self.verify)] return backup_l
def backup_file(self, filename): """ Argument: filename: path of backup target file """ object_name = os.path.basename(filename) if not client.is_container(self.token, self.storage_url, self.container_name, verify=self.verify): # False is no container rc = client.create_container(self.token, self.storage_url, self.container_name, verify=self.verify) if not (rc == 201 or rc == 202): # 201; Created, 202; Accepted raise RuntimeError('Failed to create the container "%s"' % self.container_name, verify=self.verify) objects_list = [object.get('name') for object in client.list_objects(self.token, self.storage_url, self.container_name, verify=self.verify)] if object_name in objects_list: self.rotate(filename, object_name, objects_list) else: rc = client.create_object(self.token, self.storage_url, self.container_name, filename, verify=self.verify) if not (rc == 201 or rc == 202): raise RuntimeError('Failed to create the object "%s"' % object_name) return True