Antoni Segura Puimedon has uploaded a new change for review.
Change subject: arbitrary_vlan_name: Fix network deletion ......................................................................
arbitrary_vlan_name: Fix network deletion
Up until now, when the network deletion operations were not being forced, the assertion that the bridge was clean, i.e., that it did not have other ports (vnics most likely) would fail because it expected
bondname.vlanid or nic.vlanid
when the name could be any string. This patch addresses the issue by making netinfo give us the exact vlan name.
Change-Id: I715806db38ce621098fe5f364e16e874a5ed01ed Bug-Url: http://bugzilla.redhat.com/1119182 Signed-off-by: Antoni S. Puimedon asegurap@redhat.com --- M lib/vdsm/netinfo.py M vdsm/network/api.py M vdsm/network/models.py 3 files changed, 28 insertions(+), 17 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/13/30013/1
diff --git a/lib/vdsm/netinfo.py b/lib/vdsm/netinfo.py index 95c3860..d7e7b6c 100644 --- a/lib/vdsm/netinfo.py +++ b/lib/vdsm/netinfo.py @@ -929,6 +929,7 @@
def getNicsVlanAndBondingForNetwork(self, network): vlan = None + vlanid = None bonding = None lnics = []
@@ -943,7 +944,8 @@ if port in self.vlans: assert vlan is None nic = getVlanDevice(port) - vlan = getVlanID(port) + vlanid = getVlanID(port) + vlan = port # vlan devices can have an arbitrary name assert self.vlans[port]['iface'] == nic port = nic if port in self.bondings: @@ -953,7 +955,7 @@ elif port in self.nics: lnics.append(port)
- return lnics, vlan, bonding + return lnics, vlan, vlanid, bonding
def ifaceUsers(self, iface): "Returns a list of entities using the interface" diff --git a/vdsm/network/api.py b/vdsm/network/api.py index ba99f3e..32e26c1 100755 --- a/vdsm/network/api.py +++ b/vdsm/network/api.py @@ -66,7 +66,7 @@ persistence = _getPersistenceModule()
-def objectivizeNetwork(bridge=None, vlan=None, bonding=None, +def objectivizeNetwork(bridge=None, vlan=None, vlan_id=None, bonding=None, bondingOptions=None, nics=None, mtu=None, ipaddr=None, netmask=None, gateway=None, bootproto=None, ipv6addr=None, ipv6gateway=None, ipv6autoconf=None, @@ -78,7 +78,8 @@ that is passed in the parameters.
:param bridge: name of the bridge. - :param vlan: vlan tag id. + :param vlan: vlan device name. + :param vlan_id: vlan tag id. :param bonding: name of the bond. :param bondingOptions: bonding options separated by spaces. :param nics: list of nic names. @@ -129,7 +130,10 @@ 'enslaved to %s' % (nic, bond)) topNetDev = Nic(nic, configurator, mtu=mtu, _netinfo=_netinfo) if vlan is not None: - topNetDev = Vlan(topNetDev, vlan, configurator, mtu=mtu) + tag = netinfo.getVlanID(vlan) if vlan_id is None else vlan_id + topNetDev = Vlan(topNetDev, tag, configurator, mtu=mtu, name=vlan) + elif vlan_id is not None: + topNetDev = Vlan(topNetDev, vlan_id, configurator, mtu=mtu) if bridge is not None: stp = None if 'stp' in opts: @@ -315,7 +319,7 @@ bootproto = options.pop('bootproto', None)
netEnt = objectivizeNetwork( - bridge=network if bridged else None, vlan=vlan, bonding=bonding, + bridge=network if bridged else None, vlan_id=vlan, bonding=bonding, bondingOptions=bondingOptions, nics=nics, mtu=mtu, ipaddr=ipaddr, netmask=netmask, gateway=gateway, bootproto=bootproto, blockingdhcp=blockingdhcp, ipv6addr=ipv6addr, ipv6gateway=ipv6gateway, @@ -332,7 +336,7 @@ ports = set(netinfo.ports(bridge)) ifaces = set(nics) if vlan is not None: - ifaces.add('%s.%s' % ((bonding or nics[0]), vlan)) + ifaces.add(vlan) else: ifaces.add(bonding)
@@ -352,7 +356,8 @@ bridged = _netinfo.networks[network]['bridged'] print "Network %s(Bridged: %s):" % (network, bridged)
- nics, vlan, bonding = _netinfo.getNicsVlanAndBondingForNetwork(network) + nics, vlan, vlan_id, bonding = _netinfo.getNicsVlanAndBondingForNetwork( + network)
if bridged: ipaddr = _netinfo.networks[network]['addr'] @@ -365,7 +370,7 @@ netmask = _netinfo.nics[iface]['netmask'] print "ipaddr=%s, netmask=%s" % (ipaddr, netmask)
- print "vlan=%s, bonding=%s, nics=%s" % (vlan, bonding, nics) + print "vlan=%s, bonding=%s, nics=%s" % (vlan_id, bonding, nics)
def listNetworks(): @@ -408,8 +413,9 @@
def _delNonVdsmNetwork(network, vlan, bonding, nics, _netinfo, configurator): if network in netinfo.bridges(): - netEnt = objectivizeNetwork(bridge=network, vlan=vlan, bonding=bonding, - nics=nics, _netinfo=_netinfo, + netEnt = objectivizeNetwork(bridge=network, vlan_id=vlan, + bonding=bonding, nics=nics, + _netinfo=_netinfo, configurator=configurator, implicitBonding=False) netEnt.remove() @@ -436,7 +442,8 @@ configurator) return
- nics, vlan, bonding = _netinfo.getNicsVlanAndBondingForNetwork(network) + 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," @@ -446,8 +453,8 @@ _validateDelNetwork(network, vlan, bonding, nics, bridged, _netinfo)
netEnt = objectivizeNetwork(bridge=network if bridged else None, vlan=vlan, - bonding=bonding, nics=nics, _netinfo=_netinfo, - configurator=configurator, + vlan_id=vlan_id, bonding=bonding, nics=nics, + _netinfo=_netinfo, configurator=configurator, implicitBonding=implicitBonding) netEnt.ip.bootproto = netinfo.getBootProtocol(netEnt.name)
diff --git a/vdsm/network/models.py b/vdsm/network/models.py index 402a4b5..c3b9409 100644 --- a/vdsm/network/models.py +++ b/vdsm/network/models.py @@ -115,7 +115,8 @@ class Vlan(NetDevice): MAX_ID = 4094
- def __init__(self, device, tag, configurator, ipconfig=None, mtu=None): + def __init__(self, device, tag, configurator, ipconfig=None, mtu=None, + name=None): self.validateTag(tag) if device is None: raise ConfigNetworkError(ne.ERR_BAD_PARAMS, 'Missing required vlan' @@ -123,8 +124,9 @@ device.master = self self.device = device self.tag = tag - super(Vlan, self).__init__('%s.%s' % (device.name, tag), configurator, - ipconfig, mtu) + # control for arbitrary vlan names + name = '%s.%s' % (device.name, tag) if name is None else name + super(Vlan, self).__init__(name, configurator, ipconfig, mtu)
def __repr__(self): return 'Vlan(%s: %r)' % (self.name, self.device)
oVirt Jenkins CI Server has posted comments on this change.
Change subject: arbitrary_vlan_name: Fix network deletion ......................................................................
Patch Set 1:
Build Failed
http://jenkins.ovirt.org/job/vdsm_master_unit_tests_gerrit_el/10204/ : FAILURE
http://jenkins.ovirt.org/job/vdsm_master_pep8_gerrit/10989/ : SUCCESS
http://jenkins.ovirt.org/job/vdsm_master_unit-tests_created/11146/ : FAILURE
http://jenkins.ovirt.org/job/vdsm_master_network_functional_tests_gerrit/162... : There was an infra issue, please contact infra@ovirt.org
Dan Kenigsberg has posted comments on this change.
Change subject: arbitrary_vlan_name: Fix network deletion ......................................................................
Patch Set 1: Code-Review+2
Please change, in a follow up patch, all variable that hold a vlan id to be named vlan_id.
automation@ovirt.org has posted comments on this change.
Change subject: arbitrary_vlan_name: Fix network deletion ......................................................................
Patch Set 2:
* Update tracker::#1119182::OK * Check Bug-Url::OK * Check Public Bug::#1119182::OK, public bug * Check Product::#1119182::OK, Correct product oVirt * Check TR::SKIP, not in a monitored branch (ovirt-3.5 ovirt-3.4 ovirt-3.3 ovirt-3.2) * Check merged to previous::IGNORE, Not in stable branch (['ovirt-3.5', 'ovirt-3.4', 'ovirt-3.3'])
automation@ovirt.org has posted comments on this change.
Change subject: arbitrary_vlan_name: Fix network deletion ......................................................................
Patch Set 3:
* Update tracker::#1119182::OK * Check Bug-Url::OK * Check Public Bug::#1119182::OK, public bug * Check Product::#1119182::OK, Correct product oVirt * Check TR::SKIP, not in a monitored branch (ovirt-3.5 ovirt-3.4 ovirt-3.3 ovirt-3.2) * Check merged to previous::IGNORE, Not in stable branch (['ovirt-3.5', 'ovirt-3.4', 'ovirt-3.3'])
automation@ovirt.org has posted comments on this change.
Change subject: arbitrary_vlan_name: Fix network deletion ......................................................................
Patch Set 4:
* Update tracker::#1119182::OK * Check Bug-Url::OK * Check Public Bug::#1119182::OK, public bug * Check Product::#1119182::OK, Correct product oVirt * Check TR::SKIP, not in a monitored branch (ovirt-3.5 ovirt-3.4 ovirt-3.3 ovirt-3.2) * Check merged to previous::IGNORE, Not in stable branch (['ovirt-3.5', 'ovirt-3.4', 'ovirt-3.3'])
Ido Barkan has posted comments on this change.
Change subject: arbitrary_vlan_name: Fix network deletion ......................................................................
Patch Set 4: Verified+1
Dan Kenigsberg has posted comments on this change.
Change subject: arbitrary_vlan_name: Fix network deletion ......................................................................
Patch Set 4: Code-Review+2
Dan Kenigsberg has submitted this change and it was merged.
Change subject: arbitrary_vlan_name: Fix network deletion ......................................................................
arbitrary_vlan_name: Fix network deletion
Up until now, when the network deletion operations were not being forced, the assertion that the bridge was clean, i.e., that it did not have other ports (vnics most likely) would fail because it expected
bondname.vlanid or nic.vlanid
when the name could be any string. This patch addresses the issue by making netinfo give us the exact vlan name.
Change-Id: I715806db38ce621098fe5f364e16e874a5ed01ed Bug-Url: http://bugzilla.redhat.com/1119182 Signed-off-by: Antoni S. Puimedon asegurap@redhat.com Reviewed-on: https://gerrit.ovirt.org/30013 Tested-by: Ido Barkan ibarkan@redhat.com Continuous-Integration: Jenkins CI Reviewed-by: Dan Kenigsberg danken@redhat.com --- M lib/vdsm/netconfpersistence.py M lib/vdsm/netinfo.py M vdsm/API.py M vdsm/network/api.py M vdsm/network/models.py 5 files changed, 32 insertions(+), 20 deletions(-)
Approvals: Ido Barkan: Verified Jenkins CI: Passed CI tests Dan Kenigsberg: Looks good to me, approved
automation@ovirt.org has posted comments on this change.
Change subject: arbitrary_vlan_name: Fix network deletion ......................................................................
Patch Set 5:
* Update tracker::#1119182::OK * Check TR::#1119182::ERROR, 3.6.0 should not match .*
vdsm-patches@lists.fedorahosted.org