← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1417409] [NEW] Add dvr router to dvr_snat agent failed

 

Public bug reported:

reproduce progress:
1. create a dvr router
2. 'router-interface-add' add a subnet to this dvr
3. 'router-gateway-set'
4. 'l3-agent-router-remove' remove the dvr_snat agent from the router
5. l3-agent-router-add this dvr_snat agent to the router

the error log in neutron-server is bellow:
create failed (client error): Agent 3b61ea90-8373-4609-adda-c10118401f4a is n
ot a L3 Agent or has been disabled

the reason is that when it check the ports on l3 agent, if l3_agent['host'] != port['binding:host_id']), this agent will be pass, but for
a dvr_snat  agent, there will no port on it
    def check_ports_exist_on_l3agent(self, context, l3_agent, router_id):
        """
        This function checks for existence of dvr serviceable
        ports on the host, running the input l3agent.
        """
        subnet_ids = self.get_subnet_ids_on_router(context, router_id)

        core_plugin = manager.NeutronManager.get_plugin()
        filter = {'fixed_ips': {'subnet_id': subnet_ids}}
        ports = core_plugin.get_ports(context, filters=filter)
        for port in ports:
            if (n_utils.is_dvr_serviced(port['device_owner']) and
                l3_agent['host'] == port['binding:host_id']):
                    return True

        return False

** Affects: neutron
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1417409

Title:
  Add dvr router to dvr_snat agent failed

Status in OpenStack Neutron (virtual network service):
  New

Bug description:
  reproduce progress:
  1. create a dvr router
  2. 'router-interface-add' add a subnet to this dvr
  3. 'router-gateway-set'
  4. 'l3-agent-router-remove' remove the dvr_snat agent from the router
  5. l3-agent-router-add this dvr_snat agent to the router

  the error log in neutron-server is bellow:
  create failed (client error): Agent 3b61ea90-8373-4609-adda-c10118401f4a is n
  ot a L3 Agent or has been disabled

  the reason is that when it check the ports on l3 agent, if l3_agent['host'] != port['binding:host_id']), this agent will be pass, but for
  a dvr_snat  agent, there will no port on it
      def check_ports_exist_on_l3agent(self, context, l3_agent, router_id):
          """
          This function checks for existence of dvr serviceable
          ports on the host, running the input l3agent.
          """
          subnet_ids = self.get_subnet_ids_on_router(context, router_id)

          core_plugin = manager.NeutronManager.get_plugin()
          filter = {'fixed_ips': {'subnet_id': subnet_ids}}
          ports = core_plugin.get_ports(context, filters=filter)
          for port in ports:
              if (n_utils.is_dvr_serviced(port['device_owner']) and
                  l3_agent['host'] == port['binding:host_id']):
                      return True

          return False

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1417409/+subscriptions


Follow ups

References