diff options
author | Arthur de Jong <arthur@arthurdejong.org> | 2012-01-29 16:13:25 +0100 |
---|---|---|
committer | Arthur de Jong <arthur@arthurdejong.org> | 2012-01-29 16:13:25 +0100 |
commit | 4c31632a1cf1a89fc685931986653581b2623f02 (patch) | |
tree | cdb2f5ad651760eaa89c5ed10e05e2787c21cde1 /pynslcd/network.py | |
parent | 0ddbc4563992e3e27a8e2fd1a343a855af6af151 (diff) |
implement a naive offline cache
git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/nss-pam-ldapd@1615 ef36b2f9-881f-0410-afb5-c4e39611909c
Diffstat (limited to 'pynslcd/network.py')
-rw-r--r-- | pynslcd/network.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/pynslcd/network.py b/pynslcd/network.py index bccc788..88778d7 100644 --- a/pynslcd/network.py +++ b/pynslcd/network.py @@ -18,6 +18,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301 USA +import cache import common import constants @@ -33,6 +34,31 @@ class Search(common.Search): required = ('cn', ) +class NetworkQuery(cache.CnAliasedQuery): + + sql = ''' + SELECT `network_cache`.`cn` AS `cn`, + `network_1_cache`.`cn` AS `alias`, + `network_2_cache`.`ipNetworkNumber` AS `ipNetworkNumber` + FROM `network_cache` + LEFT JOIN `network_1_cache` + ON `network_1_cache`.`network` = `network_cache`.`cn` + LEFT JOIN `network_2_cache` + ON `network_2_cache`.`network` = `network_cache`.`cn` + ''' + + def __init__(self, parameters): + super(NetworkQuery, self).__init__('network', parameters) + + +class Cache(cache.Cache): + + def retrieve(self, parameters): + query = NetworkQuery(parameters) + for row in cache.RowGrouper(query.execute(self.con), ('cn', ), ('alias', 'ipNetworkNumber', )): + yield row['cn'], row['alias'], row['ipNetworkNumber'] + + class NetworkRequest(common.Request): def write(self, networkname, aliases, addresses): |