class Controller(object): def __init__(self): # vm registries self.label_vm = [] self.feature_vm = [] self.classify_vm = [] self.logger = MyUtils.getLogger('controller') #file manager self.data_manager = StorageManager('test1') self.db_manager = DBManager() #engines # rpc server for now for handling client request rpc_paths = ('/RPC2',) # Create server self.server = SimpleXMLRPCServer(("0.0.0.0", 8888)) self.server.register_introspection_functions() self.server.register_function(self.addImage, 'addImage') self.server.serve_forever() def decode_image_from_string(self,s): return np.fromstring(s, np.uint8) def addImage(self, image_name, image, override=False): # save image to disk first, and then upload to s3 self.logger.debug('received data. override? {}'.format(override)) full_path = './tmp/'+image_name with open(full_path, 'wb') as f: f.write(self.decode_image_from_string(image.data)) added = False if (override or not self.db_manager.hasImage(image_name)): self.data_manager.uploadFile(image_name,'./tmp', image_name) # file path, is just its image name in s3 added = self.db_manager.addImage(image_name, override) # os.remove(full_path) return added