code: def _get_underscheduled_routers(self, plugin, context):
          
          underscheduled_routers = []
          max_agents_for_ha = plugin.get_number_of_agents_for_scheduling(context)
  
          for router, count in plugin.get_routers_l3_agents_count(context):
              if (router[routertype.TYPE_ATTR] !=
                      plugin.get_namespace_router_type_id(context)):
                  # ignore non-namespace routers
                  continue
              if (count < 1 or
                  router.get('ha', False) and count < max_agents_for_ha):
                  # Either the router was un-scheduled (scheduled to 0 agents),
                  # or it's an HA router and it was under-scheduled (scheduled to
                  # less than max_agents_for_ha). Either way, it should be added
                  # to the list of routers we want to handle.
                  underscheduled_routers.append(router)
          return underscheduled_routers
docs: For release >= pike.