def _close_replica(self): server_version = ast.literal_eval( os.environ.get('IRODS_VERSION_OVERRIDE', '()')) if (server_version or self.conn.server_version ) < IRODS_SERVER_WITH_CLOSE_REPLICA_API: return False message_body = JSON_Message( { "fd": self.desc, "send_notification": False, "update_size": False, "update_status": False, "compute_checksum": False }, server_version=self.conn.server_version) self.conn.send( iRODSMessage('RODS_API_REQ', msg=message_body, int_info=api_number['REPLICA_CLOSE_APN'])) try: self.conn.recv().int_info except Exception: logger.warning('** ERROR on closing replica **') raise return True
def _call_atomic_metadata_api(self, request_text): with self.sess.pool.get_connection() as conn: request_msg = iRODSMessage("RODS_API_REQ", JSON_Message( request_text, conn.server_version ), int_info=api_number['ATOMIC_APPLY_METADATA_OPERATIONS_APN']) conn.send( request_msg ) response = conn.recv() response_msg = response.get_json_encoded_struct() logger.debug("in atomic_metadata, server responded with: %r",response_msg)
def replica_access_info(self): message_body = JSON_Message( {'fd': self.desc}, server_version = self.conn.server_version ) message = iRODSMessage('RODS_API_REQ', msg = message_body, int_info=api_number['GET_FILE_DESCRIPTOR_INFO_APN']) self.conn.send(message) result = None try: result = self.conn.recv() except Exception as e: logger.warning('''Couldn't receive or process response to GET_FILE_DESCRIPTOR_INFO_APN -- ''' '''caught: %r''',e) raise dobj_info = result.get_json_encoded_struct() replica_token = dobj_info.get("replica_token","") resc_hier = ( dobj_info.get("data_object_info") or {} ).get("resource_hierarchy","") return (replica_token, resc_hier)