Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP2:GA
cloud-init.3244
dataSourceOpenNebula.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File dataSourceOpenNebula.patch of Package cloud-init.3244
--- cloudinit/sources/DataSourceOpenNebula.py.orig +++ cloudinit/sources/DataSourceOpenNebula.py @@ -121,7 +121,7 @@ class BrokenContextDiskDir(Exception): class OpenNebulaNetwork(object): REG_DEV_MAC = re.compile( - r'^\d+: (eth\d+):.*?link\/ether (..:..:..:..:..:..) ?', + r'^\d+: (eth\d+):.*?link\/\W+ (..:..:..:..:..:..) ?', re.MULTILINE | re.DOTALL) def __init__(self, ip, context): @@ -130,12 +130,24 @@ class OpenNebulaNetwork(object): self.ifaces = self.get_ifaces() def get_ifaces(self): - return self.REG_DEV_MAC.findall(self.ip) + list = self.REG_DEV_MAC.findall(self.ip) + ifaces = dict() + for l in list: + ifaces[l[1]] = l[0] + return ifaces def mac2ip(self, mac): components = mac.split(':')[2:] return [str(int(c, 16)) for c in components] + def get_context_interfaces(self): + + def device_mac(t): return re.match(r"ETH\d+_MAC", t) + + mac_vars = filter(device_mac, self.context.keys()) + context_interfaces = [v.split('_')[0] for v in mac_vars] + return context_interfaces + def get_ip(self, dev, components): var_name = dev.upper() + '_IP' if var_name in self.context: @@ -188,27 +200,39 @@ class OpenNebulaNetwork(object): conf.append('iface lo inet loopback') conf.append('') - for i in self.ifaces: - dev = i[0] - mac = i[1] + context_interfaces = self.get_context_interfaces() + + if len(context_interfaces): + try: + (out, _err) = util.subp(["systemctl", "stop", "NetworkManager"]) + (out, _err) = util.subp(["systemctl", "disable", "NetworkManager"]) + except util.ProcessExecutionError: + util.logexc(LOG, "Disable NetworkManager command failed") + + for interface in context_interfaces: + mac = self.context[interface+"_MAC"] + dev = self.ifaces.get(mac) + if dev is None: + continue + ip_components = self.mac2ip(mac) conf.append('auto ' + dev) conf.append('iface ' + dev + ' inet static') - conf.append(' address ' + self.get_ip(dev, ip_components)) - conf.append(' network ' + self.get_network(dev, ip_components)) - conf.append(' netmask ' + self.get_mask(dev)) + conf.append(' address ' + self.get_ip(nterface, ip_components)) + conf.append(' network ' + self.get_network(interface, ip_components)) + conf.append(' netmask ' + self.get_mask(interface)) - gateway = self.get_gateway(dev) + gateway = self.get_gateway(interface) if gateway: conf.append(' gateway ' + gateway) - domain = self.get_domain(dev) + domain = self.get_domain(interface) if domain: conf.append(' dns-search ' + domain) # add global DNS servers to all interfaces - dns = self.get_dns(dev) + dns = self.get_dns(interface) if global_dns or dns: all_dns = global_dns if dns: @@ -375,9 +399,8 @@ def read_context_disk_dir(source_dir, as if ssh_key_var: lines = context.get(ssh_key_var).splitlines() - results['metadata']['public-keys'] = [l for l in lines - if len(l) and not - l.startswith("#")] + ssh_keys = [l for l in lines if len(l) and not l.startswith("#")] + results['metadata']['public-keys'] = ssh_keys # custom hostname -- try hostname or leave cloud-init # itself create hostname from IP address later
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor