Arthur de Jong

Open Source / Free Software developer

summaryrefslogtreecommitdiffstats
path: root/pynslcd/network.py
diff options
context:
space:
mode:
Diffstat (limited to 'pynslcd/network.py')
-rw-r--r--pynslcd/network.py33
1 files changed, 12 insertions, 21 deletions
diff --git a/pynslcd/network.py b/pynslcd/network.py
index ca54cfe..a056327 100644
--- a/pynslcd/network.py
+++ b/pynslcd/network.py
@@ -18,33 +18,31 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA
-import ldap.filter
+import logging
import constants
import common
-class NetworkRequest(common.Request):
-
- filter = '(objectClass=ipNetwork)'
+attmap = common.Attributes(cn='cn',
+ ipNetworkNumber='ipNetworkNumber')
+filter = '(objectClass=ipNetwork)'
- attmap_cn = 'cn'
- attmap_ipNetworkNumber = 'ipNetworkNumber'
- attributes = ( 'cn', 'ipNetworkNumber' )
+class NetworkRequest(common.Request):
def write(self, dn, attributes):
- networkname = common.get_rdn_value(dn, self.attmap_cn)
- networknames = attributes.get(self.attmap_cn, [])
+ networkname = common.get_rdn_value(dn, attmap['cn'])
+ networknames = attributes['cn']
if not networknames:
- print 'Error: entry %s does not contain %s value' % ( dn, self.attmap_cn)
+ print 'Error: entry %s does not contain %s value' % ( dn, attmap['cn'])
if not networkname:
networkname = networknames.pop(0)
elif networkname in networknames:
networknames.remove(networkname)
- addresses = attributes.get(self.attmap_ipNetworkNumber, [])
+ addresses = attributes['ipNetworkNumber']
if not addresses:
- print 'Error: entry %s does not contain %s value' % ( dn, self.attmap_ipNetworkNumber)
+ print 'Error: entry %s does not contain %s value' % ( dn, attmap['ipNetworkNumber'])
# write result
self.fp.write_int32(constants.NSLCD_RESULT_BEGIN)
self.fp.write_string(networkname)
@@ -57,27 +55,20 @@ class NetworkRequest(common.Request):
class NetworkByNameRequest(NetworkRequest):
action = constants.NSLCD_ACTION_NETWORK_BYNAME
+ filter_attrs = dict(cn='name')
def read_parameters(self):
self.name = self.fp.read_string()
- def mk_filter(self):
- return '(&%s(%s=%s))' % ( self.filter,
- self.attmap_cn, ldap.filter.escape_filter_chars(self.name) )
-
class NetworkByAddressRequest(NetworkRequest):
action = constants.NSLCD_ACTION_NETWORK_BYADDR
+ filter_attrs = dict(ipNetworkNumber='address')
def read_parameters(self):
self.address = self.fp.read_address()
- def mk_filter(self):
- return '(&%s(%s=%s))' % ( self.filter,
- self.attmap_ipNetworkNumber,
- ldap.filter.escape_filter_chars(self.address) )
-
class NetworkAllRequest(NetworkRequest):