def test_agent_change_controller(self): self.assertEqual(neutron_agent.ControllerGatewayAgent, type(neutron_agent.AgentCache()[self.chassis_name])) self.sb_api.db_set('Chassis', self.chassis_name, ('external_ids', { 'ovn-cms-options': '' })).execute(check_error=True) n_utils.wait_until_true(lambda: neutron_agent.AgentCache()[ self.chassis_name].chassis.external_ids['ovn-cms-options'] == '') self.assertEqual(neutron_agent.ControllerAgent, type(neutron_agent.AgentCache()[self.chassis_name]))
def test_agent_updated_at_use_nb_cfg_timestamp(self): def check_agent_ts(): agent = neutron_agent.AgentCache()[self.chassis_name] chassis_ts = self.sb_api.db_get( 'Chassis_Private', self.chassis_name, 'nb_cfg_timestamp').execute(check_error=True) updated_at = datetime.datetime.fromtimestamp( int(chassis_ts / 1000), datetime.timezone.utc) return agent.updated_at == updated_at if not self.sb_api.is_table_present('Chassis_Private'): self.skipTest('Ovn sb not support Chassis_Private') timestamp = timeutils.utcnow_ts() nb_cfg_timestamp = timestamp * 1000 self.sb_api.db_set( 'Chassis_Private', self.chassis_name, ('nb_cfg_timestamp', nb_cfg_timestamp)).execute(check_error=True) try: n_utils.wait_until_true(check_agent_ts, timeout=5) except n_utils.WaitTimeout: agent = neutron_agent.AgentCache()[self.chassis_name] chassis_ts = self.sb_api.db_get( 'Chassis_Private', self.chassis_name, 'nb_cfg_timestamp').execute(check_error=True) self.fail('Chassis timestamp: %s, agent updated_at: %s' % (chassis_ts, str(agent.updated_at)))
def test_network_agent_present(self): chassis_row = self.sb_api.db_find( 'Chassis', ('name', '=', self.chassis_name)).execute(check_error=True) self.assertTrue(chassis_row) self.assertEqual(neutron_agent.ControllerGatewayAgent, type(neutron_agent.AgentCache()[self.chassis_name]))
def check_agent_ts(): agent = neutron_agent.AgentCache()[self.chassis_name] chassis_ts = self.sb_api.db_get( 'Chassis_Private', self.chassis_name, 'nb_cfg_timestamp').execute(check_error=True) updated_at = datetime.datetime.fromtimestamp( int(chassis_ts / 1000), datetime.timezone.utc) return agent.updated_at == updated_at
def setUp(self): super().setUp() self.agent_cache = neutron_agent.AgentCache(driver=mock.ANY) self.addCleanup(self._clean_agent_cache) self.names_ref = [] for i in range(10): # Add 10 agents. chassis_private = fakes.FakeOvsdbRow.create_one_ovsdb_row( attrs={'name': 'chassis' + str(i)}) self.agent_cache.update(ovn_const.OVN_CONTROLLER_AGENT, chassis_private) self.names_ref.append('chassis' + str(i))
def setUp(self): super(TestAgentMonitor, self).setUp() self.l3_plugin = directory.get_plugin(plugin_constants.L3) self.mock_ovsdb_idl = mock.Mock() self.handler = self.sb_api.idl.notify_handler self.mock_ovsdb_idl = mock.Mock() chassis_name = uuidutils.generate_uuid() row_event = WaitForChassisPrivateCreateEvent( chassis_name, self.mech_driver.agent_chassis_table) self.mech_driver.sb_ovn.idl.notify_handler.watch_event(row_event) self.chassis_name = self.add_fake_chassis( self.FAKE_CHASSIS_HOST, external_ids={'ovn-cms-options': 'enable-chassis-as-gw'}, name=chassis_name) self.assertTrue(row_event.wait()) n_utils.wait_until_true( lambda: len(list(neutron_agent.AgentCache())) == 1)
def run(self, event, row, old): n_agent.AgentCache().update(ovn_const.OVN_METADATA_AGENT, row, clear_down=True)
def run(self, event, row, old): n_agent.AgentCache().update(ovn_const.OVN_CONTROLLER_AGENT, row, clear_down=event == self.ROW_CREATE)
def run(self, event, row, old): del n_agent.AgentCache()[row.external_ids['delete_agent']]
def run(self, event, row, old): for agent in n_agent.AgentCache().agents_by_chassis_private(row): agent.set_down = True