def DeleteBlockStorage(self, vault, block): """Delete a block directly from block storage :param vault: instance of deuce.api.vault.Vault :param block: instance of deuce.api.block.Block :return: True if expected status code is returned, Runtime Error raised if that's not the case. """ url = api_v1.get_storage_block_path(vault.vault_id, block.storage_id) self.ReInit(self.sslenabled, url) self.__update_headers() self.__log_request_data(fn='Delete Block Storage') res = requests.delete(self.Uri, headers=self.Headers) self.__log_response_data(res, jsondata=False, fn='Delete Block Storage') if res.status_code == 204: return True else: raise RuntimeError( 'Failed to delete Block {0:} from BlockStorage, Vault {1:}' 'Error ({2:}): {3:}'.format(block.storage_id, vault.vault_id, res.status_code, res.text))
def DownloadBlockStorageData(self, vault, block): """Download a block directly from block storage :param vault: instance of deuce.api.vault.Vault :param block: instance of deuce.api.block.Block :return: instance of deuce.api.block.Block if expected status code is returned, Runtime Error raised if that's not the case. """ url = api_v1.get_storage_block_path(vault.vault_id, block.storage_id) self.ReInit(self.sslenabled, url) self.__update_headers() self.__log_request_data(fn='Download Block Storage Data') res = requests.get(self.Uri, headers=self.Headers) self.__log_response_data(res, jsondata=False, fn='Download Block Storage Data') if res.status_code == 200: block.data = res.content block.ref_modified = int(res.headers['X-Ref-Modified'])\ if res.headers['X-Ref-Modified'] else 0 block.ref_count = int(res.headers['X-Block-Reference-Count'])\ if res.headers['X-Block-Reference-Count'] else 0 block.block_id = res.headers['X-Block-ID'] return block else: raise RuntimeError( 'Failed to get Content for Storage Block Id: {0:}, Vault: {1:}' 'Error ({2:}): {3:}'.format(block.storage_id, vault.vault_id, res.status_code, res.text))
def HeadBlockStorage(self, vault, block): """Head a block directly from block storage :param vault: instance of deuce.api.vault.Vault :param block: instance of deuce.api.block.Block :return: instance of deuce.api.block.Block if expected status code is returned, Runtime Error raised if that's not the case. """ url = api_v1.get_storage_block_path(vault.vault_id, block.storage_id) self.ReInit(self.sslenabled, url) self.__update_headers() self.__log_request_data(fn='Head Block in Storage') res = requests.head(self.Uri, headers=self.Headers) self.__log_response_data(res, jsondata=True, fn='Head Block in Storage') if res.status_code == 204: block.ref_modified = int(res.headers['X-Ref-Modified'])\ if res.headers['X-Ref-Modified'] else 0 block.ref_count = int(res.headers['X-Block-Reference-Count'])\ if res.headers['X-Block-Reference-Count'] else 0 block.block_id = None if res.headers['X-Block-ID'] == \ 'None' else res.headers['X-Block-ID'] block.block_size = int(res.headers['X-Block-Size'])\ if res.headers['X-Block-Size'] else 0 block.block_orphaned = \ json.loads(res.headers['X-Block-Orphaned'].lower()) return block else: raise RuntimeError( 'Failed to head Block {0:} from BlockStorage, Vault {1:}' 'Error ({2:}): {3:}'.format(block.storage_id, vault.vault_id, res.status_code, res.text))