]> git.llucax.com Git - software/pymin.git/blobdiff - services/ppp/handler.py
Split proxy handler in submodules (refs #2).
[software/pymin.git] / services / ppp / handler.py
index 9c6bdff6db22d31a1e8372bf31e7e381035ba845..11bdc932679e71206a0f603dc914e7874350e595 100644 (file)
@@ -6,79 +6,14 @@ from os import path
 from signal import SIGTERM
 import logging ; log = logging.getLogger('pymin.services.ppp')
 
-from pymin.seqtools import Sequence
-from pymin.dispatcher import Handler, handler, HandlerError
+from pymin.dispatcher import Handler, handler
 from pymin.service.util import Restorable, ConfigWriter, ReloadHandler, \
-                               TransactionalHandler, DictSubHandler, call
-
-__all__ = ('PppHandler', 'get_service')
-
-
-def get_service(config):
-    return PppHandler(config.ppp.pickle_dir, config.ppp.config_dir)
-
-
-class ConnectionError(HandlerError, KeyError):
-    r"""
-    ConnectionError(hostname) -> ConnectionError instance
-
-    This is the base exception for all connection related errors.
-    """
-
-    def __init__(self, connection):
-        r"Initialize the object. See class documentation for more info."
-        self.message = u'Connection error: "%s"' % connection
-
-class ConnectionNotFoundError(ConnectionError):
-    def __init__(self, connection):
-        r"Initialize the object. See class documentation for more info."
-        self.message = u'Connection not found error: "%s"' % connection
-
-class Connection(Sequence):
-
-    def __init__(self, name, username, password, type, **kw):
-        self.name = name
-        self.username = username
-        self.password = password
-        self.type = type
-        self._running = False
-        if type == 'OE':
-            if not 'device' in kw:
-                raise ConnectionError('Bad arguments for type=OE')
-            self.device = kw['device']
-        elif type == 'TUNNEL':
-            if not 'server' in kw:
-                raise ConnectionError('Bad arguments for type=TUNNEL')
-            self.server = kw['server']
-            self.username = self.username.replace('\\','\\\\')
-        elif type == 'PPP':
-            if not 'device' in kw:
-                raise ConnectionError('Bad arguments for type=PPP')
-            self.device = kw['device']
-        else:
-            raise ConnectionError('Bad arguments, unknown or unspecified type')
-
-    def as_tuple(self):
-        if self.type == 'TUNNEL':
-            return (self.name, self.username, self.password, self.type, self.server)
-        elif self.type == 'PPP' or self.type == 'OE':
-            return (self.name, self.username, self.password, self.type, self.device)
-
-    def update(self, device=None, username=None, password=None):
-        if device is not None:
-            self.device = device
-        if username is not None:
-            self.username = username
-        if password is not None:
-            self.password = password
-
+                               TransactionalHandler, ItemNotFoundError, call
 
-class ConnectionHandler(DictSubHandler):
+from conn import ConnectionHandler
 
-    handler_help = u"Manages connections for the ppp service"
+__all__ = ('PppHandler',)
 
-    _cont_subhandler_attr = 'conns'
-    _cont_subhandler_class = Connection
 
 class PppHandler(Restorable, ConfigWriter, ReloadHandler, TransactionalHandler):
 
@@ -123,7 +58,7 @@ class PppHandler(Restorable, ConfigWriter, ReloadHandler, TransactionalHandler):
                     self._dump_attr('conns')
             else:
                 log.debug(u'PppHandler.start: connection not found')
-                raise ConnectionNotFoundError(name)
+                raise ItemNotFoundError(name)
 
     @handler(u'Stop one or all the connections.')
     def stop(self, name=None):
@@ -153,7 +88,7 @@ class PppHandler(Restorable, ConfigWriter, ReloadHandler, TransactionalHandler):
                     log.debug(u'PppHandler.stop: connection not running')
             else:
                 log.debug(u'PppHandler.stop: connection not found')
-                raise ConnectionNotFoundError(name)
+                raise ItemNotFoundError(name)
 
     @handler(u'Restart one or all the connections (even disconnected ones).')
     def restart(self, name=None):
@@ -187,7 +122,7 @@ class PppHandler(Restorable, ConfigWriter, ReloadHandler, TransactionalHandler):
             return int(self.conns[name]._running)
         else:
             log.debug(u'PppHandler.running: connection not found')
-            raise ConnectionNotFoundError(name)
+            raise ItemNotFoundError(name)
 
     def handle_timer(self):
         log.debug(u'PppHandler.handle_timer()')