From c799b36cbe6c022041996495eade548039292d18 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Sat, 10 May 2008 00:55:59 -0300 Subject: [PATCH] Convert HopHandler to a ListSubHandler (fixes #15, fixes #12). HopHandler was doing all the dirty job in the old fashion. Now it inherits from ListSubHandler, adding code only for the custom checks. --- pymin/services/ip/__init__.py | 65 +++++++---------------------------- 1 file changed, 12 insertions(+), 53 deletions(-) diff --git a/pymin/services/ip/__init__.py b/pymin/services/ip/__init__.py index 9869098..12b53e5 100644 --- a/pymin/services/ip/__init__.py +++ b/pymin/services/ip/__init__.py @@ -9,28 +9,11 @@ from pymin.dispatcher import handler, HandlerError, Handler from pymin.services.util import Restorable, ConfigWriter, InitdHandler, \ TransactionalHandler, SubHandler, call, \ get_network_devices, ListComposedSubHandler, \ - DictComposedSubHandler, Device, Address, \ - ExecutionError + DictComposedSubHandler, ListSubHandler, \ + Device, Address, ExecutionError __all__ = ('IpHandler',) -# TODO: convertir HopHandler a ComposedSubHandler - -class HopError(HandlerError): - - def __init__(self, hop): - self.message = u'Hop error : "%s"' % hop - -class HopNotFoundError(HopError): - - def __init__(self, hop): - self.message = u'Hop not found : "%s"' % hop - -class HopAlreadyExistsError(HopError): - - def __init__(self, hop): - self.message = u'Hop already exists : "%s"' % hop - class Hop(Sequence): @@ -47,47 +30,23 @@ class Hop(Sequence): return 0 return cmp(id(self), id(other)) -class HopHandler(Handler): +class HopHandler(ListSubHandler): + handler_help = u"Manage IP hops" + _cont_subhandler_attr = 'hops' + _cont_subhandler_class = Hop - def __init__(self, parent): - self.parent = parent - - @handler('Adds a hop : add ') - def add(self, gw, dev): + @handler('Add a hop: add ') + def add(self, dev, gw): if not dev in self.parent.devices: raise DeviceNotFoundError(device) - h = Hop(gw, dev) - try: - self.parent.hops.index(h) - raise HopAlreadyExistsError(gw + '->' + dev) - except ValueError: - self.parent.hops.append(h) + return ListSubHandler.add(self, dev, gw) - @handler(u'Deletes a hop : delete ') - def delete(self, gw, dev): + @handler(u'Delete a hop: delete ') + def delete(self, dev, gw): if not dev in self.parent.devices: raise DeviceNotFoundError(device) - h = Hop(gw, dev) - try: - self.parent.hops.remove(h) - except ValueError: - raise HopNotFoundError(gw + '->' + dev) + return ListSubHandler.delete(self, dev, gw) - @handler(u'Lists hops : list ') - def list(self, device): - try: - k = self.parent.hops.keys() - except ValueError: - k = list() - return k - - @handler(u'Get information about all hops: show ') - def show(self, device): - try: - k = self.parent.hops.values() - except ValueError: - k = list() - return k class Route(Sequence): def __init__(self, net_addr, prefix, gateway): -- 2.43.0