

def remove_router_from_l3_agent(self, context, agent_id, router_id):
    'Remove the router from l3 agent.\n\n        After removal, the router will be non-hosted until there is update\n        which leads to re-schedule or be added to another agent manually.\n        '
    agent = self._get_agent(context, agent_id)
    agent_mode = self._get_agent_mode(agent)
    if (agent_mode == n_const.L3_AGENT_MODE_DVR):
        raise l3agentscheduler.DVRL3CannotRemoveFromDvrAgent()
    self._unbind_router(context, router_id, agent_id)
    router = self.get_router(context, router_id)
    if router.get('ha'):
        plugin = manager.NeutronManager.get_service_plugins().get(service_constants.L3_ROUTER_NAT)
        plugin.delete_ha_interfaces_on_host(context, router_id, agent.host)
    l3_notifier = self.agent_notifiers.get(constants.AGENT_TYPE_L3)
    if l3_notifier:
        l3_notifier.router_removed_from_agent(context, router_id, agent.host)

dataset/ETHPy150Open openstack/neutron/neutron/db/l3_agentschedulers_db.py L3AgentSchedulerDbMixin.remove_router_from_l3_agent/original