def copy(self, src_path, dest_path, options=None): if options is None: options = {} # check if dest is a collection # if so append filename to it if self.sess.collections.exists(dest_path): filename = src_path.rsplit('/', 1)[1] target_path = dest_path + '/' + filename else: target_path = dest_path src = FileOpenRequest( objPath=src_path, createMode=0, openFlags=0, offset=0, dataSize=0, numThreads=self.sess.numThreads, oprType=10, # COPY_SRC KeyValPair_PI=StringStringMap(), ) dest = FileOpenRequest( objPath=target_path, createMode=0, openFlags=0, offset=0, dataSize=0, numThreads=self.sess.numThreads, oprType=9, # COPY_DEST KeyValPair_PI=StringStringMap(options), ) message_body = ObjCopyRequest(srcDataObjInp_PI=src, destDataObjInp_PI=dest) message = iRODSMessage('RODS_API_REQ', msg=message_body, int_info=api_number['DATA_OBJ_COPY_AN']) with self.sess.pool.get_connection() as conn: conn.send(message) response = conn.recv()
def move(self, src_path, dest_path): # check if dest is an existing collection # if so append collection name to it if self.sess.collections.exists(dest_path): coll_name = src_path.rsplit('/', 1)[1] target_path = dest_path + '/' + coll_name else: target_path = dest_path src = FileOpenRequest( objPath=src_path, createMode=0, openFlags=0, offset=0, dataSize=0, numThreads=0, oprType=12, # RENAME_COLL KeyValPair_PI=StringStringMap(), ) dest = FileOpenRequest( objPath=target_path, createMode=0, openFlags=0, offset=0, dataSize=0, numThreads=0, oprType=12, # RENAME_COLL KeyValPair_PI=StringStringMap(), ) message_body = ObjCopyRequest(srcDataObjInp_PI=src, destDataObjInp_PI=dest) message = iRODSMessage('RODS_API_REQ', msg=message_body, int_info=api_number['DATA_OBJ_RENAME_AN']) with self.sess.pool.get_connection() as conn: conn.send(message) response = conn.recv()