Esempio n. 1
0
    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))
Esempio n. 2
0
    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))
Esempio n. 3
0
    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))