func IsGRPCSupportRequiredForOPConfig()

in src/go/configgenerator/filtergen/util.go [127:157]


func IsGRPCSupportRequiredForOPConfig(serviceConfig *servicepb.Service, opts options.ConfigGeneratorOptions) (bool, error) {
	if isLocalBackendGRPC, err := util.IsBackendGRPC(opts.BackendAddress); err != nil {
		return false, fmt.Errorf("fail to check local backend address: %v", err)
	} else if isLocalBackendGRPC {
		return true, nil
	}

	if opts.EnableBackendAddressOverride {
		return false, nil
	}

	for _, rule := range serviceConfig.GetBackend().GetRules() {
		if util.ShouldSkipOPDiscoveryAPI(rule.GetSelector(), opts.AllowDiscoveryAPIs) {
			glog.Warningf("Skip backend rule %q because discovery API is not supported.", rule.GetSelector())
			continue
		}

		if rule.GetAddress() == "" {
			glog.Infof("Skip backend rule %q because it does not have dynamic routing address.", rule.GetSelector())
			return false, nil
		}

		if isRemoteBackendGRPC, err := util.IsBackendGRPC(rule.GetAddress()); err != nil {
			return false, fmt.Errorf("fail to check remote backend address for selector %q: %v", rule.GetSelector(), err)
		} else if isRemoteBackendGRPC {
			return true, nil
		}
	}

	return false, nil
}