~harlowja/cloud-init/cloud-init-net-sysconfig

« back to all changes in this revision

Viewing changes to cloudinit/net/eni.py

  • Committer: Joshua Harlow
  • Date: 2016-06-15 23:11:24 UTC
  • Revision ID: harlowja@gmail.com-20160615231124-8dqzc0ok3u7pz7re
Fixup code review comments

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
import os
17
17
import re
18
18
 
19
 
from . import LINKS_FNAME_PREFIX
20
19
from . import ParserError
21
20
 
22
 
from .udev import generate_udev_rule
 
21
from . import renderer
23
22
 
24
23
from cloudinit import util
25
24
 
297
296
            'config': [devs[d] for d in sorted(devs)]}
298
297
 
299
298
 
300
 
class Renderer(object):
 
299
class Renderer(renderer.Renderer):
301
300
    """Renders network information in a /etc/network/interfaces format."""
302
301
 
 
302
    def __init__(self, config=None):
 
303
        if not config:
 
304
            config = {}
 
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')
 
310
 
303
311
    def _render_persistent_net(self, network_state):
304
312
        """Given state, emit udev rules to map mac to ifname."""
305
313
        content = ""
419
427
        content = content.replace('mac_address', 'hwaddress')
420
428
        return content
421
429
 
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',
426
 
            writer=None):
427
 
 
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))
431
434
 
432
 
        if netrules:
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))
437
440
 
438
 
        if links_prefix:
 
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)
441
444
 
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 + "*"):
446
448
            os.unlink(f)
447
449
        for iface in network_state.iter_interfaces():