Note: This bug is displayed in read-only format because
the product is no longer active in Red Hat Bugzilla.
RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Previously, the VDSM was able to attach several bridgeless networks to the same interface. It did not clean up old bridgeless networks, which sometimes caused connection errors as the VDSM attempted to configure the obsolete network. Now, configurations are restricted to either a single bridged non-VLANed network or a single bridgeless non-VLANed network plus any amount of bridged/bridgeless VLANed networks. This prevents unnecessary connection errors caused by old or unused networks.
Created attachment 589630[details]
engine log
Description of problem:
Bridgeless network are never being cleanup by VDSM.
using both SetupNetworks or the old Add network way to override an old bridgeless network over the same interface. VDSM will add the new network but won't remove the old bridgeless network.
It will cause later problems when trying to reconfigure the old bridgeless network: ConfigNetworkError: (28, 'Bridge already exists').
I have added two bridgeless networks over the same interface (one after one. sw2 and sw3) then override this interface with bridged (sw4) network.
the results are:
[root@silver-vdsa ~]# virsh -r net-list --all
Name State Autostart
-----------------------------------------
vdsm-rhevm active yes
vdsm-sw2 active yes
vdsm-sw3 active yes
vdsm-sw4 active yes
default inactive no
[root@silver-vdsa ~]# vdsClient 0 getVdsCaps |grep sw4 --color
networks = {'rhevm': {'addr': '10.35.128.10', 'cfg': {'DELAY': '0', 'NM_CONTROLLED': 'no', 'BOOTPROTO': 'dhcp', 'DEVICE': 'rhevm', 'TYPE': 'Bridge', 'ONBOOT': 'yes'}, 'mtu': '1500', 'netmask': '255.255.255.0', 'stp': 'off', 'bridged': True, 'gateway': '10.35.128.254', 'ports': ['eth0']}, 'sw3': {'interface': 'eth1', 'bridged': False}, 'sw2': {'interface': 'eth1', 'bridged': False}, 'sw4': {'addr': '', 'cfg': {'DEVICE': 'sw4', 'DELAY': '0', 'TYPE': 'Bridge', 'ONBOOT': 'yes', 'NM_CONTROLLED': 'no'}, 'mtu': '9000', 'netmask': '', 'stp': 'off', 'bridged': True, 'gateway': '0.0.0.0', 'ports': ['eth1']}}
As you can see, VDSM configured sw2, sw3 and sw4 over the same interface.
The Blocker issue is when trying to reconfigure the old bridgeless network:
MainProcess|Thread-16544::ERROR::2012-06-05 22:31:55,420::supervdsmServer::60::SuperVdsm.ServerCallback::(wrapper) Error in editNetwork
Traceback (most recent call last):
File "/usr/share/vdsm/supervdsmServer.py", line 58, in wrapper
return func(*args, **kwargs)
File "/usr/share/vdsm/supervdsmServer.py", line 102, in editNetwork
return configNetwork.editNetwork(oldBridge, newBridge, **options)
File "/usr/share/vdsm/configNetwork.py", line 783, in editNetwork
addNetwork(newBridge, vlan=vlan, bonding=bonding, nics=nics, configWriter=configWriter, **options)
File "/usr/share/vdsm/configNetwork.py", line 590, in addNetwork
bridged=bridged, skipLibvirt=skipLibvirt)
File "/usr/share/vdsm/configNetwork.py", line 503, in _addNetworkValidation
raise ConfigNetworkError(ne.ERR_USED_BRIDGE, 'Bridge already exists')
ConfigNetworkError: (28, 'Bridge already exists')
Thread-16544::ERROR::2012-06-05 22:31:55,421::API::1209::vds::(editNetwork) Bridge already exists
Traceback (most recent call last):
File "/usr/share/vdsm/API.py", line 1207, in editNetwork
supervdsm.getProxy().editNetwork(oldBridge, newBridge, options)
File "/usr/share/vdsm/supervdsm.py", line 59, in __call__
return callMethod()
File "/usr/share/vdsm/supervdsm.py", line 57, in <lambda>
callMethod = lambda : getattr(self._supervdsmProxy._svdsm, self._funcName)(*args, **kwargs)
File "<string>", line 2, in editNetwork
File "/usr/lib64/python2.6/multiprocessing/managers.py", line 740, in _callmethod
raise convert_to_error(kind, result)
ConfigNetworkError: (28, 'Bridge already exists')
BTW, running vdsClient delNetwork <bridgeless net> directly on the host will clean the network from libvirt.
Steps to Reproduce:
1. create bridgeless network and attach to host eth1
2. create bridged network nad attach to host eth1
3. try to reconfigure the old bridgeless network on eth1
Actual results:
libvirt will still contain the old bridgeless network
and the operation will fail due to 'Bridge already exists'
Expected results:
override bridgeless network should remove the network before adding a newer one on the same interface.
Additional info:
(In reply to comment #0)
> Steps to Reproduce:
> 1. create bridgeless network and attach to host eth1
> 2. create bridged network nad attach to host eth1
> 3. try to reconfigure the old bridgeless network on eth1
>
> Actual results:
> libvirt will still contain the old bridgeless network
> and the operation will fail due to 'Bridge already exists'
>
> Expected results:
> override bridgeless network should remove the network before adding a newer
> one on the same interface.
I don't understand why this is a vdsm bug.
You create sw3 (bridgeless). You create sw4 (bridged) on the same eth1 nic. That's good. Now you try to make sw3 a bridged net. That's illegal, because you cannot connect one nic to two bridges.
Note that the operation that fails is
editNetwork with ('sw4', 'sw3', '', '', ['eth1'], {'STP': 'no'})
and not "reconfigure the old bridgeless". Vdsm is asked to reuse the name of an existing (bridged) network. That's illegal.
I haven't reviewed engine.log, maybe there's an issue there.
addNetwork with ('sw1', '162', '', ['eth1'], {'STP': 'no'}) {} flowID [429984de]
setSafeNetworkConfig with () {} flowID [1c5ac982]
delNetwork with ('sw1', '162', '', ['eth1']) {} flowID [307a7306]
setSafeNetworkConfig with () {} flowID [2b96155b]
setupNetworks with ({'rhevm': {'nic': 'eth0', 'BOOTPROTO': 'dhcp', 'bridged': 'true'}, 'sw3': {'ni
setupNetworks with ({'rhevm': {'nic': 'eth0', 'BOOTPROTO': 'dhcp', 'bridged': 'true'}, 'sw2': {'ni
setupNetworks with ({'rhevm': {'nic': 'eth0', 'BOOTPROTO': 'dhcp', 'bridged': 'true'}, 'sw2': {'re
setupNetworks with ({'rhevm': {'nic': 'eth0', 'BOOTPROTO': 'dhcp', 'bridged': 'true'}, 'sw2': {'ni
setupNetworks with ({'rhevm': {'nic': 'eth0', 'BOOTPROTO': 'dhcp', 'bridged': 'true'}, 'sw2': {'ni
setupNetworks with ({'rhevm': {'nic': 'eth0', 'BOOTPROTO': 'dhcp', 'bridged': 'true'}, 'sw2': {'ni
setupNetworks with ({'rhevm': {'nic': 'eth0', 'BOOTPROTO': 'dhcp', 'bridged': 'true'}, 'sw4': {'ni
editNetwork with ('sw4', 'sw4', '', '', ['eth1'], {'STP': 'no'}) {} flowID [24439552]
setSafeNetworkConfig with () {} flowID [2fd4cc7]
editNetwork with ('sw4', 'sw3', '', '', ['eth1'], {'STP': 'no'}) {} flowID [144cd1bc]
After talking with Avi the bug is as follows:
1. Add bridgeless network (red) to a nic (eth0), submit change
2. Remove red from eth0, submit change
3. Add (again) red network to eth0, submit change
Avi please confirm that this is what you inteded in the bug above.
(with danken) there *is* a vdsm bug here:
setupNetworks with ({'rhevm': {'nic': 'eth0', 'BOOTPROTO': 'dhcp', 'bridged': 'true'}, 'sw3': {'nic': 'eth1', 'bridged': 'false'}}, {'bond4': {'remove': 'true'}, 'bond0': {'remove': 'true'}, 'bond1': {'remo
setupNetworks with ({'rhevm': {'nic': 'eth0', 'BOOTPROTO': 'dhcp', 'bridged': 'true'}, 'sw2': {'nic': 'eth1', 'bridged': 'false', 'mtu': '9000'}}, {'bond4': {'remove': 'true'}, 'bond0': {'remove': 'true'},
second operation should have failed since you cannot have two bridgeless networks on the same interface.
(In reply to comment #4)
> After talking with Avi the bug is as follows:
> 1. Add bridgeless network (red) to a nic (eth0), submit change
> 2. Remove red from eth0, submit change
> 3. Add (again) red network to eth0, submit change
>
> Avi please confirm that this is what you inteded in the bug above.
Separate BZ was opened for backend: BZ#823927
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.
http://rhn.redhat.com/errata/RHSA-2012-1508.html
Created attachment 589630 [details] engine log Description of problem: Bridgeless network are never being cleanup by VDSM. using both SetupNetworks or the old Add network way to override an old bridgeless network over the same interface. VDSM will add the new network but won't remove the old bridgeless network. It will cause later problems when trying to reconfigure the old bridgeless network: ConfigNetworkError: (28, 'Bridge already exists'). I have added two bridgeless networks over the same interface (one after one. sw2 and sw3) then override this interface with bridged (sw4) network. the results are: [root@silver-vdsa ~]# virsh -r net-list --all Name State Autostart ----------------------------------------- vdsm-rhevm active yes vdsm-sw2 active yes vdsm-sw3 active yes vdsm-sw4 active yes default inactive no [root@silver-vdsa ~]# vdsClient 0 getVdsCaps |grep sw4 --color networks = {'rhevm': {'addr': '10.35.128.10', 'cfg': {'DELAY': '0', 'NM_CONTROLLED': 'no', 'BOOTPROTO': 'dhcp', 'DEVICE': 'rhevm', 'TYPE': 'Bridge', 'ONBOOT': 'yes'}, 'mtu': '1500', 'netmask': '255.255.255.0', 'stp': 'off', 'bridged': True, 'gateway': '10.35.128.254', 'ports': ['eth0']}, 'sw3': {'interface': 'eth1', 'bridged': False}, 'sw2': {'interface': 'eth1', 'bridged': False}, 'sw4': {'addr': '', 'cfg': {'DEVICE': 'sw4', 'DELAY': '0', 'TYPE': 'Bridge', 'ONBOOT': 'yes', 'NM_CONTROLLED': 'no'}, 'mtu': '9000', 'netmask': '', 'stp': 'off', 'bridged': True, 'gateway': '0.0.0.0', 'ports': ['eth1']}} As you can see, VDSM configured sw2, sw3 and sw4 over the same interface. The Blocker issue is when trying to reconfigure the old bridgeless network: MainProcess|Thread-16544::ERROR::2012-06-05 22:31:55,420::supervdsmServer::60::SuperVdsm.ServerCallback::(wrapper) Error in editNetwork Traceback (most recent call last): File "/usr/share/vdsm/supervdsmServer.py", line 58, in wrapper return func(*args, **kwargs) File "/usr/share/vdsm/supervdsmServer.py", line 102, in editNetwork return configNetwork.editNetwork(oldBridge, newBridge, **options) File "/usr/share/vdsm/configNetwork.py", line 783, in editNetwork addNetwork(newBridge, vlan=vlan, bonding=bonding, nics=nics, configWriter=configWriter, **options) File "/usr/share/vdsm/configNetwork.py", line 590, in addNetwork bridged=bridged, skipLibvirt=skipLibvirt) File "/usr/share/vdsm/configNetwork.py", line 503, in _addNetworkValidation raise ConfigNetworkError(ne.ERR_USED_BRIDGE, 'Bridge already exists') ConfigNetworkError: (28, 'Bridge already exists') Thread-16544::ERROR::2012-06-05 22:31:55,421::API::1209::vds::(editNetwork) Bridge already exists Traceback (most recent call last): File "/usr/share/vdsm/API.py", line 1207, in editNetwork supervdsm.getProxy().editNetwork(oldBridge, newBridge, options) File "/usr/share/vdsm/supervdsm.py", line 59, in __call__ return callMethod() File "/usr/share/vdsm/supervdsm.py", line 57, in <lambda> callMethod = lambda : getattr(self._supervdsmProxy._svdsm, self._funcName)(*args, **kwargs) File "<string>", line 2, in editNetwork File "/usr/lib64/python2.6/multiprocessing/managers.py", line 740, in _callmethod raise convert_to_error(kind, result) ConfigNetworkError: (28, 'Bridge already exists') BTW, running vdsClient delNetwork <bridgeless net> directly on the host will clean the network from libvirt. Steps to Reproduce: 1. create bridgeless network and attach to host eth1 2. create bridged network nad attach to host eth1 3. try to reconfigure the old bridgeless network on eth1 Actual results: libvirt will still contain the old bridgeless network and the operation will fail due to 'Bridge already exists' Expected results: override bridgeless network should remove the network before adding a newer one on the same interface. Additional info: