@classmethod<EOL><INDENT>def search(cls, query, search_opts=None):<DEDENT>
if search_opts is None:<EOL><INDENT>search_opts = {}<EOL><DEDENT>xmlrpc = XMLRPCConnection()<EOL>try:<EOL><INDENT>search_result = xmlrpc.connection.search_pool(<EOL>{<EOL>'<STR_LIT>': query,<EOL>'<STR_LIT>': search_opts,<EOL>'<STR_LIT>': AuthOptions().options<EOL>})<EOL><DEDENT>except xmlrpclib.Fault as xml_fault:<EOL><INDENT>raise _fault_to_exception(xml_fault)<EOL><DEDENT>result = dict()<EOL>result['<STR_LIT:result>'] = []<EOL>result['<STR_LIT>'] = search_result['<STR_LIT>']<EOL>for pool in search_result['<STR_LIT:result>']:<EOL><INDENT>p = Pool.from_dict(pool)<EOL>result['<STR_LIT:result>'].append(p)<EOL><DEDENT>return result<EOL>
Search pools.

            Maps to the function :py:func:`nipap.backend.Nipap.search_pool` in
            the backend. Please see the documentation for the backend function
            for information regarding input arguments and return values.