summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur de Jong <arthur@arthurdejong.org>2013-08-12 13:26:03 +0200
committerArthur de Jong <arthur@arthurdejong.org>2013-08-17 12:31:36 +0200
commit1b89df59af349feb27205b90727263f17f29a9d8 (patch)
tree4b84a5a633f63200fe089efd0ce220eb3364e661
parent76712760885774f883f7bf79ce97931a6e251428 (diff)
Give cache tables friendlier names
This also defined the tables for netgroup storage.
-rw-r--r--pynslcd/alias.py13
-rw-r--r--pynslcd/cache.py8
-rw-r--r--pynslcd/group.py13
-rw-r--r--pynslcd/host.py22
-rw-r--r--pynslcd/netgroup.py21
-rw-r--r--pynslcd/network.py24
-rw-r--r--pynslcd/protocol.py6
-rw-r--r--pynslcd/rpc.py6
-rw-r--r--pynslcd/service.py22
9 files changed, 74 insertions, 61 deletions
diff --git a/pynslcd/alias.py b/pynslcd/alias.py
index 48eccda..d5ae390 100644
--- a/pynslcd/alias.py
+++ b/pynslcd/alias.py
@@ -37,26 +37,27 @@ class Search(search.LDAPSearch):
class Cache(cache.Cache):
- tables = ('alias_cache', 'alias_1_cache')
+ tables = ('alias_cache', 'alias_member_cache')
create_sql = '''
CREATE TABLE IF NOT EXISTS `alias_cache`
( `cn` TEXT PRIMARY KEY COLLATE NOCASE,
`mtime` TIMESTAMP NOT NULL );
- CREATE TABLE IF NOT EXISTS `alias_1_cache`
+ CREATE TABLE IF NOT EXISTS `alias_member_cache`
( `alias` TEXT NOT NULL COLLATE NOCASE,
`rfc822MailMember` TEXT NOT NULL,
FOREIGN KEY(`alias`) REFERENCES `alias_cache`(`cn`)
ON DELETE CASCADE ON UPDATE CASCADE );
- CREATE INDEX IF NOT EXISTS `alias_1_idx` ON `alias_1_cache`(`alias`);
+ CREATE INDEX IF NOT EXISTS `alias_member_idx` ON `alias_member_cache`(`alias`);
'''
retrieve_sql = '''
SELECT `alias_cache`.`cn` AS `cn`,
- `alias_1_cache`.`rfc822MailMember` AS `rfc822MailMember`
+ `alias_member_cache`.`rfc822MailMember` AS `rfc822MailMember`,
+ `alias_cache`.`mtime` AS `mtime`
FROM `alias_cache`
- LEFT JOIN `alias_1_cache`
- ON `alias_1_cache`.`alias` = `alias_cache`.`cn`
+ LEFT JOIN `alias_member_cache`
+ ON `alias_member_cache`.`alias` = `alias_cache`.`cn`
'''
def retrieve(self, parameters):
diff --git a/pynslcd/cache.py b/pynslcd/cache.py
index 56a83e5..f6d894e 100644
--- a/pynslcd/cache.py
+++ b/pynslcd/cache.py
@@ -59,14 +59,14 @@ class CnAliasedQuery(Query):
sql = '''
SELECT `%(table)s_cache`.*,
- `%(table)s_1_cache`.`cn` AS `alias`
+ `%(table)s_alias_cache`.`cn` AS `alias`
FROM `%(table)s_cache`
- LEFT JOIN `%(table)s_1_cache`
- ON `%(table)s_1_cache`.`%(table)s` = `%(table)s_cache`.`cn`
+ LEFT JOIN `%(table)s_alias_cache`
+ ON `%(table)s_alias_cache`.`%(table)s` = `%(table)s_cache`.`cn`
'''
cn_join = '''
- LEFT JOIN `%(table)s_1_cache` `cn_alias`
+ LEFT JOIN `%(table)s_alias_cache` `cn_alias`
ON `cn_alias`.`%(table)s` = `%(table)s_cache`.`cn`
'''
diff --git a/pynslcd/group.py b/pynslcd/group.py
index aed6cc0..2028f1e 100644
--- a/pynslcd/group.py
+++ b/pynslcd/group.py
@@ -75,7 +75,7 @@ class Search(search.LDAPSearch):
class Cache(cache.Cache):
- tables = ('group_cache', 'group_3_cache')
+ tables = ('group_cache', 'group_member_cache')
create_sql = '''
CREATE TABLE IF NOT EXISTS `group_cache`
@@ -83,19 +83,20 @@ class Cache(cache.Cache):
`userPassword` TEXT,
`gidNumber` INTEGER NOT NULL UNIQUE,
`mtime` TIMESTAMP NOT NULL );
- CREATE TABLE IF NOT EXISTS `group_3_cache`
+ CREATE TABLE IF NOT EXISTS `group_member_cache`
( `group` TEXT NOT NULL,
`memberUid` TEXT NOT NULL,
FOREIGN KEY(`group`) REFERENCES `group_cache`(`cn`)
ON DELETE CASCADE ON UPDATE CASCADE );
- CREATE INDEX IF NOT EXISTS `group_3_idx` ON `group_3_cache`(`group`);
+ CREATE INDEX IF NOT EXISTS `group_member_idx` ON `group_member_cache`(`group`);
'''
retrieve_sql = '''
- SELECT `cn`, `userPassword`, `gidNumber`, `memberUid`
+ SELECT `group_cache`.`cn` AS `cn`, `userPassword`, `gidNumber`,
+ `memberUid`, `mtime`
FROM `group_cache`
- LEFT JOIN `group_3_cache`
- ON `group_3_cache`.`group` = `group_cache`.`cn`
+ LEFT JOIN `group_member_cache`
+ ON `group_member_cache`.`group` = `group_cache`.`cn`
'''
def retrieve(self, parameters):
diff --git a/pynslcd/host.py b/pynslcd/host.py
index 77789ec..91c3fa0 100644
--- a/pynslcd/host.py
+++ b/pynslcd/host.py
@@ -38,13 +38,13 @@ class HostQuery(cache.CnAliasedQuery):
sql = '''
SELECT `host_cache`.`cn` AS `cn`,
- `host_1_cache`.`cn` AS `alias`,
- `host_2_cache`.`ipHostNumber` AS `ipHostNumber`
+ `host_alias_cache`.`cn` AS `alias`,
+ `host_address_cache`.`ipHostNumber` AS `ipHostNumber`
FROM `host_cache`
- LEFT JOIN `host_1_cache`
- ON `host_1_cache`.`host` = `host_cache`.`cn`
- LEFT JOIN `host_2_cache`
- ON `host_2_cache`.`host` = `host_cache`.`cn`
+ LEFT JOIN `host_alias_cache`
+ ON `host_alias_cache`.`host` = `host_cache`.`cn`
+ LEFT JOIN `host_address_cache`
+ ON `host_address_cache`.`host` = `host_cache`.`cn`
'''
def __init__(self, parameters):
@@ -53,24 +53,24 @@ class HostQuery(cache.CnAliasedQuery):
class Cache(cache.Cache):
- tables = ('host_cache', 'host_1_cache', 'host_2_cache')
+ tables = ('host_cache', 'host_alias_cache', 'host_address_cache')
create_sql = '''
CREATE TABLE IF NOT EXISTS `host_cache`
( `cn` TEXT PRIMARY KEY COLLATE NOCASE,
`mtime` TIMESTAMP NOT NULL );
- CREATE TABLE IF NOT EXISTS `host_1_cache`
+ CREATE TABLE IF NOT EXISTS `host_alias_cache`
( `host` TEXT NOT NULL COLLATE NOCASE,
`cn` TEXT NOT NULL COLLATE NOCASE,
FOREIGN KEY(`host`) REFERENCES `host_cache`(`cn`)
ON DELETE CASCADE ON UPDATE CASCADE );
- CREATE INDEX IF NOT EXISTS `host_1_idx` ON `host_1_cache`(`host`);
- CREATE TABLE IF NOT EXISTS `host_2_cache`
+ CREATE INDEX IF NOT EXISTS `host_alias_idx` ON `host_alias_cache`(`host`);
+ CREATE TABLE IF NOT EXISTS `host_address_cache`
( `host` TEXT NOT NULL COLLATE NOCASE,
`ipHostNumber` TEXT NOT NULL,
FOREIGN KEY(`host`) REFERENCES `host_cache`(`cn`)
ON DELETE CASCADE ON UPDATE CASCADE );
- CREATE INDEX IF NOT EXISTS `host_2_idx` ON `host_2_cache`(`host`);
+ CREATE INDEX IF NOT EXISTS `host_address_idx` ON `host_address_cache`(`host`);
'''
def retrieve(self, parameters):
diff --git a/pynslcd/netgroup.py b/pynslcd/netgroup.py
index 7be2936..1de60bf 100644
--- a/pynslcd/netgroup.py
+++ b/pynslcd/netgroup.py
@@ -43,13 +43,24 @@ class Search(search.LDAPSearch):
class Cache(cache.Cache):
+ tables = ('netgroup_cache', 'netgroup_triple_cache', 'netgroup_member_cache')
+
create_sql = '''
- -- FIXME: this does not work as entries are never removed from the cache
CREATE TABLE IF NOT EXISTS `netgroup_cache`
- ( `cn` TEXT NOT NULL,
- `member` TEXT NOT NULL,
- `mtime` TIMESTAMP NOT NULL,
- UNIQUE (`cn`, `member`) );
+ ( `cn` TEXT PRIMARY KEY COLLATE NOCASE,
+ `mtime` TIMESTAMP NOT NULL );
+ CREATE TABLE IF NOT EXISTS `netgroup_triple_cache`
+ ( `netgroup` TEXT NOT NULL COLLATE NOCASE,
+ `nisNetgroupTriple` TEXT NOT NULL COLLATE NOCASE,
+ FOREIGN KEY(`netgroup`) REFERENCES `netgroup_cache`(`cn`)
+ ON DELETE CASCADE ON UPDATE CASCADE );
+ CREATE INDEX IF NOT EXISTS `netgroup_triple_idx` ON `netgroup_triple_cache`(`netgroup`);
+ CREATE TABLE IF NOT EXISTS `netgroup_member_cache`
+ ( `netgroup` TEXT NOT NULL COLLATE NOCASE,
+ `memberNisNetgroup` TEXT NOT NULL,
+ FOREIGN KEY(`netgroup`) REFERENCES `netgroup_cache`(`cn`)
+ ON DELETE CASCADE ON UPDATE CASCADE );
+ CREATE INDEX IF NOT EXISTS `netgroup_membe_idx` ON `netgroup_member_cache`(`netgroup`);
'''
diff --git a/pynslcd/network.py b/pynslcd/network.py
index 5a43b93..bf49b4d 100644
--- a/pynslcd/network.py
+++ b/pynslcd/network.py
@@ -39,13 +39,13 @@ class NetworkQuery(cache.CnAliasedQuery):
sql = '''
SELECT `network_cache`.`cn` AS `cn`,
- `network_1_cache`.`cn` AS `alias`,
- `network_2_cache`.`ipNetworkNumber` AS `ipNetworkNumber`
+ `network_alias_cache`.`cn` AS `alias`,
+ `network_address_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`
+ LEFT JOIN `network_alias_cache`
+ ON `network_alias_cache`.`network` = `network_cache`.`cn`
+ LEFT JOIN `network_address_cache`
+ ON `network_address_cache`.`network` = `network_cache`.`cn`
'''
def __init__(self, parameters):
@@ -54,24 +54,24 @@ class NetworkQuery(cache.CnAliasedQuery):
class Cache(cache.Cache):
- tables = ('network_cache', 'network_1_cache', 'network_2_cache')
+ tables = ('network_cache', 'network_alias_cache', 'network_address_cache')
create_sql = '''
CREATE TABLE IF NOT EXISTS `network_cache`
( `cn` TEXT PRIMARY KEY COLLATE NOCASE,
`mtime` TIMESTAMP NOT NULL );
- CREATE TABLE IF NOT EXISTS `network_1_cache`
+ CREATE TABLE IF NOT EXISTS `network_alias_cache`
( `network` TEXT NOT NULL COLLATE NOCASE,
`cn` TEXT NOT NULL COLLATE NOCASE,
FOREIGN KEY(`network`) REFERENCES `network_cache`(`cn`)
ON DELETE CASCADE ON UPDATE CASCADE );
- CREATE INDEX IF NOT EXISTS `network_1_idx` ON `network_1_cache`(`network`);
- CREATE TABLE IF NOT EXISTS `network_2_cache`
- ( `network` TEXT NOT NULL,
+ CREATE INDEX IF NOT EXISTS `network_alias_idx` ON `network_alias_cache`(`network`);
+ CREATE TABLE IF NOT EXISTS `network_address_cache`
+ ( `network` TEXT NOT NULL COLLATE NOCASE,
`ipNetworkNumber` TEXT NOT NULL,
FOREIGN KEY(`network`) REFERENCES `network_cache`(`cn`)
ON DELETE CASCADE ON UPDATE CASCADE );
- CREATE INDEX IF NOT EXISTS `network_2_idx` ON `network_2_cache`(`network`);
+ CREATE INDEX IF NOT EXISTS `network_address_idx` ON `network_address_cache`(`network`);
'''
def retrieve(self, parameters):
diff --git a/pynslcd/protocol.py b/pynslcd/protocol.py
index 7684161..122673d 100644
--- a/pynslcd/protocol.py
+++ b/pynslcd/protocol.py
@@ -37,19 +37,19 @@ class Search(search.LDAPSearch):
class Cache(cache.Cache):
- tables = ('protocol_cache', 'protocol_1_cache')
+ tables = ('protocol_cache', 'protocol_alias_cache')
create_sql = '''
CREATE TABLE IF NOT EXISTS `protocol_cache`
( `cn` TEXT PRIMARY KEY,
`ipProtocolNumber` INTEGER NOT NULL,
`mtime` TIMESTAMP NOT NULL );
- CREATE TABLE IF NOT EXISTS `protocol_1_cache`
+ CREATE TABLE IF NOT EXISTS `protocol_alias_cache`
( `protocol` TEXT NOT NULL,
`cn` TEXT NOT NULL,
FOREIGN KEY(`protocol`) REFERENCES `protocol_cache`(`cn`)
ON DELETE CASCADE ON UPDATE CASCADE );
- CREATE INDEX IF NOT EXISTS `protocol_1_idx` ON `protocol_1_cache`(`protocol`);
+ CREATE INDEX IF NOT EXISTS `protocol_alias_idx` ON `protocol_alias_cache`(`protocol`);
'''
def retrieve(self, parameters):
diff --git a/pynslcd/rpc.py b/pynslcd/rpc.py
index efb6cb9..98a0ecc 100644
--- a/pynslcd/rpc.py
+++ b/pynslcd/rpc.py
@@ -37,19 +37,19 @@ class Search(search.LDAPSearch):
class Cache(cache.Cache):
- tables = ('rpc_cache', 'rpc_1_cache')
+ tables = ('rpc_cache', 'rpc_alias_cache')
create_sql = '''
CREATE TABLE IF NOT EXISTS `rpc_cache`
( `cn` TEXT PRIMARY KEY,
`oncRpcNumber` INTEGER NOT NULL,
`mtime` TIMESTAMP NOT NULL );
- CREATE TABLE IF NOT EXISTS `rpc_1_cache`
+ CREATE TABLE IF NOT EXISTS `rpc_alias_cache`
( `rpc` TEXT NOT NULL,
`cn` TEXT NOT NULL,
FOREIGN KEY(`rpc`) REFERENCES `rpc_cache`(`cn`)
ON DELETE CASCADE ON UPDATE CASCADE );
- CREATE INDEX IF NOT EXISTS `rpc_1_idx` ON `rpc_1_cache`(`rpc`);
+ CREATE INDEX IF NOT EXISTS `rpc_alias_idx` ON `rpc_alias_cache`(`rpc`);
'''
def retrieve(self, parameters):
diff --git a/pynslcd/service.py b/pynslcd/service.py
index 6b3424e..6f55cc1 100644
--- a/pynslcd/service.py
+++ b/pynslcd/service.py
@@ -44,15 +44,15 @@ class ServiceQuery(cache.CnAliasedQuery):
sql = '''
SELECT `service_cache`.*,
- `service_1_cache`.`cn` AS `alias`
+ `service_alias_cache`.`cn` AS `alias`
FROM `service_cache`
- LEFT JOIN `service_1_cache`
- ON `service_1_cache`.`ipServicePort` = `service_cache`.`ipServicePort`
- AND `service_1_cache`.`ipServiceProtocol` = `service_cache`.`ipServiceProtocol`
+ LEFT JOIN `service_alias_cache`
+ ON `service_alias_cache`.`ipServicePort` = `service_cache`.`ipServicePort`
+ AND `service_alias_cache`.`ipServiceProtocol` = `service_cache`.`ipServiceProtocol`
'''
cn_join = '''
- LEFT JOIN `service_1_cache` `cn_alias`
+ LEFT JOIN `service_alias_cache` `cn_alias`
ON `cn_alias`.`ipServicePort` = `service_cache`.`ipServicePort`
AND `cn_alias`.`ipServiceProtocol` = `service_cache`.`ipServiceProtocol`
'''
@@ -69,7 +69,7 @@ class ServiceQuery(cache.CnAliasedQuery):
class Cache(cache.Cache):
- tables = ('service_cache', 'service_1_cache')
+ tables = ('service_cache', 'service_alias_cache')
create_sql = '''
CREATE TABLE IF NOT EXISTS `service_cache`
@@ -78,7 +78,7 @@ class Cache(cache.Cache):
`ipServiceProtocol` TEXT NOT NULL,
`mtime` TIMESTAMP NOT NULL,
UNIQUE (`ipServicePort`, `ipServiceProtocol`) );
- CREATE TABLE IF NOT EXISTS `service_1_cache`
+ CREATE TABLE IF NOT EXISTS `service_alias_cache`
( `ipServicePort` INTEGER NOT NULL,
`ipServiceProtocol` TEXT NOT NULL,
`cn` TEXT NOT NULL,
@@ -86,8 +86,8 @@ class Cache(cache.Cache):
ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY(`ipServiceProtocol`) REFERENCES `service_cache`(`ipServiceProtocol`)
ON DELETE CASCADE ON UPDATE CASCADE );
- CREATE INDEX IF NOT EXISTS `service_1_idx1` ON `service_1_cache`(`ipServicePort`);
- CREATE INDEX IF NOT EXISTS `service_1_idx2` ON `service_1_cache`(`ipServiceProtocol`);
+ CREATE INDEX IF NOT EXISTS `service_alias_idx1` ON `service_alias_cache`(`ipServicePort`);
+ CREATE INDEX IF NOT EXISTS `service_alias_idx2` ON `service_alias_cache`(`ipServiceProtocol`);
'''
def store(self, name, aliases, port, protocol):
@@ -97,12 +97,12 @@ class Cache(cache.Cache):
(?, ?, ?, ?)
''', (name, port, protocol, datetime.datetime.now()))
self.con.execute('''
- DELETE FROM `service_1_cache`
+ DELETE FROM `service_alias_cache`
WHERE `ipServicePort` = ?
AND `ipServiceProtocol` = ?
''', (port, protocol))
self.con.executemany('''
- INSERT INTO `service_1_cache`
+ INSERT INTO `service_alias_cache`
VALUES
(?, ?, ?)
''', ((port, protocol, alias) for alias in aliases))