def put(self, key, value, locality=None, tableName=None): #print("Client keyspace=%s, tablename=%s putting key %s" % (self.keyspace,self.tablename,key)) status = False loc = self.locality if locality is None else locality table = self.tablename if tableName is None else tableName #print("[DataLayerClient] [PUT] keyspace=%s, tablename=%s putting key %s" % (self.keyspace,table,key)) if value is None: value = "" for retry in range(MAX_RETRIES): try: value = value.encode() row = KeyValuePair(key, value) status = self.datalayer.insertRow(self.keyspace, table, row, loc) break except TTransport.TTransportException as exc: print( "[DataLayerClient] Reconnecting because of failed put: " + str(exc)) self.connect() except Exception as exc: print("[DataLayerClient] failed put: " + str(exc)) raise return status
def putMapEntry(self, mapname, key, value, locality=None): status = False loc = self.locality if locality is None else locality if value is None: value = "" for retry in range(MAX_RETRIES): try: value = value.encode() row = KeyValuePair(key, value) status = self.datalayer.putEntryToMap(self.keyspace, self.maptablename, mapname, row, loc) break except TTransport.TTransportException as exc: print("[DataLayerClient] Reconnecting because of failed putMapEntry: " + str(exc)) self.connect() except Exception as exc: print("[DataLayerClient] failed putMapEntry: " + str(exc)) raise return status
def main(): socket = TSocket.TSocket("10.0.2.15", 4998) transport = TTransport.TFramedTransport(socket) protocol = TCompactProtocol.TCompactProtocol(transport) datalayer = DataLayerService.Client(protocol) try: transport.open() keyspace = 'debug_sand' replicationFactor = 1 locality = 1 # 0 means local, and 1 means remote (Riak) table = 'DATA' key = 'test_key' value = "123" s1 = datalayer.createKeyspace(keyspace, replicationFactor, locality) s2 = datalayer.createTable(keyspace, table, locality) row = KeyValuePair(key, value) s3 = datalayer.insertRow(keyspace, table, row, locality) result = datalayer.selectRow(keyspace, table, key, locality) print(result.key) print(result.value) s5 = datalayer.dropTable(keyspace, table, locality) print(s5) # below shows how to operate CRDT map map_table = 'MAPS' allmaps = datalayer.selectMaps(keyspace, map_table, 0, 10000, 1) print(allmaps) s6 = datalayer.createMapTable(keyspace, map_table, locality) print("result createMapTable: ", s6) time.sleep(2) map_name = 'MAP' s7 = datalayer.createMap(keyspace, map_table, map_name, locality) print("result createMap: ", s7) time.sleep(2) allmaps = datalayer.selectMaps(keyspace, map_table, 0, 10000, 1) print(allmaps) s8 = datalayer.putEntryToMap(keyspace, map_table, map_name, KeyValuePair(key, value), locality) time.sleep(2) entry = datalayer.getEntryFromMap(keyspace, map_table, map_name, key, locality) print(entry.key + " -> " + entry.value) keyset = datalayer.retrieveKeysetFromMap(keyspace, map_table, map_name, locality) print(keyset.key + " -> " + keyset.items) entryset = datalayer.retrieveAllEntriesFromMap(keyspace, map_table, map_name, locality) print(entryset.key) print(entryset.entries) s9 = datalayer.deleteMap(keyspace, map_table, map_name, locality) s10 = datalayer.dropMapTable(keyspace, map_table, locality) # above shows how to operate CRDT map s11 = datalayer.dropKeyspace(keyspace, locality) except Thrift.TException as e: print(e) finally: transport.close()