Return a list of VRFs matching `spec`.

            * `auth` [BaseAuth]
                AAA options.
            * `spec` [vrf_spec]
                A VRF specification. If omitted, all VRFs are returned.

            Returns a list of dicts.

            This is the documentation of the internal backend function. It's
            exposed over XML-RPC, please also see the XML-RPC documentation for
            :py:func:`nipap.xmlrpc.NipapXMLRPC.list_vrf` for full
            understanding.

def list_vrf(self, auth, spec=None):
        """ Return a list of VRFs matching `spec`.

            * `auth` [BaseAuth]
                AAA options.
            * `spec` [vrf_spec]
                A VRF specification. If omitted, all VRFs are returned.

            Returns a list of dicts.

            This is the documentation of the internal backend function. It's
            exposed over XML-RPC, please also see the XML-RPC documentation for
            :py:func:`nipap.xmlrpc.NipapXMLRPC.list_vrf` for full
            understanding.
        """

        if spec is None:
            spec = {}

        self._logger.debug("list_vrf called; spec: %s" % unicode(spec))

        sql = "SELECT * FROM ip_net_vrf"

        params = list()
        # no spec lists all VRFs
        if spec is not None and not {}:
            where, params = self._expand_vrf_spec(spec)
        if len(params) > 0:
            sql += " WHERE " + where

        sql += " ORDER BY vrf_rt_order(rt) NULLS FIRST"

        self._execute(sql, params)

        res = list()
        for row in self._curs_pg:
            res.append(dict(row))

        return res