Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 1 addition & 19 deletions neutron/agent/l3/ha.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,6 @@
import threading

import eventlet
from neutron_lib.callbacks import events
from neutron_lib.callbacks import registry
from neutron_lib.callbacks import resources
from neutron_lib import constants
from oslo_log import log as logging
from oslo_utils import fileutils
Expand Down Expand Up @@ -79,7 +76,6 @@ def run(self):
server.wait()


@registry.has_registry_receivers
class AgentMixin(object):
def __init__(self, host):
self._init_ha_conf_path()
Expand All @@ -91,13 +87,6 @@ def __init__(self, host):
eventlet.spawn(self._start_keepalived_notifications_server)
self._transition_states = {}
self._transition_state_mutex = threading.Lock()
self._initial_state_change_per_router = set()

def initial_state_change(self, router_id):
initial_state = router_id not in self._initial_state_change_per_router
if initial_state:
self._initial_state_change_per_router.add(router_id)
return initial_state

def _get_router_info(self, router_id):
try:
Expand All @@ -106,13 +95,6 @@ def _get_router_info(self, router_id):
LOG.info('Router %s is not managed by this agent. It was '
'possibly deleted concurrently.', router_id)

@registry.receives(resources.ROUTER, [events.AFTER_DELETE])
def _delete_router(self, resource, event, trigger, payload):
try:
self._initial_state_change_per_router.remove(payload.resource_id)
except KeyError:
pass

def check_ha_state_for_router(self, router_id, current_state):
ri = self._get_router_info(router_id)
if not ri:
Expand Down Expand Up @@ -166,7 +148,7 @@ def enqueue_state_change(self, router_id, state):

def _enqueue_state_change(self, router_id, state):
# NOTE(ralonsoh): move 'primary' and 'backup' constants to n-lib
if state == 'primary' and not self.initial_state_change(router_id):
if state == 'primary':
eventlet.sleep(self.conf.ha_vrrp_advert_int)
transition_state = self._update_transition_state(router_id)
if transition_state != state:
Expand Down
25 changes: 1 addition & 24 deletions neutron/tests/unit/agent/l3/test_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -273,15 +273,7 @@ def test_enqueue_state_change_from_none_to_backup(self):
self._enqueue_state_change_transitions(['backup'], 1)

def test_enqueue_state_change_from_none_to_primary_to_backup(self):
# First transition (to primary), won't have a delay.
self._enqueue_state_change_transitions(['primary', 'backup'], 2)

def test_enqueue_state_change_from_none_to_primary_to_backup_twice(self):
# Second transition to primary will have a delay and will be overridden
# by the second transition to backup; that means the transition from
# backup (second state) to primary (third state) is dismissed.
self._enqueue_state_change_transitions(
['primary', 'backup', 'primary', 'backup'], 2)
self._enqueue_state_change_transitions(['primary', 'backup'], 0)

def test_enqueue_state_change_from_none_to_backup_to_primary(self):
self._enqueue_state_change_transitions(['backup', 'primary'], 2)
Expand Down Expand Up @@ -2582,21 +2574,6 @@ def test_removed_from_agent(self):
agent.router_removed_from_agent(None, {'router_id': FAKE_ID})
self.assertEqual(1, agent._queue.add.call_count)

@mock.patch.object(metadata_driver.MetadataDriver,
'destroy_monitored_metadata_proxy')
def test__router_removed(self, *args):
agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
ri = mock.Mock(router={'id': 'router_id'})
agent._initial_state_change_per_router.add('router_id')
self.assertEqual({'router_id'}, agent._initial_state_change_per_router)
for _ in range(2):
# The second call will trigger a KeyError exception in
# AgentMixin._delete_router that should be dismissed.
agent.router_info['router_id'] = mock.ANY
agent.pd = mock.Mock(routers={'router_id': {'subnets': []}})
agent._router_removed(ri, 'router_id')
self.assertEqual(set([]), agent._initial_state_change_per_router)

def test_added_to_agent(self):
agent = l3_agent.L3NATAgent(HOSTNAME, self.conf)
agent._queue = mock.Mock()
Expand Down