def showNetwork(network): _netinfo = CachingNetInfo() if network not in _netinfo.networks: print("Network %r doesn't exist" % network) return bridged = _netinfo.networks[network]['bridged'] print("Network %s(Bridged: %s):" % (network, bridged)) nics, vlan, vlan_id, bonding = _netinfo.getNicsVlanAndBondingForNetwork( network) if bridged: ipaddr = _netinfo.networks[network]['addr'] netmask = _netinfo.networks[network]['netmask'] gateway = _netinfo.networks[network]['gateway'] print("ipaddr=%s, netmask=%s, gateway=%s" % (ipaddr, netmask, gateway)) else: iface = _netinfo.networks[network]['iface'] ipaddr = _netinfo.nics[iface]['addr'] netmask = _netinfo.nics[iface]['netmask'] print("ipaddr=%s, netmask=%s" % (ipaddr, netmask)) print("vlan=%s, bonding=%s, nics=%s" % (vlan_id, bonding, nics))
def _delNetwork(network, vlan=None, bonding=None, nics=None, bypassValidation=False, configurator=None, implicitBonding=True, _netinfo=None, keep_bridge=False, **options): if _netinfo is None: _netinfo = CachingNetInfo() if configurator is None: configurator = ConfiguratorClass() if network not in _netinfo.networks: logging.info("Network %r: doesn't exist in libvirt database", network) vlan = _vlanToInternalRepresentation(vlan) _delNonVdsmNetwork(network, vlan, bonding, nics, _netinfo, configurator) return nics, vlan, vlan_id, bonding = _netinfo.getNicsVlanAndBondingForNetwork( network) bridged = _netinfo.networks[network]['bridged'] logging.info("Removing network %s with vlan=%s, bonding=%s, nics=%s," "keep_bridge=%s options=%s", network, vlan, bonding, nics, keep_bridge, options) if not bypassValidation: _validateDelNetwork(network, vlan, bonding, nics, bridged and not keep_bridge, _netinfo) net_ent = _objectivizeNetwork(bridge=network if bridged else None, vlan=vlan, vlan_id=vlan_id, bonding=bonding, nics=nics, _netinfo=_netinfo, configurator=configurator, implicitBonding=implicitBonding) net_ent.ipv4.bootproto = ( 'dhcp' if _netinfo.networks[network]['dhcpv4'] else 'none') if bridged and keep_bridge: # we now leave the bridge intact but delete everything underneath it net_ent_to_remove = net_ent.port if net_ent_to_remove is not None: # the configurator will not allow us to remove a bridge interface # (be it vlan, bond or nic) unless it is not used anymore. Since # we are interested to leave the bridge here, we have to disconnect # it from the device so that the configurator will allow its # removal. _disconnect_bridge_port(net_ent_to_remove.name) else: net_ent_to_remove = net_ent # We must first remove the libvirt network and then the network entity. # Otherwise if we first remove the network entity while the libvirt # network is still up, the network entity (In some flows) thinks that # it still has users and thus does not allow its removal configurator.removeLibvirtNetwork(network) if net_ent_to_remove is not None: logging.info('Removing network entity %s', net_ent_to_remove) net_ent_to_remove.remove() # We must remove the QoS last so that no devices nor networks mark the # QoS as used backing_device = hierarchy_backing_device(net_ent) if (backing_device is not None and os.path.exists(NET_PATH + '/' + backing_device.name)): configurator.removeQoS(net_ent)