]> git.llucax.com Git - software/pymin.git/blobdiff - pymin/services/dns/__init__.py
Add support to "operation tagging" to ListSubHandler and DictSubHandler.
[software/pymin.git] / pymin / services / dns / __init__.py
index 3736a254330742a00b6a97abfa9152fbcaa1c4dd..32e177221607975ac820a0ad4774cb0a2f96ef3b 100644 (file)
@@ -8,7 +8,8 @@ from new import instancemethod
 from pymin.seqtools import Sequence
 from pymin.dispatcher import handler, HandlerError, Handler
 from pymin.services.util import Restorable, ConfigWriter, InitdHandler, \
 from pymin.seqtools import Sequence
 from pymin.dispatcher import handler, HandlerError, Handler
 from pymin.services.util import Restorable, ConfigWriter, InitdHandler, \
-                                TransactionalHandler, ParametersHandler, call
+                                TransactionalHandler, ParametersHandler, \
+                                SubHandler, call
 
 __ALL__ = ('DnsHandler', 'Error',
             'ZoneError', 'ZoneNotFoundError', 'ZoneAlreadyExistsError',
 
 __ALL__ = ('DnsHandler', 'Error',
             'ZoneError', 'ZoneNotFoundError', 'ZoneAlreadyExistsError',
@@ -177,13 +178,10 @@ class Host(Sequence):
     def as_tuple(self):
         return (self.name, self.ip)
 
     def as_tuple(self):
         return (self.name, self.ip)
 
-class HostHandler(Handler):
+class HostHandler(SubHandler):
 
     handler_help = u"Manage DNS hosts"
 
 
     handler_help = u"Manage DNS hosts"
 
-    def __init__(self, parent):
-        self.parent = parent
-
     @handler(u'Adds a host to a zone')
     def add(self, name, hostname, ip):
         if not name in self.parent.zones:
     @handler(u'Adds a host to a zone')
     def add(self, name, hostname, ip):
         if not name in self.parent.zones:
@@ -229,13 +227,10 @@ class MailExchange(Sequence):
     def as_tuple(self):
         return (self.mx, self.prio)
 
     def as_tuple(self):
         return (self.mx, self.prio)
 
-class MailExchangeHandler(Handler):
+class MailExchangeHandler(SubHandler):
 
     handler_help = u"Manage DNS mail exchangers (MX)"
 
 
     handler_help = u"Manage DNS mail exchangers (MX)"
 
-    def __init__(self, parent):
-        self.parent = parent
-
     @handler(u'Adds a mail exchange to a zone')
     def add(self, zonename, mx, prio):
         if not zonename in self.parent.zones:
     @handler(u'Adds a mail exchange to a zone')
     def add(self, zonename, mx, prio):
         if not zonename in self.parent.zones:
@@ -280,13 +275,10 @@ class NameServer(Sequence):
     def as_tuple(self):
         return (self.name)
 
     def as_tuple(self):
         return (self.name)
 
-class NameServerHandler(Handler):
+class NameServerHandler(SubHandler):
 
     handler_help = u"Manage DNS name servers (NS)"
 
 
     handler_help = u"Manage DNS name servers (NS)"
 
-    def __init__(self, parent):
-        self.parent = parent
-
     @handler(u'Adds a name server to a zone')
     def add(self, zone, ns):
         if not zone in self.parent.zones:
     @handler(u'Adds a name server to a zone')
     def add(self, zone, ns):
         if not zone in self.parent.zones:
@@ -327,7 +319,7 @@ class Zone(Sequence):
     def as_tuple(self):
         return (self.name, self.hosts, self.mxs, self.nss)
 
     def as_tuple(self):
         return (self.name, self.hosts, self.mxs, self.nss)
 
-class ZoneHandler(Handler):
+class ZoneHandler(SubHandler):
     r"""ZoneHandler(parent.zones) -> ZoneHandler instance :: Handle a list of zones.
 
     This class is a helper for DnsHandler to do all the work related to zone
     r"""ZoneHandler(parent.zones) -> ZoneHandler instance :: Handle a list of zones.
 
     This class is a helper for DnsHandler to do all the work related to zone
@@ -338,9 +330,6 @@ class ZoneHandler(Handler):
 
     handler_help = u"Manage DNS zones"
 
 
     handler_help = u"Manage DNS zones"
 
-    def __init__(self, parent):
-        self.parent = parent
-
     @handler(u'Adds a zone')
     def add(self, name):
         if name in self.parent.zones:
     @handler(u'Adds a zone')
     def add(self, name):
         if name in self.parent.zones:
@@ -352,7 +341,6 @@ class ZoneHandler(Handler):
         self.parent.zones[name].mod = True
         self.parent.zones[name].new = True
 
         self.parent.zones[name].mod = True
         self.parent.zones[name].new = True
 
-
     @handler(u'Deletes a zone')
     def delete(self, name):
         r"delete(name) -> None :: Delete a zone from the zone list."
     @handler(u'Deletes a zone')
     def delete(self, name):
         r"delete(name) -> None :: Delete a zone from the zone list."
@@ -401,7 +389,7 @@ class DnsHandler(Restorable, ConfigWriter, InitdHandler, TransactionalHandler,
     _config_writer_files = ('named.conf', 'zoneX.zone')
     _config_writer_tpl_dir = path.join(path.dirname(__file__), 'templates')
 
     _config_writer_files = ('named.conf', 'zoneX.zone')
     _config_writer_tpl_dir = path.join(path.dirname(__file__), 'templates')
 
-    def __init__(self, pickle_dir='.', config_dir='.'):
+    def __init__(self, pickle_dir='.', config_dir={'named.conf':'.', 'zoneX.zone':'.'}):
         r"Initialize DnsHandler object, see class documentation for details."
         self._persistent_dir = pickle_dir
         self._config_writer_cfg_dir = config_dir
         r"Initialize DnsHandler object, see class documentation for details."
         self._persistent_dir = pickle_dir
         self._config_writer_cfg_dir = config_dir