# TODO: convertir HopHandler a ComposedSubHandler
-class HopError(Error):
+class HopError(HandlerError):
def __init__(self, hop):
self.message = u'Hop error : "%s"' % hop
self._config_writer_cfg_dir = config_dir
self._config_build_templates()
self._restore()
+ self._write_config()
self.addr = AddressHandler(self)
self.route = RouteHandler(self)
self.dev = DeviceHandler(self)
def _write_config(self):
r"_write_config() -> None :: Execute all commands."
for device in self.devices.values():
- #call(self._render_config('route_flush', dict(dev=device.name)), shell=True)
- print self._render_config('route_flush', dict(dev=device.name))
- #call(self._render_config('ip_flush', dict(dev=device.name)), shell=True)
- print self._render_config('ip_flush', dict(dev=device.name))
+ call(self._render_config('route_flush', dict(dev=device.name)), shell=True)
+ call(self._render_config('ip_flush', dict(dev=device.name)), shell=True)
for address in device.addrs.values():
- print self._render_config('ip_add', dict(
+ broadcast = address.broadcast
+ if broadcast is None:
+ broadcast = '+'
+ call(self._render_config('ip_add', dict(
dev = device.name,
addr = address.ip,
netmask = address.netmask,
- broadcast = address.broadcast,
- ))
- #call(self._render_config('ip_add', dict(
- #dev = device.name,
- #addr = address.ip,
- #prefix = address.prefix,
- #broadcast = address.broadcast,
- #)
- #), shell=True)
+ broadcast = broadcast,
+ )
+ ), shell=True)
for route in device.routes:
- print self._render_config('route_add', dict(
+ call(self._render_config('route_add', dict(
dev = device.name,
net_addr = route.net_addr,
prefix = route.prefix,
gateway = route.gateway,
- ))
- #call(self._render_config('route_add', dict(
- #dev = device.name,
- #net_addr = route.net_addr,
- #prefix = route.prefix,
- #gateway = route.gateway,
- #)
- #), shell=True)
+ )
+ ), shell=True)
if self.hops:
- print 'ip route del default'
- #call('ip route del default', shell=True)
- print self._render_config('hop', dict(
+ call('ip route del default', shell=True)
+ call(self._render_config('hop', dict(
hops = self.hops,
- ))
- #call(self._render_config('hop', dict(
- #hops = self.hops,
- #)
- #), shell=True)
+ )
+ ), shell=True)
+
+
+ def handle_timer(self):
+ self.refresh_devices()
+
+
+ def refresh_devices(self):
+ devices = get_network_devices()
+ #add not registered devices
+ for k,v in devices.items():
+ if k not in self.devices:
+ self.devices[k] = Device(k,v)
+ #delete dead devices
+ for k in self.devices.keys():
+ if k not in devices:
+ del self.devices[k]
+
if __name__ == '__main__':
- ip = IpHandler()
+ ip = IpHanlder()
print '----------------------'
ip.hop.add('201.21.32.53','eth0')
ip.hop.add('205.65.65.25','eth1')