absl::StatusOr<Upstream::ClusterConstOptRef> Utility::checkCluster(absl::string_view error_prefix,
api_config_source.api_type() == envoy::config::core::v3::ApiConfigSource::AGGREGATED_GRPC ||
if (api_config_source.cluster_names().empty() && api_config_source.grpc_services().empty()) {
// We don't need to check backing sources for ADS sources, the backing cluster must be verified in
if (api_config_source.api_type() == envoy::config::core::v3::ApiConfigSource::AGGREGATED_GRPC ||
Utility::getGrpcControlPlane(const envoy::config::core::v3::ApiConfigSource& api_config_source) {
Utility::parseRateLimitSettings(const envoy::config::core::v3::ApiConfigSource& api_config_source) {
if (std::isnan(rate_limit_settings.fill_rate_) || std::isinf(rate_limit_settings.fill_rate_)) {
bool isApiTypeAggregated(const envoy::config::core::v3::ApiConfigSource::ApiType api_type) {
bool isApiTypeNonAggregated(const envoy::config::core::v3::ApiConfigSource::ApiType api_type) {
absl::StatusOr<Envoy::OptRef<const envoy::config::core::v3::GrpcService>> maybe_grpc_service =
getGrpcConfigFromApiConfigSource(api_config_source, grpc_service_idx, xdstp_config_source);
static const std::string struct_type(Protobuf::Struct::default_instance().GetTypeName());
return std::make_unique<JitteredExponentialBackOffStrategy>(base_interval_ms, max_interval_ms,