1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124 | diff --git a/cloudinit/distros/opensuse.py b/cloudinit/distros/opensuse.py
index a219e9fb..4d14691c 100644
--- a/cloudinit/distros/opensuse.py
+++ b/cloudinit/distros/opensuse.py
@@ -22,6 +22,10 @@ from cloudinit.settings import PER_INSTANCE
LOG = logging.getLogger(__name__)
+SCRIPT_PATH_TPL = '/etc/sysconfig/network/ifcfg-%s'
+ROUTE_CONFIG_PATH_TPL = '/etc/sysconfig/network/ifroute-%s'
+RESOLVE_CONF_PATH = '/etc/resolv.conf'
+
class Distro(distros.Distro):
clock_conf_fn = '/etc/sysconfig/clock'
@@ -29,9 +33,6 @@ class Distro(distros.Distro):
init_cmd = ['service']
locale_conf_fn = '/etc/sysconfig/language'
network_conf_fn = '/etc/sysconfig/network'
- network_script_tpl = '/etc/sysconfig/network/ifcfg-%s'
- resolve_conf_fn = '/etc/resolv.conf'
- route_conf_tpl = '/etc/sysconfig/network/ifroute-%s'
systemd_hostname_conf_fn = '/etc/hostname'
systemd_locale_conf_fn = '/etc/locale.conf'
tz_local_fn = '/etc/localtime'
@@ -164,49 +165,54 @@ class Distro(distros.Distro):
util.write_file(out_fn, str(conf), 0o644)
def _write_network(self, settings):
- # Convert debian settings to ifcfg format
- entries = net_util.translate_network(settings)
- LOG.debug("Translated ubuntu style network settings %s into %s",
- settings, entries)
- # Make the intermediate format as the suse format...
- nameservers = []
- searchservers = []
- dev_names = entries.keys()
- for (dev, info) in entries.items():
- net_fn = self.network_script_tpl % (dev)
- route_fn = self.route_conf_tpl % (dev)
- mode = None
- if info.get('auto', None):
- mode = 'auto'
- else:
- mode = 'manual'
- bootproto = info.get('bootproto', None)
- gateway = info.get('gateway', None)
- net_cfg = {
- 'BOOTPROTO': bootproto,
- 'BROADCAST': info.get('broadcast'),
- 'GATEWAY': gateway,
- 'IPADDR': info.get('address'),
- 'LLADDR': info.get('hwaddress'),
- 'NETMASK': info.get('netmask'),
- 'STARTMODE': mode,
- 'USERCONTROL': 'no'
- }
- if dev != 'lo':
- net_cfg['ETHTOOL_OPTIONS'] = ''
- else:
- net_cfg['FIREWALL'] = 'no'
- rhutil.update_sysconfig_file(net_fn, net_cfg, True)
- if gateway and bootproto == 'static':
- default_route = 'default %s' % gateway
- util.write_file(route_fn, default_route, 0o644)
- if 'dns-nameservers' in info:
- nameservers.extend(info['dns-nameservers'])
- if 'dns-search' in info:
- searchservers.extend(info['dns-search'])
- if nameservers or searchservers:
- rhutil.update_resolve_conf_file(self.resolve_conf_fn,
- nameservers, searchservers)
- return dev_names
+ return write_network_from_eni(settings)
+
+
+def write_network_from_eni(eni, target="/"):
+ # Convert debian settings to ifcfg format
+ entries = net_util.translate_network(eni)
+ LOG.debug("Translated ubuntu style network settings %s into %s",
+ eni, entries)
+ # Make the intermediate format as the suse format...
+ nameservers = []
+ searchservers = []
+ dev_names = entries.keys()
+ for (dev, info) in entries.items():
+ net_fn = util.target_path(target, SCRIPT_PATH_TPL % (dev))
+ route_fn = util.target_path(target, ROUTE_CONFIG_PATH_TPL % (dev))
+ mode = None
+ if info.get('auto', None):
+ mode = 'auto'
+ else:
+ mode = 'manual'
+ bootproto = info.get('bootproto', None)
+ gateway = info.get('gateway', None)
+ net_cfg = {
+ 'BOOTPROTO': bootproto,
+ 'BROADCAST': info.get('broadcast'),
+ 'GATEWAY': gateway,
+ 'IPADDR': info.get('address'),
+ 'LLADDR': info.get('hwaddress'),
+ 'NETMASK': info.get('netmask'),
+ 'STARTMODE': mode,
+ 'USERCONTROL': 'no'
+ }
+ if dev != 'lo':
+ net_cfg['ETHTOOL_OPTIONS'] = ''
+ else:
+ net_cfg['FIREWALL'] = 'no'
+ rhutil.update_sysconfig_file(net_fn, net_cfg, True)
+ if gateway and bootproto == 'static':
+ default_route = 'default %s' % gateway
+ util.write_file(route_fn, default_route, 0o644)
+ if 'dns-nameservers' in info:
+ nameservers.extend(info['dns-nameservers'])
+ if 'dns-search' in info:
+ searchservers.extend(info['dns-search'])
+ if nameservers or searchservers:
+ rhutil.update_resolve_conf_file(
+ util.target_path(target, RESOLVE_CONF_PATH),
+ nameservers, searchservers)
+ return dev_names
# vi: ts=4 expandtab
|