def test_port_bind_retry(self): agent = helpers.register_ovs_agent(host=helpers.HOST) helpers.kill_agent(agent_id=agent.id) with self.network() as network: with self.subnet(network=network) as subnet: with self.port(subnet=subnet, device_owner=DEVICE_OWNER_COMPUTE, arg_list=( portbindings.HOST_ID, 'admin_state_up', ), **self.host_args) as port: # Since the agent is dead, expect binding to fail self.assertEqual(port['port']['binding:vif_type'], portbindings.VIF_TYPE_BINDING_FAILED) helpers.revive_agent(agent.id) # When an agent starts, The RPC call get_device_details() # will invoke get_bound_port_context() which eventually use # _bind_port_if_needed() bound_context = self.plugin.get_bound_port_context( self.admin_context, port['port']['id'], helpers.HOST) # Since the agent is back online, expect binding to succeed self.assertEqual(bound_context.vif_type, portbindings.VIF_TYPE_OVS) self.assertEqual(bound_context.current['binding:vif_type'], portbindings.VIF_TYPE_OVS)
def register_bgp_dragent(host=helpers.HOST, admin_state_up=True, alive=True): agent = helpers._register_agent(_get_bgp_dragent_dict(host)) if not admin_state_up: helpers.set_agent_admin_state(agent['id']) if not alive: helpers.kill_agent(agent['id']) return helpers.FakePlugin()._get_agent_by_type_and_host( context.get_admin_context(), agent['agent_type'], agent['host'])
def register_bgp_dragent(host=helpers.HOST, admin_state_up=True, alive=True): agent = helpers._register_agent( _get_bgp_dragent_dict(host)) if not admin_state_up: helpers.set_agent_admin_state(agent['id']) if not alive: helpers.kill_agent(agent['id']) return helpers.FakePlugin()._get_agent_by_type_and_host( context.get_admin_context(), agent['agent_type'], agent['host'])
def test_loadbalancer_reschedule_from_dead_lbaas_agent(self): self._register_agent_states(lbaas_agents=True) with self.loadbalancer() as loadbalancer: loadbalancer_data = loadbalancer['loadbalancer'] self.plugin.db.update_loadbalancer_provisioning_status( self.adminContext, loadbalancer_data['id']) original_agent = self._get_lbaas_agent_hosting_loadbalancer( loadbalancer_data['id']) self.assertIsNotNone(original_agent) helpers.kill_agent(original_agent['agent']['id']) self.load_balancer.reschedule_lbaas_from_down_agents() rescheduled_agent = self._get_lbaas_agent_hosting_loadbalancer( loadbalancer_data['id']) self.assertNotEqual(original_agent, rescheduled_agent)
def test_port_bind_retry(self): agent = helpers.register_ovs_agent(host=helpers.HOST) helpers.kill_agent(agent_id=agent.id) with self.network() as network: with self.subnet(network=network) as subnet: with self.port( subnet=subnet, device_owner=DEVICE_OWNER_COMPUTE, arg_list=(portbindings.HOST_ID, 'admin_state_up',), **self.host_args) as port: # Since the agent is dead, expect binding to fail self.assertEqual(port['port']['binding:vif_type'], portbindings.VIF_TYPE_BINDING_FAILED) helpers.revive_agent(agent.id) # When an agent starts, The RPC call get_device_details() # will invoke get_bound_port_context() which eventually use # _bind_port_if_needed() bound_context = self.plugin.get_bound_port_context( self.admin_context, port['port']['id'], helpers.HOST) # Since the agent is back online, expect binding to succeed self.assertEqual(bound_context.vif_type, portbindings.VIF_TYPE_OVS) self.assertEqual(bound_context.current['binding:vif_type'], portbindings.VIF_TYPE_OVS)
def test_get_number_of_agents_for_scheduling_not_enough_agents(self): cfg.CONF.set_override('min_l3_agents_per_router', 3) helpers.kill_agent(helpers.register_l3_agent(host='l3host_3')['id']) self.assertRaises(l3_ext_ha_mode.HANotEnoughAvailableAgents, self.plugin.get_number_of_agents_for_scheduling, self.admin_ctx)