def _update_routes_on_routers(self, context, target_router_id, router_ids, only_if_target_routes=False): if only_if_target_routes: # First check if the target router has any routes or next hop # If not - it means that nothing changes so we can skip this # backend call target_routes = self._get_router_routes(context, target_router_id) target_next_hop = self._get_router_next_hop( context, target_router_id) if not target_routes and not target_next_hop: LOG.debug( "_update_routes_on_routers skipped since router %s " "has no routes", target_router_id) return nexthop = None all_routes = [] for router_id in router_ids: routes = self._get_router_routes(context, router_id) filters = {'device_id': [router_id]} ports = self.plugin.get_ports(context.elevated(), filters) self.plugin._add_network_info_for_routes(context, routes, ports) all_routes.extend(routes) if not nexthop: router_nexthop = self._get_router_next_hop(context, router_id) if router_nexthop: nexthop = router_nexthop # TODO(berlin) do rollback op. edge_utils.update_routes(self.nsx_v, context, target_router_id, all_routes, nexthop)
def _update_routes_on_routers(self, context, target_router_id, router_ids, only_if_target_routes=False): if only_if_target_routes: # First check if the target router has any routes or next hop # If not - it means that nothing changes so we can skip this # backend call target_routes = self._get_router_routes(context, target_router_id) target_next_hop = self._get_router_next_hop( context, target_router_id) if not target_routes and not target_next_hop: LOG.debug("_update_routes_on_routers skipped since router %s " "has no routes", target_router_id) return nexthop = None all_routes = [] for router_id in router_ids: routes = self._get_router_routes(context, router_id) filters = {'device_id': [router_id]} ports = self.plugin.get_ports(context.elevated(), filters) self.plugin._add_network_info_for_routes(context, routes, ports) all_routes.extend(routes) if not nexthop: router_nexthop = self._get_router_next_hop(context, router_id) if router_nexthop: nexthop = router_nexthop # TODO(berlin) do rollback op. edge_utils.update_routes(self.nsx_v, context, target_router_id, all_routes, nexthop)
def _update_routes_on_tlr( self, context, router_id, newnexthop=vcns_const.INTEGRATION_EDGE_IPADDRESS, metadata_gateway=None): internal_vnic_index = None if newnexthop: internal_vnic_index = ( edge_utils.get_internal_vnic_index_of_plr_tlr( context, router_id)) routes = [] # If metadata service is configured, add a static route to direct # metadata requests to a DHCP Edge on one of the attached networks if metadata_gateway: routes.append({'destination': METADATA_CIDR, 'nexthop': metadata_gateway['ip_address'], 'network_id': metadata_gateway['network_id']}) # Add extra routes referring to internal network on tlr extra_routes = self.plugin._prepare_edge_extra_routes( context, router_id) routes.extend([route for route in extra_routes if not route.get('external')]) edge_utils.update_routes(self.nsx_v, context, router_id, routes, newnexthop, gateway_vnic_index=internal_vnic_index)
def _update_routes_on_tlr(self, context, router_id, newnexthop=vcns_const.INTEGRATION_EDGE_IPADDRESS, metadata_gateway=None): internal_vnic_index = None if newnexthop: internal_vnic_index = ( edge_utils.get_internal_vnic_index_of_plr_tlr( context, router_id)) routes = [] # If metadata service is configured, add a static route to direct # metadata requests to a DHCP Edge on one of the attached networks if metadata_gateway: routes.append({ 'destination': METADATA_CIDR, 'nexthop': metadata_gateway['ip_address'], 'network_id': metadata_gateway['network_id'] }) # Add extra routes referring to internal network on tlr extra_routes = self.plugin._prepare_edge_extra_routes( context, router_id) routes.extend( [route for route in extra_routes if not route.get('external')]) edge_utils.update_routes(self.nsx_v, context, router_id, routes, newnexthop, gateway_vnic_index=internal_vnic_index)
def _update_routes_on_tlr( self, context, router_id, newnexthop=edge_utils.get_vdr_transit_network_plr_address()): routes = [] # Add extra routes referring to internal network on tlr extra_routes = self.plugin._prepare_edge_extra_routes( context, router_id) routes.extend([route for route in extra_routes if not route.get('external')]) edge_utils.update_routes(self.nsx_v, context, router_id, routes, newnexthop)
def _update_routes_on_plr(self, context, router_id, plr_id, newnexthop): lswitch_id = edge_utils.get_internal_lswitch_id_of_plr_tlr( context, router_id) subnets = self.plugin._find_router_subnets_cidrs( context.elevated(), router_id) routes = [] for subnet in subnets: routes.append({ 'destination': subnet, 'nexthop': (edge_utils.get_vdr_transit_network_tlr_address()), 'network_id': lswitch_id }) # Add extra routes referring to external network on plr extra_routes = self.plugin._prepare_edge_extra_routes( context, router_id) routes.extend([route for route in extra_routes if route.get('external')]) edge_utils.update_routes(self.nsx_v, context, plr_id, routes, newnexthop)
def _update_routes_on_tlr( self, context, router_id, newnexthop=edge_utils.get_vdr_transit_network_plr_address(), metadata_gateway=None): routes = [] # If metadata service is configured, add a static route to direct # metadata requests to a DHCP Edge on one of the attached networks if metadata_gateway: routes.append({'destination': METADATA_CIDR, 'nexthop': metadata_gateway['ip_address'], 'network_id': metadata_gateway['network_id']}) # Add extra routes referring to internal network on tlr extra_routes = self.plugin._prepare_edge_extra_routes( context, router_id) routes.extend([route for route in extra_routes if not route.get('external')]) edge_utils.update_routes(self.nsx_v, context, router_id, routes, newnexthop)
def _update_routes_on_routers(self, context, target_router_id, router_ids): nexthop = None all_routes = [] for router_id in router_ids: routes = self.plugin._get_extra_routes_by_router_id( context, router_id) filters = {'device_id': [router_id]} ports = self.plugin.get_ports(context.elevated(), filters) self.plugin._add_network_info_for_routes(context, routes, ports) all_routes.extend(routes) if not nexthop: router_qry = context.session.query(l3_db.Router) router_db = router_qry.filter_by(id=router_id).one() router_nexthop = self.plugin._get_external_attachment_info( context, router_db)[2] if router_nexthop: nexthop = router_nexthop # TODO(berlin) do rollback op. edge_utils.update_routes(self.nsx_v, context, target_router_id, all_routes, nexthop)