X-Git-Url: https://git.llucax.com/software/pymin.git/blobdiff_plain/55efba31a241826ed31597b14f2b5eb9efe808f1..07d6251c69d26b80b47ff012c3e44b7e4a366df4:/pymin/services/ip/__init__.py diff --git a/pymin/services/ip/__init__.py b/pymin/services/ip/__init__.py index a7e23cb..86551f4 100644 --- a/pymin/services/ip/__init__.py +++ b/pymin/services/ip/__init__.py @@ -9,27 +9,10 @@ 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 +__all__ = ('IpHandler',) class Hop(Sequence): @@ -47,47 +30,17 @@ class Hop(Sequence): return 0 return cmp(id(self), id(other)) -class HopHandler(Handler): - - def __init__(self, parent): - self.parent = parent - - @handler('Adds a hop : add ') - def add(self, gw, dev): - 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) +class HopHandler(ListSubHandler): + handler_help = u"Manage IP hops" + _cont_subhandler_attr = 'hops' + _cont_subhandler_class = Hop - @handler(u'Deletes a hop : delete ') - def delete(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.remove(h) - except ValueError: - raise HopNotFoundError(gw + '->' + dev) - - @handler(u'Lists hops : list ') - def list(self, device): - try: - k = self.parent.hops.keys() - except ValueError: - k = list() - return k + return ListSubHandler.add(self, dev, gw) - @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):