297
296
'config': [devs[d] for d in sorted(devs)]}
300
class Renderer(object):
299
class Renderer(renderer.Renderer):
301
300
"""Renders network information in a /etc/network/interfaces format."""
302
def __init__(self, config=None):
305
self.eni_path = config.get('eni_path', 'etc/network/interfaces')
306
self.links_path_prefix = config.get(
307
'links_path_prefix', 'etc/systemd/network/50-cloud-init-')
308
self.netrules_path = config.get(
309
'netrules_path', 'etc/udev/rules.d/70-persistent-net.rules')
303
311
def _render_persistent_net(self, network_state):
304
312
"""Given state, emit udev rules to map mac to ifname."""
419
427
content = content.replace('mac_address', 'hwaddress')
422
def render_network_state(
423
self, target, network_state, eni="etc/network/interfaces",
424
links_prefix=LINKS_FNAME_PREFIX,
425
netrules='etc/udev/rules.d/70-persistent-net.rules',
428
fpeni = os.path.sep.join((target, eni,))
430
def render_network_state(self, target, network_state):
431
fpeni = os.path.join(target, self.eni_path)
429
432
util.ensure_dir(os.path.dirname(fpeni))
430
433
util.write_file(fpeni, self._render_interfaces(network_state))
433
netrules = os.path.sep.join((target, netrules,))
435
if self.netrules_path:
436
netrules = os.path.join(target, self.netrules_path)
434
437
util.ensure_dir(os.path.dirname(netrules))
435
438
util.write_file(netrules,
436
439
self._render_persistent_net(network_state))
441
if self.links_path_prefix:
439
442
self._render_systemd_links(target, network_state,
440
links_prefix=links_prefix)
443
links_prefix=self.links_path_prefix)
442
def _render_systemd_links(self, target, network_state,
443
links_prefix=LINKS_FNAME_PREFIX):
444
fp_prefix = os.path.sep.join((target, links_prefix))
445
def _render_systemd_links(self, target, network_state, links_prefix):
446
fp_prefix = os.path.join(target, links_prefix)
445
447
for f in glob.glob(fp_prefix + "*"):
447
449
for iface in network_state.iter_interfaces():