commit 4cb90623193bd6826e279129e993e0ceaf4a1816
Author: Andreas Scheuring <email address hidden>
Date: Wed Nov 11 14:03:08 2015 +0100
lb: avoid doing nova VIF work plumbing tap to qbr
neutron should rely on nova doing the job instead of trying to 'fix' it.
'Fixing' it introduces race conditions between lb agent and nova VIF
driver. Particularly, lb agent can scan for new tap devices in the
middle of nova plumbing qbr-tap setup, and attempt to do it on its own.
So if agent is more lucky to plug the tap device into the bridge, nova
may fail to do the same, getting the following error:
libvirtError: Unable to add bridge brqxxx-xx port tapxxx-xx: Device or
resource busy
This also requires a change in how the port admin_state_up is implemented
by setting the tap device's link state instead of moving it in or out
of the bridge.
Co-Authored-By: Sean M. Collins <email address hidden>
Co-Authored-By: Darragh O'Reilly <email address hidden>
Co-Authored-By: Andreas Scheuring <email address hidden>
Closes-Bug: #1312016
(cherry picked from commit f42ea67995537c7fe3e36447489872b0dcb82dd9)
===
Also squashed in the following follow up fix:
lb: Correct String formatting to get rid of logged ValueError
The following error is caused by a missing String formatting in the
linuxbridge agent:
"ValueError: unsupported format character 'a' (0x61) at index 90
Logged from file linuxbridge_neutron_agent.py, line 447"
In addition a duplicated word in the log text has been fixed.
Change-Id: I587f1165fc7084dc9c4806149b65652f6e27b14e
(cherry picked from commit 1f86d8687b2781f0c287ee656f3cbc65aaa4b5e4)
===
Also squashed in:
Only ensure admin state on ports that exist
The linux bridge agent was calling ensure_port_admin state
unconditionally on ports in treat_devices_added_or_updated.
This would cause it to throw an error on interfaces that
didn't exist so it would restart the entire processing loop.
If another port was being updated in the same loop before this
one, that port would experience a port status life-cycle of
DOWN->BUILD->ACTIVE->BUILD->ACTIVE ^ <--- Exception in unrelated port causes cycle to start over again.
This causes the bug below because the first active transition will
cause Nova to boot the VM. At this point tempest tests expect the
ports that belong to the VM to be in the ACTIVE state so it filters
Neutron port list calls with "status=ACTIVE". Therefore tempest would
not get any ports back and assume there was some kind of error with
the port and bail.
This patch just makes sure the admin state call is skipped if the port
doesn't exist and it includes a basic unit test to prevent a regression.
Reviewed: https:/ /review. openstack. org/296783 /git.openstack. org/cgit/ openstack/ neutron/ commit/ ?id=4cb90623193 bd6826e279129e9 93e0ceaf4a1816
Committed: https:/
Submitter: Jenkins
Branch: stable/liberty
commit 4cb90623193bd68 26e279129e993e0 ceaf4a1816
Author: Andreas Scheuring <email address hidden>
Date: Wed Nov 11 14:03:08 2015 +0100
lb: avoid doing nova VIF work plumbing tap to qbr
neutron should rely on nova doing the job instead of trying to 'fix' it.
'Fixing' it introduces race conditions between lb agent and nova VIF
driver. Particularly, lb agent can scan for new tap devices in the
middle of nova plumbing qbr-tap setup, and attempt to do it on its own.
So if agent is more lucky to plug the tap device into the bridge, nova
may fail to do the same, getting the following error:
libvirtError: Unable to add bridge brqxxx-xx port tapxxx-xx: Device or
resource busy
This also requires a change in how the port admin_state_up is implemented
by setting the tap device's link state instead of moving it in or out
of the bridge.
Conflicts: common/ constants. py plugins/ ml2/drivers/ linuxbridge/ agent/linuxbrid ge_neutron_ agent.py tests/unit/ plugins/ ml2/drivers/ linuxbridge/ agent/test_ linuxbridge_ neutron_ agent.py
neutron/
neutron/
neutron/
Co-Authored-By: Sean M. Collins <email address hidden> fe3e36447489872 b0dcb82dd9)
Co-Authored-By: Darragh O'Reilly <email address hidden>
Co-Authored-By: Andreas Scheuring <email address hidden>
Closes-Bug: #1312016
(cherry picked from commit f42ea67995537c7
===
Also squashed in the following follow up fix:
lb: Correct String formatting to get rid of logged ValueError
The following error is caused by a missing String formatting in the neutron_ agent.py, line 447"
linuxbridge agent:
"ValueError: unsupported format character 'a' (0x61) at index 90
Logged from file linuxbridge_
In addition a duplicated word in the log text has been fixed.
Change-Id: I587f1165fc7084 dc9c4806149b656 52f6e27b14e 0c287ee656f3cbc 65aaa4b5e4)
(cherry picked from commit 1f86d8687b2781f
===
Also squashed in:
Only ensure admin state on ports that exist
The linux bridge agent was calling ensure_port_admin state added_or_ updated.
unconditionally on ports in treat_devices_
This would cause it to throw an error on interfaces that
didn't exist so it would restart the entire processing loop.
If another port was being updated in the same loop before this >BUILD- >ACTIVE- >BUILD- >ACTIVE
^ <--- Exception in unrelated port causes cycle
to start over again.
one, that port would experience a port status life-cycle of
DOWN-
This causes the bug below because the first active transition will
cause Nova to boot the VM. At this point tempest tests expect the
ports that belong to the VM to be in the ACTIVE state so it filters
Neutron port list calls with "status=ACTIVE". Therefore tempest would
not get any ports back and assume there was some kind of error with
the port and bail.
This patch just makes sure the admin state call is skipped if the port
doesn't exist and it includes a basic unit test to prevent a regression.
Conflicts: plugins/ ml2/drivers/ linuxbridge/ agent/linuxbrid ge_neutron_ agent.py
neutron/
Closes-Bug: #1523638 bf45aec9ade7e30 d34e8dd16ca a0e7fb3ba2a63e4 905e48c1a4)
Change-Id: I5330c6111cbb20
(cherry picked from commit 96c67e22f9cba2e
===
Change-Id: I02971103407b4e c11a65218e9ef7e 2708915d938