Arthur de Jong

Open Source / Free Software developer

summaryrefslogtreecommitdiffstats
path: root/pynslcd/network.py
diff options
context:
space:
mode:
authorArthur de Jong <arthur@arthurdejong.org>2012-01-29 16:13:25 +0100
committerArthur de Jong <arthur@arthurdejong.org>2012-01-29 16:13:25 +0100
commit4c31632a1cf1a89fc685931986653581b2623f02 (patch)
treecdb2f5ad651760eaa89c5ed10e05e2787c21cde1 /pynslcd/network.py
parent0ddbc4563992e3e27a8e2fd1a343a855af6af151 (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.py26
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):