Ondřej Svoboda has uploaded a new change for review.

Change subject: netinfo: Add 'bootproto4' to all devices
......................................................................

netinfo: Add 'bootproto4' to all devices

Previously, this information (which deprecated the use of
ifcfg BOOTPROTO property) was added only to devices used by
networks.

By advertising bootproto4 (either 'none' or 'dhcp')
for all devices, new scenario is now possible.

When installing a new host, devices now clearly show in their
bootproto4 parameter that they were either configured by dhclient
('dhcp') or their address was set manually ('none'), regardless
of an ifcfg file having been used.

Change-Id: I88e8a4afa7759d37b9bd5c68a18d38baecfe94a6
Signed-off-by: Ondřej Svoboda <[email protected]>
---
M lib/vdsm/netinfo.py
1 file changed, 21 insertions(+), 26 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/92/28592/1

diff --git a/lib/vdsm/netinfo.py b/lib/vdsm/netinfo.py
index e783b5e..74e8c48 100644
--- a/lib/vdsm/netinfo.py
+++ b/lib/vdsm/netinfo.py
@@ -562,8 +562,8 @@
     return data
 
 
-def _bridgeinfo(link, gateways, ipv6routes, ipaddrs):
-    info = _devinfo(link, ipaddrs)
+def _bridgeinfo(link, gateways, ipv6routes, ipaddrs, dhcp4):
+    info = _devinfo(link, ipaddrs, dhcp4)
     info.update({'gateway': getgateway(gateways, link.name),
                  'ipv6gateway': ipv6routes.get(link.name, '::'),
                  'ports': ports(link.name),
@@ -572,8 +572,8 @@
     return info
 
 
-def _nicinfo(link, paddr, ipaddrs):
-    info = _devinfo(link, ipaddrs)
+def _nicinfo(link, paddr, ipaddrs, dhcp4):
+    info = _devinfo(link, ipaddrs, dhcp4)
     info.update({'hwaddr': link.address, 'speed': nicSpeed(link.name)})
     if paddr.get(link.name):
         info['permhwaddr'] = paddr[link.name]
@@ -650,24 +650,25 @@
                  if val and val != defaults.get(opt)))
 
 
-def _bondinfo(link, ipaddrs):
-    info = _devinfo(link, ipaddrs)
+def _bondinfo(link, ipaddrs, dhcp4):
+    info = _devinfo(link, ipaddrs, dhcp4)
     info.update({'hwaddr': link.address, 'slaves': slaves(link.name)})
     return info
 
 
-def _vlaninfo(link, ipaddrs):
-    info = _devinfo(link, ipaddrs)
+def _vlaninfo(link, ipaddrs, dhcp4):
+    info = _devinfo(link, ipaddrs, dhcp4)
     info.update({'iface': link.device, 'vlanid': link.vlanid})
     return info
 
 
-def _devinfo(link, ipaddrs):
+def _devinfo(link, ipaddrs, dhcp4):
     ipv4addr, ipv4netmask, ipv4addrs, ipv6addrs = getIpInfo(link.name, ipaddrs)
     return {'addr': ipv4addr,
             'cfg': getIfaceCfg(link.name),
             'ipv4addrs': ipv4addrs,
             'ipv6addrs': ipv6addrs,
+            'bootproto4': 'dhcp' if link.name in dhcp4 else 'none',
             'mtu': str(link.mtu),
             'netmask': ipv4netmask}
 
@@ -749,8 +750,7 @@
 
 
 def _libvirtNets2vdsm(nets, gateways=None, ipv6routes=None,
-                      ipAddrs=None):
-    dhcp4 = getDhclientIfaces(_DHCLIENT_LEASES_GLOBS)
+                      ipAddrs=None, dhcp4):
     if gateways is None:
         gateways = getRoutes()
     if ipv6routes is None:
@@ -771,18 +771,11 @@
     return d
 
 
-def _cfgBootprotoCompat(netsAndDevices):
+def _cfgBootprotoCompat(networks):
     """Set network 'cfg' 'BOOTPROTO' for backwards engine compatibility."""
-    for netAttrs in netsAndDevices['networks'].itervalues():
+    for netAttrs in networks.itervalues():
         if netAttrs['bridged']:
             netAttrs['cfg']['BOOTPROTO'] = netAttrs['bootproto4']
-
-        for devType in ('bondings', 'bridges', 'nics', 'vlans'):
-            dev = netsAndDevices[devType].get(netAttrs['iface'])
-
-            if dev:
-                dev['cfg']['BOOTPROTO'] = netAttrs['bootproto4']
-                break
 
 
 def get(vdsmnets=None):
@@ -792,25 +785,27 @@
     ipv6routes = getIPv6Routes()
     paddr = permAddr()
     ipaddrs = _getIpAddrs()
+    dhcp4 = getDhclientIfaces(_DHCLIENT_LEASES_GLOBS)
 
     if vdsmnets is None:
         nets = networks()
-        d['networks'] = _libvirtNets2vdsm(nets, gateways, ipv6routes, ipaddrs)
+        d['networks'] = _libvirtNets2vdsm(nets, gateways, ipv6routes, ipaddrs,
+                                          dhcp4)
     else:
         d['networks'] = vdsmnets
 
     for dev in (link for link in getLinks() if not link.isHidden()):
         if dev.isBRIDGE():
             d['bridges'][dev.name] = \
-                _bridgeinfo(dev, gateways, ipv6routes, ipaddrs)
+                _bridgeinfo(dev, gateways, ipv6routes, ipaddrs, dhcp4)
         elif dev.isNICLike():
-            d['nics'][dev.name] = _nicinfo(dev, paddr, ipaddrs)
+            d['nics'][dev.name] = _nicinfo(dev, paddr, ipaddrs, dhcp4)
         elif dev.isBOND():
-            d['bondings'][dev.name] = _bondinfo(dev, ipaddrs)
+            d['bondings'][dev.name] = _bondinfo(dev, ipaddrs, dhcp4)
         elif dev.isVLAN():
-            d['vlans'][dev.name] = _vlaninfo(dev, ipaddrs)
+            d['vlans'][dev.name] = _vlaninfo(dev, ipaddrs, dhcp4)
 
-    _cfgBootprotoCompat(d)
+    _cfgBootprotoCompat(d['networks'])
 
     return d
 


-- 
To view, visit http://gerrit.ovirt.org/28592
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I88e8a4afa7759d37b9bd5c68a18d38baecfe94a6
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Ondřej Svoboda <[email protected]>
_______________________________________________
vdsm-patches mailing list
[email protected]
https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches

Reply via email to