def __init__(self, fabnet_hostname, security_manager): if ':' not in fabnet_hostname: fabnet_hostname += ':%s' % FRI_PORT self.fabnet_hostname = fabnet_hostname self.security_manager = security_manager cert = self.security_manager.get_client_cert() ckey = self.security_manager.get_client_cert_key() self.fri_client = FriClient(bool(ckey), cert, ckey)
def __init__(self, fabnet_hostname, security_manager): if ':' not in fabnet_hostname: fabnet_hostname += ':%s'%FRI_PORT self.fabnet_hostname = fabnet_hostname self.security_manager = security_manager cert = self.security_manager.get_client_cert() ckey = self.security_manager.get_client_cert_key() self.fri_client = FriClient(bool(ckey), cert, ckey)
class FabnetGateway: @classmethod def force_close_all_connections(cls): SocketProcessor.force_close_flag.set() @classmethod def init_socket_processor(cls): SocketProcessor.force_close_flag.clear() def __init__(self, fabnet_hostname, security_manager): if ':' not in fabnet_hostname: fabnet_hostname += ':%s'%FRI_PORT self.fabnet_hostname = fabnet_hostname self.security_manager = security_manager cert = self.security_manager.get_client_cert() ckey = self.security_manager.get_client_cert_key() self.fri_client = FriClient(bool(ckey), cert, ckey) def put(self, data_block, key=None, replica_count=DEFAULT_REPLICA_COUNT, wait_writes_count=2, allow_rewrite=True): packet = FabnetPacketRequest(method='PutKeysInfo', parameters={'key': key}, sync=True) resp = self.fri_client.call_sync(self.fabnet_hostname, packet, FRI_CLIENT_TIMEOUT) if resp.ret_code != 0: raise Exception('Key info error: %s'%resp.ret_message) if not resp.ret_parameters.has_key('key_info'): raise Exception('Invalid PutKeysInfo response! key_info is expected') key_info = resp.ret_parameters['key_info'] key, node_addr = key_info params = {'key':key, 'replica_count':replica_count, \ 'wait_writes_count': wait_writes_count} packet = FabnetPacketRequest(method='ClientPutData', parameters=params, \ binary_data=ChunkedBinaryData.prepare(data_block, FILE_ITER_BLOCK_SIZE), sync=True) resp = self.fri_client.call_sync(node_addr, packet, FRI_CLIENT_TIMEOUT) try: if resp.ret_code != 0: raise Exception('ClientPutData error: %s'%resp.ret_message) if not resp.ret_parameters.has_key('key'): raise Exception('put data block error: no data key found in response message "%s"'%resp) primary_key = resp.ret_parameters['key'] checksum = resp.ret_parameters['checksum'] if isinstance(data_block, DataBlock): db_checksum = data_block.checksum() else: db_checksum = hashlib.sha1(data_block).hexdigest() if checksum != db_checksum: raise Exception('Invalid data block checksum!') except Exception, err: logger.error('[put] %s'%err) logger.traceback_debug() if not allow_rewrite: self.remove(key, replica_count) raise err return primary_key
class FabnetGateway: @classmethod def force_close_all_connections(cls): SocketProcessor.force_close_flag.set() @classmethod def init_socket_processor(cls): SocketProcessor.force_close_flag.clear() def __init__(self, fabnet_hostname, security_manager): if ':' not in fabnet_hostname: fabnet_hostname += ':%s' % FRI_PORT self.fabnet_hostname = fabnet_hostname self.security_manager = security_manager cert = self.security_manager.get_client_cert() ckey = self.security_manager.get_client_cert_key() self.fri_client = FriClient(bool(ckey), cert, ckey) def put(self, data_block, key=None, replica_count=DEFAULT_REPLICA_COUNT, wait_writes_count=2, allow_rewrite=True): packet = FabnetPacketRequest(method='PutKeysInfo', parameters={'key': key}, sync=True) resp = self.fri_client.call_sync(self.fabnet_hostname, packet, FRI_CLIENT_TIMEOUT) if resp.ret_code != 0: raise Exception('Key info error: %s' % resp.ret_message) if not resp.ret_parameters.has_key('key_info'): raise Exception( 'Invalid PutKeysInfo response! key_info is expected') key_info = resp.ret_parameters['key_info'] key, node_addr = key_info params = {'key':key, 'replica_count':replica_count, \ 'wait_writes_count': wait_writes_count} packet = FabnetPacketRequest(method='ClientPutData', parameters=params, \ binary_data=ChunkedBinaryData.prepare(data_block, FILE_ITER_BLOCK_SIZE), sync=True) resp = self.fri_client.call_sync(node_addr, packet, FRI_CLIENT_TIMEOUT) try: if resp.ret_code != 0: raise Exception('ClientPutData error: %s' % resp.ret_message) if not resp.ret_parameters.has_key('key'): raise Exception( 'put data block error: no data key found in response message "%s"' % resp) primary_key = resp.ret_parameters['key'] checksum = resp.ret_parameters['checksum'] if isinstance(data_block, DataBlock): db_checksum = data_block.checksum() else: db_checksum = hashlib.sha1(data_block).hexdigest() if checksum != db_checksum: raise Exception('Invalid data block checksum!') except Exception, err: logger.error('[put] %s' % err) logger.traceback_debug() if not allow_rewrite: self.remove(key, replica_count) raise err return primary_key