func CreateRouteConfigurationForGRPCServerListener()

in grpc-xds/control-plane-go/pkg/xds/rds/route_grpc_server.go [31:72]


func CreateRouteConfigurationForGRPCServerListener(enableRBAC bool) (*routev3.RouteConfiguration, error) {
	name := lds.GRPCServerListenerRouteConfigurationName
	routeConfiguration := routev3.RouteConfiguration{
		Name: name,
		VirtualHosts: []*routev3.VirtualHost{
			{
				// The VirtualHost name _doesn't_ have to match the RouteConfiguration name.
				Name:    name,
				Domains: []string{"*"},
				Routes: []*routev3.Route{
					{
						Match: &routev3.RouteMatch{
							PathSpecifier: &routev3.RouteMatch_Prefix{
								Prefix: "/",
							},
						},
						Action: &routev3.Route_NonForwardingAction{
							NonForwardingAction: &routev3.NonForwardingAction{},
						},
						Decorator: &routev3.Decorator{
							Operation: name + "/*",
						},
					},
				},
			},
		},
	}
	if enableRBAC {
		rbacPerRouteConfig, err := createRBACPerRouteConfig("xds", "host-certs")
		if err != nil {
			return nil, fmt.Errorf("could not marshall RBACPerRoute typedConfig into Any instance: %w", err)
		}
		for _, virtualHost := range routeConfiguration.VirtualHosts {
			for _, route := range virtualHost.Routes {
				route.TypedPerFilterConfig = map[string]*anypb.Any{
					lds.EnvoyFilterHTTPRBACName: rbacPerRouteConfig,
				}
			}
		}
	}
	return &routeConfiguration, nil
}