@@ -2255,6 +2255,62 @@ def remove_gateway_from_router(self, router, **body):
22552255 """
22562256 return router .remove_gateway (self .session , ** body )
22572257
2258+ def routers_hosting_l3_agents (self , router , ** query ):
2259+ """Return a generator of L3 agent hosting a router
2260+
2261+ :param router: Either the router id or an instance of
2262+ :class:`~openstack.network.v2.router.Router`
2263+ :param kwargs \*\*query: Optional query parameters to be sent to limit
2264+ the resources returned
2265+
2266+ :returns: A generator of Router L3 Agents
2267+ :rtype: :class:`~openstack.network.v2.router.RouterL3Agents`
2268+ """
2269+ router = self ._get_resource (_router .Router , router )
2270+ return self ._list (_agent .RouterL3Agent , paginated = False ,
2271+ router_id = router .id , ** query )
2272+
2273+ def agent_hosted_routers (self , agent , ** query ):
2274+ """Return a generator of routers hosted by a L3 agent
2275+
2276+ :param agent: Either the agent id of an instance of
2277+ :class:`~openstack.network.v2.network_agent.Agent`
2278+ :param kwargs \*\*query: Optional query parameters to be sent to limit
2279+ the resources returned
2280+
2281+ :returns: A generator of routers
2282+ :rtype: :class:`~openstack.network.v2.agent.L3AgentRouters`
2283+ """
2284+ agent = self ._get_resource (_agent .Agent , agent )
2285+ return self ._list (_router .L3AgentRouter , paginated = False ,
2286+ agent_id = agent .id , ** query )
2287+
2288+ def add_router_to_agent (self , agent , router ):
2289+ """Add router to L3 agent
2290+
2291+ :param agent: Either the id of an agent
2292+ :class:`~openstack.network.v2.agent.Agent` instance
2293+ :param router: A router instance
2294+ :returns: Agent with attached router
2295+ :rtype: :class:`~openstack.network.v2.agent.Agent`
2296+ """
2297+ agent = self ._get_resource (_agent .Agent , agent )
2298+ router = self ._get_resource (_router .Router , router )
2299+ return agent .add_router_to_agent (self .session , router .id )
2300+
2301+ def remove_router_from_agent (self , agent , router ):
2302+ """Remove router from L3 agent
2303+
2304+ :param agent: Either the id of an agent or an
2305+ :class:`~openstack.network.v2.agent.Agent` instance
2306+ :param router: A router instance
2307+ :returns: Agent with removed router
2308+ :rtype: :class:`~openstack.network.v2.agent.Agent`
2309+ """
2310+ agent = self ._get_resource (_agent .Agent , agent )
2311+ router = self ._get_resource (_router .Router , router )
2312+ return agent .remove_router_from_agent (self .session , router .id )
2313+
22582314 def create_security_group (self , ** attrs ):
22592315 """Create a new security group from attributes
22602316
0 commit comments