示例#1
0
 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]))
示例#2
0
    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)))
示例#3
0
 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]))
示例#4
0
 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
示例#5
0
 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))
示例#6
0
 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)
示例#7
0
 def run(self, event, row, old):
     n_agent.AgentCache().update(ovn_const.OVN_METADATA_AGENT, row,
                                 clear_down=True)
示例#8
0
 def run(self, event, row, old):
     n_agent.AgentCache().update(ovn_const.OVN_CONTROLLER_AGENT, row,
                                 clear_down=event == self.ROW_CREATE)
示例#9
0
 def run(self, event, row, old):
     del n_agent.AgentCache()[row.external_ids['delete_agent']]
示例#10
0
 def run(self, event, row, old):
     for agent in n_agent.AgentCache().agents_by_chassis_private(row):
         agent.set_down = True