Merge "openvswitch agent: add OVS_RESTARTED event" into stable/newton

This commit is contained in:
Jenkins 2017-03-22 21:07:31 +00:00 committed by Gerrit Code Review
commit d662c101fb
3 changed files with 30 additions and 0 deletions

View File

@ -43,3 +43,5 @@ ABORT_DELETE = 'abort_delete'
ABORT = 'abort_' ABORT = 'abort_'
BEFORE = 'before_' BEFORE = 'before_'
PRECOMMIT = 'precommit_' PRECOMMIT = 'precommit_'
OVS_RESTARTED = 'ovs_restarted'

View File

@ -46,6 +46,7 @@ from neutron.api.rpc.callbacks import resources
from neutron.api.rpc.handlers import dvr_rpc from neutron.api.rpc.handlers import dvr_rpc
from neutron.callbacks import events as callback_events from neutron.callbacks import events as callback_events
from neutron.callbacks import registry from neutron.callbacks import registry
from neutron.callbacks import resources as callback_resources
from neutron.common import config from neutron.common import config
from neutron.common import constants as c_const from neutron.common import constants as c_const
from neutron.common import topics from neutron.common import topics
@ -1969,6 +1970,11 @@ class OVSNeutronAgent(sg_rpc.SecurityGroupAgentRpcCallbackMixin,
self.patch_tun_ofport) self.patch_tun_ofport)
self.dvr_agent.reset_dvr_parameters() self.dvr_agent.reset_dvr_parameters()
self.dvr_agent.setup_dvr_flows() 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 # restart the polling manager so that it will signal as added
# all the current ports # all the current ports
# REVISIT (rossella_s) Define a method "reset" in # REVISIT (rossella_s) Define a method "reset" in

View File

@ -14,10 +14,14 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
import mock
import time import time
from eventlet.timeout import Timeout 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.common import utils
from neutron.plugins.ml2.drivers.openvswitch.agent.common import constants from neutron.plugins.ml2.drivers.openvswitch.agent.common import constants
from neutron.tests.common import net_helpers 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, self.wait_until_ports_state, [self.ports[1]], up=True,
timeout=10) 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): class TestOVSAgentExtensionConfig(base.OVSAgentTestFramework):
def setUp(self): def setUp(self):