def search(cls, query, search_opts=None):
        """ Search VRFs.

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

        if search_opts is None:
            search_opts = {}

        xmlrpc = XMLRPCConnection()
        try:
            search_result = xmlrpc.connection.search_vrf(
                {
                    'query': query,
                    'search_options': search_opts,
                    'auth': AuthOptions().options
                })
        except xmlrpclib.Fault as xml_fault:
            raise _fault_to_exception(xml_fault)
        result = dict()
        result['result'] = []
        result['search_options'] = search_result['search_options']
        for v in search_result['result']:
            result['result'].append(VRF.from_dict(v))

        return result
Search VRFs.

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