def _setup_nmstate(networks, bondings, options, in_rollback): """ Setup the networks using nmstate as the backend provider. nmstate handles the rollback by itself in case of an error during the transaction or in case the resulted state does not include the desired one. In order to support the connectivity check, the "regular" rollback is used (the Transaction context). """ logging.info('Processing setup through nmstate') desired_state = nmstate.generate_state(networks, bondings) logging.info('Desired state: %s', desired_state) _setup_dynamic_src_routing(networks) nmstate.setup(desired_state, verify_change=not in_rollback) net_info = NetInfo(netinfo_get()) with Transaction(in_rollback=in_rollback, persistent=False) as config: _setup_qos(networks, net_info, config.networks) for net_name, net_attrs in six.viewitems(networks): if net_attrs.get('remove'): config.removeNetwork(net_name) for net_name, net_attrs in six.viewitems(networks): if not net_attrs.get('remove'): config.setNetwork(net_name, net_attrs) for bond_name, bond_attrs in six.viewitems(bondings): if bond_attrs.get('remove'): config.removeBonding(bond_name) for bond_name, bond_attrs in six.viewitems(bondings): if not bond_attrs.get('remove'): config.setBonding(bond_name, bond_attrs) _setup_static_src_routing(networks) config.save() link_setup.setup_custom_bridge_opts(networks) connectivity.check(options)
def netinfo(vdsmnets=None, compatibility=None): # TODO: Version requests by engine to ease handling of compatibility. _netinfo = netinfo_get(vdsmnets, compatibility) if _is_ovs_service_running(): try: ovs_netinfo = ovs_info.get_netinfo() except ne.OvsDBConnectionError: _is_ovs_service_running.invalidate() raise running_networks = RunningConfig().networks bridgeless_ovs_nets = [ net for net, attrs in six.iteritems(running_networks) if attrs['switch'] == 'ovs' and not attrs['bridged'] ] ovs_info.fake_bridgeless(ovs_netinfo, _netinfo, bridgeless_ovs_nets) for type, entries in six.iteritems(ovs_netinfo): _netinfo[type].update(entries) _set_bond_type_by_usage(_netinfo) return _netinfo
def netinfo(vdsmnets=None, compatibility=None): # TODO: Version requests by engine to ease handling of compatibility. running_config = RunningConfig() _netinfo = netinfo_get(vdsmnets, compatibility) if _is_ovs_service_running(): state = nmstate.state_show() nmstate.ovs_netinfo(_netinfo, running_config.networks, state) _set_bond_type_by_usage(_netinfo) return _netinfo
def netinfo(vdsmnets=None, compatibility=None): # TODO: Version requests by engine to ease handling of compatibility. running_config = RunningConfig() _netinfo = netinfo_get(vdsmnets, compatibility) ovs_nets, _ = util.split_switch_type(running_config.networks, running_config={}) ovs_bonds = util.split_switch_type(running_config.bonds, running_config={}) if ovs_nets or ovs_bonds: state = nmstate.state_show() nmstate.ovs_netinfo(_netinfo, running_config.networks, state) _set_bond_type_by_usage(_netinfo, running_config.bonds) return _netinfo
def _setup_legacy(networks, bondings, options, in_rollback): running_nets = RunningConfig().networks _netinfo = CachingNetInfo(netinfo_get(networks_base_info(running_nets))) with Ifcfg(_netinfo, in_rollback) as configurator: # from this point forward, any exception thrown will be handled by # Configurator.__exit__. legacy_switch.remove_networks(networks, bondings, configurator, _netinfo) legacy_switch.bonds_setup(bondings, configurator, _netinfo, in_rollback) legacy_switch.add_missing_networks(configurator, networks, bondings, _netinfo) connectivity.check(options)
def _setup_legacy(networks, bondings, options, in_rollback): running_nets = RunningConfig().networks _netinfo = CachingNetInfo(netinfo_get(networks_base_info(running_nets))) with Ifcfg(_netinfo, in_rollback) as configurator: # from this point forward, any exception thrown will be handled by # Configurator.__exit__. legacy_switch.remove_networks(networks, bondings, configurator, _netinfo) legacy_switch.bonds_setup(bondings, configurator, _netinfo, in_rollback) legacy_switch.add_missing_networks(configurator, networks, bondings, _netinfo) connectivity.check(options)
def netinfo(compatibility=None): # TODO: Version requests by engine to ease handling of compatibility. _netinfo = netinfo_get(compatibility=compatibility) if _is_ovs_service_running(): ovs_netinfo = ovs_info.get_netinfo() running_networks = RunningConfig().networks bridgeless_ovs_nets = [ net for net, attrs in six.iteritems(running_networks) if attrs['switch'] == 'ovs' and not attrs['bridged']] ovs_info.fake_bridgeless( ovs_netinfo, _netinfo['nics'], bridgeless_ovs_nets) for type, entries in six.iteritems(ovs_netinfo): _netinfo[type].update(entries) return _netinfo
def _setup_legacy(networks, bondings, options, in_rollback): _libvirt_nets = libvirt_nets() _netinfo = CachingNetInfo(netinfo_get(libvirtNets2vdsm(_libvirt_nets))) with legacy_switch.ConfiguratorClass(in_rollback) as configurator: # from this point forward, any exception thrown will be handled by # Configurator.__exit__. legacy_switch.remove_networks(networks, bondings, configurator, _netinfo, _libvirt_nets) legacy_switch.bonds_setup(bondings, configurator, _netinfo, in_rollback) legacy_switch.add_missing_networks(configurator, networks, bondings, _netinfo) connectivity.check(options)
def netinfo(compatibility=None): # TODO: Version requests by engine to ease handling of compatibility. _netinfo = netinfo_get(compatibility=compatibility) if _is_ovs_service_running(): ovs_netinfo = ovs_info.get_netinfo() running_networks = RunningConfig().networks bridgeless_ovs_nets = [ net for net, attrs in six.iteritems(running_networks) if attrs['switch'] == 'ovs' and not attrs['bridged'] ] ovs_info.fake_bridgeless(ovs_netinfo, _netinfo['nics'], bridgeless_ovs_nets) for type, entries in six.iteritems(ovs_netinfo): _netinfo[type].update(entries) return _netinfo
def _setup_legacy(networks, bondings, options, in_rollback): _libvirt_nets = libvirt_nets() _netinfo = CachingNetInfo(netinfo_get(libvirtNets2vdsm(_libvirt_nets))) with legacy_switch.ConfiguratorClass(in_rollback) as configurator: # from this point forward, any exception thrown will be handled by # Configurator.__exit__. legacy_switch.remove_networks(networks, bondings, configurator, _netinfo, _libvirt_nets) legacy_switch.bonds_setup(bondings, configurator, _netinfo, in_rollback) legacy_switch.add_missing_networks(configurator, networks, bondings, _netinfo) connectivity.check(options)
def netinfo(vdsmnets=None, compatibility=None): # TODO: Version requests by engine to ease handling of compatibility. _netinfo = netinfo_get(vdsmnets, compatibility) if _is_ovs_service_running(): try: ovs_netinfo = ovs_info.get_netinfo() except ne.OvsDBConnectionError: _is_ovs_service_running.invalidate() raise running_networks = RunningConfig().networks bridgeless_ovs_nets = [ net for net, attrs in six.iteritems(running_networks) if attrs['switch'] == 'ovs' and not attrs['bridged']] ovs_info.fake_bridgeless( ovs_netinfo, _netinfo, bridgeless_ovs_nets) for type, entries in six.iteritems(ovs_netinfo): _netinfo[type].update(entries) _set_bond_type_by_usage(_netinfo) return _netinfo