func createHTTPConnectionManagerForAPIListener()

in grpc-xds/control-plane-go/pkg/xds/lds/http_connection_manager.go [102:143]


func createHTTPConnectionManagerForAPIListener(routeConfigurationName string, statPrefix string) (*http_connection_managerv3.HttpConnectionManager, error) {
	httpFaultFilterConfig, err := anypb.New(&faultv3.HTTPFault{})
	if err != nil {
		return nil, fmt.Errorf("could not marshall HTTPFault HTTP filter into Any instance: %w", err)
	}
	routerFilterConfig, err := anypb.New(&routerv3.Router{})
	if err != nil {
		return nil, fmt.Errorf("could not marshall Router HTTP filter into Any instance: %w", err)
	}
	httpConnectionManager := http_connection_managerv3.HttpConnectionManager{
		CodecType:  http_connection_managerv3.HttpConnectionManager_AUTO,
		StatPrefix: statPrefix,
		HttpFilters: []*http_connection_managerv3.HttpFilter{
			{
				// Enable client-side fault injection.
				Name: envoyFilterHTTPFaultName,
				ConfigType: &http_connection_managerv3.HttpFilter_TypedConfig{
					TypedConfig: httpFaultFilterConfig,
				},
			},
			{
				// Router must be the last HTTP filter.
				Name: envoyFilterHTTPRouterName,
				ConfigType: &http_connection_managerv3.HttpFilter_TypedConfig{
					TypedConfig: routerFilterConfig,
				},
			},
		},
		RouteSpecifier: &http_connection_managerv3.HttpConnectionManager_Rds{
			Rds: &http_connection_managerv3.Rds{
				ConfigSource: &corev3.ConfigSource{
					ConfigSourceSpecifier: &corev3.ConfigSource_Ads{
						Ads: &corev3.AggregatedConfigSource{},
					},
					ResourceApiVersion: corev3.ApiVersion_V3,
				},
				RouteConfigName: routeConfigurationName,
			},
		},
	}
	return &httpConnectionManager, nil
}