|
|
|
@ -13,7 +13,6 @@
|
|
|
|
|
# License for the specific language governing permissions and limitations
|
|
|
|
|
# under the License.
|
|
|
|
|
|
|
|
|
|
import contextlib
|
|
|
|
|
import socket
|
|
|
|
|
|
|
|
|
|
import eventlet
|
|
|
|
@ -117,16 +116,14 @@ class TestManager(base.BaseTestCase):
|
|
|
|
|
gateway = l2gateway_config.L2GatewayConfig(self.fake_config_json)
|
|
|
|
|
ovsdb_ident = self.fake_config_json.get(n_const.OVSDB_IDENTIFIER)
|
|
|
|
|
self.l2gw_agent_manager.gateways[ovsdb_ident] = gateway
|
|
|
|
|
with contextlib.nested(
|
|
|
|
|
mock.patch.object(ovsdb_monitor,
|
|
|
|
|
'OVSDBMonitor'),
|
|
|
|
|
mock.patch.object(eventlet.greenthread,
|
|
|
|
|
'spawn_n'),
|
|
|
|
|
mock.patch.object(manager.OVSDBManager,
|
|
|
|
|
'agent_to_plugin_rpc'),
|
|
|
|
|
mock.patch.object(self.plugin_rpc,
|
|
|
|
|
'notify_ovsdb_states')
|
|
|
|
|
) as (ovsdb_connection, event_spawn, call_back, notify):
|
|
|
|
|
with mock.patch.object(ovsdb_monitor,
|
|
|
|
|
'OVSDBMonitor') as ovsdb_connection, \
|
|
|
|
|
mock.patch.object(eventlet.greenthread,
|
|
|
|
|
'spawn_n') as event_spawn, \
|
|
|
|
|
mock.patch.object(manager.OVSDBManager,
|
|
|
|
|
'agent_to_plugin_rpc') as call_back, \
|
|
|
|
|
mock.patch.object(self.plugin_rpc,
|
|
|
|
|
'notify_ovsdb_states') as notify:
|
|
|
|
|
self.l2gw_agent_manager._connect_to_ovsdb_server()
|
|
|
|
|
self.assertTrue(event_spawn.called)
|
|
|
|
|
self.assertTrue(ovsdb_connection.called)
|
|
|
|
@ -140,33 +137,28 @@ class TestManager(base.BaseTestCase):
|
|
|
|
|
gateway = l2gateway_config.L2GatewayConfig(self.fake_config_json)
|
|
|
|
|
ovsdb_ident = self.fake_config_json.get(n_const.OVSDB_IDENTIFIER)
|
|
|
|
|
self.l2gw_agent_manager.gateways[ovsdb_ident] = gateway
|
|
|
|
|
with contextlib.nested(
|
|
|
|
|
mock.patch.object(ovsdb_monitor.OVSDBMonitor,
|
|
|
|
|
'__init__',
|
|
|
|
|
side_effect=socket.error
|
|
|
|
|
),
|
|
|
|
|
mock.patch.object(eventlet.greenthread,
|
|
|
|
|
'spawn_n'),
|
|
|
|
|
mock.patch.object(manager.LOG, 'error')
|
|
|
|
|
) as (ovsdb_connection, event_spawn, mock_warn):
|
|
|
|
|
self.l2gw_agent_manager._connect_to_ovsdb_server()
|
|
|
|
|
event_spawn.assert_not_called()
|
|
|
|
|
with mock.patch.object(ovsdb_monitor.OVSDBMonitor,
|
|
|
|
|
'__init__',
|
|
|
|
|
side_effect=socket.error
|
|
|
|
|
), \
|
|
|
|
|
mock.patch.object(eventlet.greenthread,
|
|
|
|
|
'spawn_n') as event_spawn, \
|
|
|
|
|
mock.patch.object(manager.LOG, 'error'):
|
|
|
|
|
self.l2gw_agent_manager._connect_to_ovsdb_server()
|
|
|
|
|
event_spawn.assert_not_called()
|
|
|
|
|
|
|
|
|
|
def test_handle_report_state_failure(self):
|
|
|
|
|
self.l2gw_agent_manager.l2gw_agent_type = n_const.MONITOR
|
|
|
|
|
with contextlib.nested(
|
|
|
|
|
mock.patch.object(self.l2gw_agent_manager,
|
|
|
|
|
'_disconnect_all_ovsdb_servers'
|
|
|
|
|
),
|
|
|
|
|
mock.patch.object(agent_rpc.PluginReportStateAPI,
|
|
|
|
|
'report_state',
|
|
|
|
|
side_effect=Exception),
|
|
|
|
|
mock.patch.object(base_agent_manager.LOG,
|
|
|
|
|
'exception'),
|
|
|
|
|
mock.patch.object(self.l2gw_agent_manager,
|
|
|
|
|
'_stop_looping_task')
|
|
|
|
|
) as (mock_disconnect_ovsdb_servers, mock_report_state,
|
|
|
|
|
mock_log, mock_stop_looping):
|
|
|
|
|
with mock.patch.object(self.l2gw_agent_manager,
|
|
|
|
|
'_disconnect_all_ovsdb_servers'
|
|
|
|
|
) as mock_disconnect_ovsdb_servers, \
|
|
|
|
|
mock.patch.object(agent_rpc.PluginReportStateAPI,
|
|
|
|
|
'report_state',
|
|
|
|
|
side_effect=Exception), \
|
|
|
|
|
mock.patch.object(base_agent_manager.LOG,
|
|
|
|
|
'exception'), \
|
|
|
|
|
mock.patch.object(self.l2gw_agent_manager,
|
|
|
|
|
'_stop_looping_task') as mock_stop_looping:
|
|
|
|
|
self.l2gw_agent_manager._report_state()
|
|
|
|
|
self.assertEqual(self.l2gw_agent_manager.l2gw_agent_type,
|
|
|
|
|
'')
|
|
|
|
@ -210,26 +202,23 @@ class TestManager(base.BaseTestCase):
|
|
|
|
|
self.l2gw_agent_manager.gateways = {}
|
|
|
|
|
gateway = l2gateway_config.L2GatewayConfig(self.fake_config_json)
|
|
|
|
|
self.l2gw_agent_manager.gateways['fake_ovsdb_identifier'] = gateway
|
|
|
|
|
with contextlib.nested(
|
|
|
|
|
mock.patch.object(manager.LOG, 'warning'),
|
|
|
|
|
mock.patch.object(socket.socket, 'connect'),
|
|
|
|
|
mock.patch.object(ovsdb_writer.OVSDBWriter,
|
|
|
|
|
'delete_logical_switch')
|
|
|
|
|
) as (logger_call, mock_connect, mock_del_ls):
|
|
|
|
|
mock_connect.side_effect = socket.error
|
|
|
|
|
self.l2gw_agent_manager.delete_network(self.context,
|
|
|
|
|
mock.Mock(),
|
|
|
|
|
mock.Mock())
|
|
|
|
|
self.assertEqual(1, logger_call.call_count)
|
|
|
|
|
self.assertFalse(mock_del_ls.called)
|
|
|
|
|
with mock.patch.object(manager.LOG, 'warning') as logger_call, \
|
|
|
|
|
mock.patch.object(socket.socket, 'connect') as mock_connect, \
|
|
|
|
|
mock.patch.object(ovsdb_writer.OVSDBWriter,
|
|
|
|
|
'delete_logical_switch') as mock_del_ls:
|
|
|
|
|
mock_connect.side_effect = socket.error
|
|
|
|
|
self.l2gw_agent_manager.delete_network(self.context,
|
|
|
|
|
mock.Mock(),
|
|
|
|
|
mock.Mock())
|
|
|
|
|
self.assertEqual(1, logger_call.call_count)
|
|
|
|
|
self.assertFalse(mock_del_ls.called)
|
|
|
|
|
|
|
|
|
|
def test_init_with_enable_manager(self):
|
|
|
|
|
cfg.CONF.set_override('enable_manager', True, 'ovsdb')
|
|
|
|
|
with contextlib.nested(
|
|
|
|
|
mock.patch.object(manager.OVSDBManager,
|
|
|
|
|
'_sock_open_connection'),
|
|
|
|
|
mock.patch.object(loopingcall, 'FixedIntervalLoopingCall')) as (
|
|
|
|
|
mock_sock_open_conn, mock_loop):
|
|
|
|
|
with mock.patch.object(manager.OVSDBManager,
|
|
|
|
|
'_sock_open_connection') as mock_sock_open_conn, \
|
|
|
|
|
mock.patch.object(loopingcall,
|
|
|
|
|
'FixedIntervalLoopingCall') as mock_loop:
|
|
|
|
|
self.l2gw_agent_manager.__init__()
|
|
|
|
|
self.assertTrue(mock_sock_open_conn.called)
|
|
|
|
|
self.assertTrue(mock_loop.called)
|
|
|
|
@ -259,14 +248,13 @@ class TestManager(base.BaseTestCase):
|
|
|
|
|
self.l2gw_agent_manager.conf.host = 'fake_host'
|
|
|
|
|
self.l2gw_agent_manager.__init__()
|
|
|
|
|
self.l2gw_agent_manager.l2gw_agent_type = n_const.MONITOR
|
|
|
|
|
with contextlib.nested(
|
|
|
|
|
mock.patch.object(ovsdb_common_class,
|
|
|
|
|
'OVSDB_commom_class'),
|
|
|
|
|
mock.patch.object(eventlet.greenthread,
|
|
|
|
|
'spawn_n'),
|
|
|
|
|
mock.patch.object(self.l2gw_agent_manager,
|
|
|
|
|
'_start_looping_task_ovsdb_states')) as (
|
|
|
|
|
mock_ovsdb_common, mock_thread, mock_looping):
|
|
|
|
|
with mock.patch.object(ovsdb_common_class,
|
|
|
|
|
'OVSDB_commom_class') as mock_ovsdb_common, \
|
|
|
|
|
mock.patch.object(eventlet.greenthread,
|
|
|
|
|
'spawn_n') as mock_thread, \
|
|
|
|
|
mock.patch.object(
|
|
|
|
|
self.l2gw_agent_manager,
|
|
|
|
|
'_start_looping_task_ovsdb_states') as mock_looping:
|
|
|
|
|
self.l2gw_agent_manager.ovsdb_fd = mock_ovsdb_common.return_value
|
|
|
|
|
self.l2gw_agent_manager.ovsdb_fd.check_monitor_table_thread = False
|
|
|
|
|
self.l2gw_agent_manager.ovsdb_fd.check_sock_rcv = True
|
|
|
|
@ -306,11 +294,9 @@ class TestManager(base.BaseTestCase):
|
|
|
|
|
self.l2gw_agent_manager.__init__()
|
|
|
|
|
self.l2gw_agent_manager.l2gw_agent_type = ''
|
|
|
|
|
fake_op_method = 'CREATE'
|
|
|
|
|
with contextlib.nested(
|
|
|
|
|
mock.patch.object(ovsdb_common_class, 'OVSDB_commom_class'),
|
|
|
|
|
mock.patch.object(manager.OVSDBManager,
|
|
|
|
|
'_sock_open_connection')) as (
|
|
|
|
|
mock_ovsdb_common, mock_open_conn):
|
|
|
|
|
with mock.patch.object(ovsdb_common_class, 'OVSDB_commom_class') as mock_ovsdb_common, \
|
|
|
|
|
mock.patch.object(manager.OVSDBManager,
|
|
|
|
|
'_sock_open_connection') as mock_open_conn:
|
|
|
|
|
self.l2gw_agent_manager.ovsdb_fd = mock_ovsdb_common.return_value
|
|
|
|
|
self.l2gw_agent_manager.ovsdb_fd.ovsdb_conn_list = ['fake_ip']
|
|
|
|
|
self.l2gw_agent_manager.update_connection_to_gateway(
|
|
|
|
@ -329,11 +315,10 @@ class TestManager(base.BaseTestCase):
|
|
|
|
|
cfg.CONF.set_override('enable_manager', False, 'ovsdb')
|
|
|
|
|
self.l2gw_agent_manager.__init__()
|
|
|
|
|
fake_op_method = 'CREATE'
|
|
|
|
|
with contextlib.nested(
|
|
|
|
|
mock.patch.object(self.l2gw_agent_manager,
|
|
|
|
|
'_is_valid_request', return_value=True),
|
|
|
|
|
mock.patch.object(ovsdb_writer, 'OVSDBWriter'
|
|
|
|
|
)) as (mock_valid_req, mock_ovsdb_fd):
|
|
|
|
|
with mock.patch.object(self.l2gw_agent_manager,
|
|
|
|
|
'_is_valid_request', return_value=True) as mock_valid_req, \
|
|
|
|
|
mock.patch.object(ovsdb_writer, 'OVSDBWriter'
|
|
|
|
|
) as mock_ovsdb_fd:
|
|
|
|
|
self.l2gw_agent_manager.update_connection_to_gateway(
|
|
|
|
|
self.context, 'fake_ovsdb_id', "fake_logical_switch_dict",
|
|
|
|
|
"fake_locator_dicts", "fake_mac_dicts", "fake_port_dicts",
|
|
|
|
@ -364,11 +349,10 @@ class TestManager(base.BaseTestCase):
|
|
|
|
|
"""Test case to test delete_network with enable_manager=False."""
|
|
|
|
|
cfg.CONF.set_override('enable_manager', False, 'ovsdb')
|
|
|
|
|
self.l2gw_agent_manager.__init__()
|
|
|
|
|
with contextlib.nested(
|
|
|
|
|
mock.patch.object(self.l2gw_agent_manager,
|
|
|
|
|
'_is_valid_request', return_value=True),
|
|
|
|
|
mock.patch.object(ovsdb_writer, 'OVSDBWriter'
|
|
|
|
|
)) as (mock_valid_req, mock_ovsdb_fd):
|
|
|
|
|
with mock.patch.object(self.l2gw_agent_manager,
|
|
|
|
|
'_is_valid_request', return_value=True) as mock_valid_req, \
|
|
|
|
|
mock.patch.object(ovsdb_writer, 'OVSDBWriter'
|
|
|
|
|
) as mock_ovsdb_fd:
|
|
|
|
|
self.l2gw_agent_manager.delete_network(
|
|
|
|
|
self.context, 'fake_ovsdb_id', "fake_logical_switch_uuid")
|
|
|
|
|
ovsdb_sock_fd = mock_ovsdb_fd.return_value
|
|
|
|
@ -381,11 +365,9 @@ class TestManager(base.BaseTestCase):
|
|
|
|
|
cfg.CONF.set_override('enable_manager', True, 'ovsdb')
|
|
|
|
|
self.l2gw_agent_manager.__init__()
|
|
|
|
|
self.l2gw_agent_manager.l2gw_agent_type = ''
|
|
|
|
|
with contextlib.nested(
|
|
|
|
|
mock.patch.object(ovsdb_common_class, 'OVSDB_commom_class'),
|
|
|
|
|
mock.patch.object(manager.OVSDBManager,
|
|
|
|
|
'_sock_open_connection')) as (
|
|
|
|
|
mock_ovsdb_common, mock_open_conn):
|
|
|
|
|
with mock.patch.object(ovsdb_common_class, 'OVSDB_commom_class') as mock_ovsdb_common, \
|
|
|
|
|
mock.patch.object(manager.OVSDBManager,
|
|
|
|
|
'_sock_open_connection') as mock_open_conn:
|
|
|
|
|
self.l2gw_agent_manager.ovsdb_fd = mock_ovsdb_common.return_value
|
|
|
|
|
self.l2gw_agent_manager.ovsdb_fd.ovsdb_conn_list = ['fake_ip']
|
|
|
|
|
self.l2gw_agent_manager.delete_network(
|
|
|
|
@ -415,11 +397,9 @@ class TestManager(base.BaseTestCase):
|
|
|
|
|
cfg.CONF.set_override('enable_manager', True, 'ovsdb')
|
|
|
|
|
self.l2gw_agent_manager.__init__()
|
|
|
|
|
self.l2gw_agent_manager.l2gw_agent_type = ''
|
|
|
|
|
with contextlib.nested(
|
|
|
|
|
mock.patch.object(ovsdb_common_class, 'OVSDB_commom_class'),
|
|
|
|
|
mock.patch.object(manager.OVSDBManager,
|
|
|
|
|
'_sock_open_connection')) as (
|
|
|
|
|
mock_ovsdb_common, mock_open_conn):
|
|
|
|
|
with mock.patch.object(ovsdb_common_class, 'OVSDB_commom_class') as mock_ovsdb_common, \
|
|
|
|
|
mock.patch.object(manager.OVSDBManager,
|
|
|
|
|
'_sock_open_connection') as mock_open_conn:
|
|
|
|
|
self.l2gw_agent_manager.ovsdb_fd = mock_ovsdb_common.return_value
|
|
|
|
|
self.l2gw_agent_manager.ovsdb_fd.check_c_sock = True
|
|
|
|
|
self.l2gw_agent_manager.ovsdb_fd.ovsdb_conn_list = ['fake_ip']
|
|
|
|
@ -439,11 +419,11 @@ class TestManager(base.BaseTestCase):
|
|
|
|
|
"""
|
|
|
|
|
cfg.CONF.set_override('enable_manager', False, 'ovsdb')
|
|
|
|
|
self.l2gw_agent_manager.__init__()
|
|
|
|
|
with contextlib.nested(
|
|
|
|
|
mock.patch.object(self.l2gw_agent_manager,
|
|
|
|
|
'_is_valid_request', return_value=True),
|
|
|
|
|
mock.patch.object(ovsdb_writer, 'OVSDBWriter'
|
|
|
|
|
)) as (mock_valid_req, mock_ovsdb_fd):
|
|
|
|
|
with mock.patch.object(self.l2gw_agent_manager,
|
|
|
|
|
'_is_valid_request',
|
|
|
|
|
return_value=True) as mock_valid_req, \
|
|
|
|
|
mock.patch.object(ovsdb_writer, 'OVSDBWriter'
|
|
|
|
|
) as mock_ovsdb_fd:
|
|
|
|
|
self.l2gw_agent_manager.add_vif_to_gateway(
|
|
|
|
|
self.context, 'fake_ovsdb_id', "fake_logical_switch_dict",
|
|
|
|
|
"fake_locator_dict", "fake_mac_dict")
|
|
|
|
@ -475,11 +455,9 @@ class TestManager(base.BaseTestCase):
|
|
|
|
|
cfg.CONF.set_override('enable_manager', True, 'ovsdb')
|
|
|
|
|
self.l2gw_agent_manager.__init__()
|
|
|
|
|
self.l2gw_agent_manager.l2gw_agent_type = ''
|
|
|
|
|
with contextlib.nested(
|
|
|
|
|
mock.patch.object(ovsdb_common_class, 'OVSDB_commom_class'),
|
|
|
|
|
mock.patch.object(manager.OVSDBManager,
|
|
|
|
|
'_sock_open_connection')) as (
|
|
|
|
|
mock_ovsdb_common, mock_open_conn):
|
|
|
|
|
with mock.patch.object(ovsdb_common_class, 'OVSDB_commom_class') as mock_ovsdb_common, \
|
|
|
|
|
mock.patch.object(manager.OVSDBManager,
|
|
|
|
|
'_sock_open_connection') as mock_open_conn:
|
|
|
|
|
self.l2gw_agent_manager.ovsdb_fd = mock_ovsdb_common.return_value
|
|
|
|
|
self.l2gw_agent_manager.ovsdb_fd.ovsdb_conn_list = ['fake_ip']
|
|
|
|
|
self.l2gw_agent_manager.delete_vif_from_gateway(
|
|
|
|
@ -497,11 +475,10 @@ class TestManager(base.BaseTestCase):
|
|
|
|
|
"""
|
|
|
|
|
cfg.CONF.set_override('enable_manager', False, 'ovsdb')
|
|
|
|
|
self.l2gw_agent_manager.__init__()
|
|
|
|
|
with contextlib.nested(
|
|
|
|
|
mock.patch.object(self.l2gw_agent_manager,
|
|
|
|
|
'_is_valid_request', return_value=True),
|
|
|
|
|
mock.patch.object(ovsdb_writer, 'OVSDBWriter'
|
|
|
|
|
)) as (mock_valid_req, mock_ovsdb_fd):
|
|
|
|
|
with mock.patch.object(self.l2gw_agent_manager,
|
|
|
|
|
'_is_valid_request', return_value=True) as mock_valid_req, \
|
|
|
|
|
mock.patch.object(ovsdb_writer, 'OVSDBWriter'
|
|
|
|
|
) as mock_ovsdb_fd:
|
|
|
|
|
self.l2gw_agent_manager.delete_vif_from_gateway(
|
|
|
|
|
self.context, 'fake_ovsdb_id', "fake_logical_switch_uuid",
|
|
|
|
|
"fake_mac")
|
|
|
|
@ -535,11 +512,9 @@ class TestManager(base.BaseTestCase):
|
|
|
|
|
cfg.CONF.set_override('enable_manager', True, 'ovsdb')
|
|
|
|
|
self.l2gw_agent_manager.__init__()
|
|
|
|
|
self.l2gw_agent_manager.l2gw_agent_type = ''
|
|
|
|
|
with contextlib.nested(
|
|
|
|
|
mock.patch.object(ovsdb_common_class, 'OVSDB_commom_class'),
|
|
|
|
|
mock.patch.object(manager.OVSDBManager,
|
|
|
|
|
'_sock_open_connection')) as (
|
|
|
|
|
mock_ovsdb_common, mock_open_conn):
|
|
|
|
|
with mock.patch.object(ovsdb_common_class, 'OVSDB_commom_class') as mock_ovsdb_common, \
|
|
|
|
|
mock.patch.object(manager.OVSDBManager,
|
|
|
|
|
'_sock_open_connection') as mock_open_conn:
|
|
|
|
|
self.l2gw_agent_manager.ovsdb_fd = mock_ovsdb_common.return_value
|
|
|
|
|
self.l2gw_agent_manager.ovsdb_fd.ovsdb_conn_list = ['fake_ip']
|
|
|
|
|
self.l2gw_agent_manager.update_vif_to_gateway(
|
|
|
|
@ -557,11 +532,10 @@ class TestManager(base.BaseTestCase):
|
|
|
|
|
"""
|
|
|
|
|
cfg.CONF.set_override('enable_manager', False, 'ovsdb')
|
|
|
|
|
self.l2gw_agent_manager.__init__()
|
|
|
|
|
with contextlib.nested(
|
|
|
|
|
mock.patch.object(self.l2gw_agent_manager,
|
|
|
|
|
'_is_valid_request', return_value=True),
|
|
|
|
|
mock.patch.object(ovsdb_writer, 'OVSDBWriter'
|
|
|
|
|
)) as (mock_valid_req, mock_ovsdb_fd):
|
|
|
|
|
with mock.patch.object(self.l2gw_agent_manager,
|
|
|
|
|
'_is_valid_request', return_value=True) as mock_valid_req, \
|
|
|
|
|
mock.patch.object(ovsdb_writer, 'OVSDBWriter'
|
|
|
|
|
) as mock_ovsdb_fd:
|
|
|
|
|
self.l2gw_agent_manager.update_vif_to_gateway(
|
|
|
|
|
self.context, 'fake_ovsdb_id', "fake_locator_dict",
|
|
|
|
|
"fake_mac_dict")
|
|
|
|
|