+ def _write_config_for_device(self, device):
+ r"_write_config_for_device(self, device) -> None :: Execute commands."
+ log.debug(u'IpHandler._write_config_for_device()')
+ try:
+ log.debug(u'IpHandler._write_config_for_device: flushing routes...')
+ call(self._render_config('route_flush', dict(dev=device.name)),
+ shell=True)
+ except ExecutionError, e:
+ log.debug(u'IpHandler._write_config_for_device: error flushing '
+ u'-> %r', e)
+ try:
+ log.debug(u'IpHandler._write_config_for_device: flushing addrs...')
+ call(self._render_config('ip_flush', dict(dev=device.name)),
+ shell=True)
+ except ExecutionError, e:
+ log.debug(u'IpHandler._write_config_for_device: error flushing '
+ u'-> %r', e)
+ for address in device.addrs.values():
+ broadcast = address.broadcast
+ if broadcast is None:
+ broadcast = '+'
+ try:
+ log.debug(u'IpHandler._write_config_for_device: adding %r',
+ address)
+ call(self._render_config('ip_add', dict(
+ dev = device.name,
+ addr = address.ip,
+ netmask = address.netmask,
+ peer = address.peer,
+ broadcast = broadcast,
+ )
+ ), shell=True)
+ except ExecutionError, e:
+ log.debug(u'IpHandler._write_config_for_device: error adding '
+ u'-> %r', e)
+ for route in device.routes:
+ try:
+ log.debug(u'IpHandler._write_config_for_device: adding %r',
+ route)
+ call(self._render_config('route_add', dict(
+ dev = device.name,
+ net_addr = route.net_addr,
+ prefix = route.prefix,
+ gateway = route.gateway,
+ )
+ ), shell=True)
+ except ExecutionError, e:
+ log.debug(u'IpHandler._write_config_for_device: error adding '
+ u'-> %r', e)