func NewServiceControlFilterGensFromOPConfig()

in src/go/configgenerator/filtergen/service_control.go [93:147]


func NewServiceControlFilterGensFromOPConfig(serviceConfig *confpb.Service, opts options.ConfigGeneratorOptions, params ServiceControlOPFactoryParams) ([]FilterGenerator, error) {
	if opts.SkipServiceControlFilter {
		glog.Infof("Not adding service control (v1) filter gen because the feature is disabled by option.")
		return nil, nil
	}

	if serviceConfig.GetControl().GetEnvironment() == "" {
		glog.Infof("Not adding service control (v1) filter gen because the service control URL is not set in OP config.")
		return nil, nil
	}

	grpcSupportRequired, err := IsGRPCSupportRequiredForOPConfig(serviceConfig, opts)
	if err != nil {
		return nil, err
	}

	scURL, err := ParseServiceControlURLFromOPConfig(serviceConfig, opts)
	if err != nil {
		return nil, err
	}

	requirements, err := MakeMethodRequirementsFromOPConfig(serviceConfig, opts)
	if err != nil {
		return nil, err
	}

	return []FilterGenerator{
		&ServiceControlGenerator{
			ServiceName:                 serviceConfig.GetName(),
			ServiceConfigID:             serviceConfig.GetId(),
			ProducerProjectID:           serviceConfig.GetProducerProjectId(),
			ServiceConfig:               serviceConfig,
			GRPCSupportRequired:         grpcSupportRequired,
			ServiceControlURI:           scURL,
			CallCredentials:             opts.ServiceControlCredentials,
			AccessToken:                 helpers.NewFilterAccessTokenConfigerFromOPConfig(opts),
			DisableTracing:              opts.CommonOptions.TracingOptions.DisableTracing,
			TracingProjectID:            opts.CommonOptions.TracingOptions.ProjectId,
			HttpRequestTimeout:          opts.HttpRequestTimeout,
			GeneratedHeaderPrefix:       opts.GeneratedHeaderPrefix,
			IAMURL:                      opts.IamURL,
			DependencyErrorBehavior:     opts.DependencyErrorBehavior,
			ClientIPFromForwardedHeader: opts.ClientIPFromForwardedHeader,
			LogRequestHeaders:           opts.LogRequestHeaders,
			LogResponseHeaders:          opts.LogResponseHeaders,
			LogJwtPayloads:              opts.LogJwtPayloads,
			MinStreamReportIntervalMs:   opts.MinStreamReportIntervalMs,
			ComputePlatformOverride:     opts.ComputePlatformOverride,
			MethodRequirements:          requirements,
			CallingConfig:               MakeSCCallingConfigFromOPConfig(opts),
			GCPAttributes:               params.GCPAttributes,
			EnableApiKeyUidReporting:    opts.ServiceControlEnableApiKeyUidReporting,
		},
	}, nil
}