openvswitch agent: add OVS_RESTARTED event
This new event is aimed at informing that OVS has restarted, and in particular
to let L2 extensions know that they may need to setup their flows again.
Conflicts:
neutron/tests/functional/agent/test_l2_ovs_agent.py
Change-Id: I9aebe7ccc3e2f565b4339d42842d89b911131b1f
Closes-Bug: 1646526
Partial-Bug: 1657689
(cherry picked from commit ea2cab0e15
)
This commit is contained in:
parent
87824370fc
commit
dbf657a799
|
@ -43,3 +43,5 @@ ABORT_DELETE = 'abort_delete'
|
|||
ABORT = 'abort_'
|
||||
BEFORE = 'before_'
|
||||
PRECOMMIT = 'precommit_'
|
||||
|
||||
OVS_RESTARTED = 'ovs_restarted'
|
||||
|
|
|
@ -46,6 +46,7 @@ from neutron.api.rpc.callbacks import resources
|
|||
from neutron.api.rpc.handlers import dvr_rpc
|
||||
from neutron.callbacks import events as callback_events
|
||||
from neutron.callbacks import registry
|
||||
from neutron.callbacks import resources as callback_resources
|
||||
from neutron.common import config
|
||||
from neutron.common import constants as c_const
|
||||
from neutron.common import topics
|
||||
|
@ -1969,6 +1970,11 @@ class OVSNeutronAgent(sg_rpc.SecurityGroupAgentRpcCallbackMixin,
|
|||
self.patch_tun_ofport)
|
||||
self.dvr_agent.reset_dvr_parameters()
|
||||
self.dvr_agent.setup_dvr_flows()
|
||||
# notify that OVS has restarted
|
||||
registry.notify(
|
||||
callback_resources.AGENT,
|
||||
callback_events.OVS_RESTARTED,
|
||||
self)
|
||||
# restart the polling manager so that it will signal as added
|
||||
# all the current ports
|
||||
# REVISIT (rossella_s) Define a method "reset" in
|
||||
|
|
|
@ -14,10 +14,14 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
import time
|
||||
|
||||
from eventlet.timeout import Timeout
|
||||
|
||||
from neutron.callbacks import events
|
||||
from neutron.callbacks import registry
|
||||
from neutron.callbacks import resources
|
||||
from neutron.common import utils
|
||||
from neutron.plugins.ml2.drivers.openvswitch.agent.common import constants
|
||||
from neutron.tests.common import net_helpers
|
||||
|
@ -322,6 +326,24 @@ class TestOVSAgent(base.OVSAgentTestFramework):
|
|||
Timeout, self.wait_until_ports_state, [self.ports[1]], up=True,
|
||||
timeout=10)
|
||||
|
||||
def test_ovs_restarted_event(self):
|
||||
callback = mock.Mock()
|
||||
|
||||
self.setup_agent_and_ports(
|
||||
port_dicts=self.create_test_ports())
|
||||
|
||||
registry.subscribe(callback,
|
||||
resources.AGENT,
|
||||
events.OVS_RESTARTED)
|
||||
|
||||
self.agent.check_ovs_status.return_value = constants.OVS_RESTARTED
|
||||
|
||||
utils.wait_until_true(lambda: callback.call_count, timeout=10)
|
||||
|
||||
callback.assert_called_with(resources.AGENT,
|
||||
events.OVS_RESTARTED,
|
||||
mock.ANY)
|
||||
|
||||
|
||||
class TestOVSAgentExtensionConfig(base.OVSAgentTestFramework):
|
||||
def setUp(self):
|
||||
|
|
Loading…
Reference in New Issue