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): internal_vnic_index = None if newnexthop: internal_vnic_index = ( edge_utils.get_internal_vnic_index_of_plr_tlr( context, router_id)) 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, gateway_vnic_index=internal_vnic_index)
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)
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': (vcns_const.INTEGRATION_LR_IPADDRESS. split('/')[0]), '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)