Ido Barkan has uploaded a new change for review.
Change subject: factor out parts of setupNetworks for better readability ......................................................................
factor out parts of setupNetworks for better readability
Change-Id: Icb26c288b8f466e5f1009d889dacf3e17d45891c Signed-off-by: ibarkan ibarkan@redhat.com --- M vdsm/network/api.py 1 file changed, 53 insertions(+), 37 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/91/35691/1
diff --git a/vdsm/network/api.py b/vdsm/network/api.py index 6843789..1fa4445 100755 --- a/vdsm/network/api.py +++ b/vdsm/network/api.py @@ -600,6 +600,55 @@ topNetDev.remove()
+def _add_missing_networks(configurator, networks_to_add, bondings, force, + logger, _netinfo=None): + # We need to use the newest host info + if _netinfo is None: + _netinfo = netinfo.NetInfo() + else: + _netinfo.updateDevices() + + for network, attrs in networks_to_add.iteritems(): + d = dict(attrs) + if 'bonding' in d: + d.update(_buildBondOptions(d['bonding'], bondings, _netinfo)) + else: + d['nics'] = [d.pop('nic')] if 'nic' in d else [] + d['force'] = force + + logger.debug("Adding network %r", network) + try: + addNetwork(network, configurator=configurator, + implicitBonding=True, _netinfo=_netinfo, **d) + except ConfigNetworkError as cne: + if cne.errCode == ne.ERR_FAILED_IFUP: + logger.debug("Adding network %r failed. Running " + "orphan-devices cleanup", network) + _emergencyNetworkCleanup(network, attrs, + configurator) + raise + + _netinfo.updateDevices() # Things like a bond mtu can change + + +def _check_connectivity(connectivity_check_networks, networks, bondings, + options, logger): + if utils.tobool(options.get('connectivityCheck', True)): + logger.debug('Checking connectivity...') + if not clientSeen(int(options.get('connectivityTimeout', + CONNECTIVITY_TIMEOUT_DEFAULT))): + logger.info('Connectivity check failed, rolling back') + for network in connectivity_check_networks: + # If the new added network was created on top of + # existing bond, we need to keep the bond on rollback + # flow, else we will break the new created bond. + delNetwork(network, force=True, + implicitBonding=networks[network]. + get('bonding') in bondings) + raise ConfigNetworkError(ne.ERR_LOST_CONNECTION, + 'connectivity check failed') + + def setupNetworks(networks, bondings, **options): """Add/Edit/Remove configuration for networks and bondings.
@@ -701,44 +750,11 @@
_handleBondings(bondings, configurator)
- # We need to use the newest host info - _netinfo.updateDevices() - for network, attrs in networks_to_add.iteritems(): - d = dict(attrs) - if 'bonding' in d: - d.update(_buildBondOptions(d['bonding'], bondings, _netinfo)) - else: - d['nics'] = [d.pop('nic')] if 'nic' in d else [] - d['force'] = force + _add_missing_networks(configurator, networks_to_add, bondings, force, + logger, _netinfo)
- logger.debug("Adding network %r", network) - try: - addNetwork(network, configurator=configurator, - implicitBonding=True, _netinfo=_netinfo, **d) - except ConfigNetworkError as cne: - if cne.errCode == ne.ERR_FAILED_IFUP: - logger.debug("Adding network %r failed. Running " - "orphan-devices cleanup", network) - _emergencyNetworkCleanup(network, attrs, - configurator) - raise - - _netinfo.updateDevices() # Things like a bond mtu can change - - if utils.tobool(options.get('connectivityCheck', True)): - logger.debug('Checking connectivity...') - if not clientSeen(int(options.get('connectivityTimeout', - CONNECTIVITY_TIMEOUT_DEFAULT))): - logger.info('Connectivity check failed, rolling back') - for network in connectivity_check_networks: - # If the new added network was created on top of - # existing bond, we need to keep the bond on rollback - # flow, else we will break the new created bond. - delNetwork(network, force=True, - implicitBonding=networks[network]. - get('bonding') in bondings) - raise ConfigNetworkError(ne.ERR_LOST_CONNECTION, - 'connectivity check failed') + _check_connectivity(connectivity_check_networks, networks, bondings, + options, logger)
hooks.after_network_setup(_buildSetupHookDict(networks, bondings, options))