Skip to content

Commit d71abd4

Browse files
committed
bpf_metadata: Override unimplemented Delta xDS in npds_config
We do not yet implement Delta xDS so downgrade it to SotW in npds_config. Signed-off-by: Jarno Rajahalme <jarno@isovalent.com>
1 parent 04ee1bc commit d71abd4

2 files changed

Lines changed: 33 additions & 0 deletions

File tree

cilium/bpf_metadata.cc

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,19 @@ Config::Config(const ::cilium::BpfMetadata& config,
241241
random_(context.serverFactoryContext().api().randomGenerator()),
242242
npds_config_(config.has_npds_config() ? config.npds_config()
243243
: Cilium::CILIUM_XDS_API_CONFIG) {
244+
// Delta xDS is not yet supported, override if present.
245+
// This is needed for upgrade/downgrade compatibility.
246+
if (npds_config_.config_source_specifier_case() ==
247+
envoy::config::core::v3::ConfigSource::kApiConfigSource) {
248+
const auto& api_type = npds_config_.api_config_source().api_type();
249+
if (api_type == envoy::config::core::v3::ApiConfigSource::DELTA_GRPC) {
250+
npds_config_.mutable_api_config_source()->set_api_type(
251+
envoy::config::core::v3::ApiConfigSource::GRPC);
252+
} else if (api_type == envoy::config::core::v3::ApiConfigSource::AGGREGATED_DELTA_GRPC) {
253+
npds_config_.mutable_api_config_source()->set_api_type(
254+
envoy::config::core::v3::ApiConfigSource::AGGREGATED_GRPC);
255+
}
256+
}
244257
if (is_l7lb_ && is_ingress_) {
245258
throw EnvoyException("cilium.bpf_metadata: is_l7lb may not be set with is_ingress");
246259
}

tests/bpf_metadata_config_test.cc

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,26 @@ TEST_F(MetadataConfigTest, NpdsConfigSupported) {
232232
EXPECT_NO_THROW(initialize(config));
233233
}
234234

235+
TEST_F(MetadataConfigTest, NpdsConfigDowngradesDeltaGrpcToSotw) {
236+
::cilium::BpfMetadata config{};
237+
config.mutable_npds_config()->mutable_api_config_source()->set_api_type(
238+
envoy::config::core::v3::ApiConfigSource::DELTA_GRPC);
239+
240+
EXPECT_NO_THROW(initialize(config));
241+
EXPECT_EQ(envoy::config::core::v3::ApiConfigSource::GRPC,
242+
config_->npds_config_.api_config_source().api_type());
243+
}
244+
245+
TEST_F(MetadataConfigTest, NpdsConfigDowngradesAggregatedDeltaGrpcToSotw) {
246+
::cilium::BpfMetadata config{};
247+
config.mutable_npds_config()->mutable_api_config_source()->set_api_type(
248+
envoy::config::core::v3::ApiConfigSource::AGGREGATED_DELTA_GRPC);
249+
250+
EXPECT_NO_THROW(initialize(config));
251+
EXPECT_EQ(envoy::config::core::v3::ApiConfigSource::AGGREGATED_GRPC,
252+
config_->npds_config_.api_config_source().api_type());
253+
}
254+
235255
TEST_F(MetadataConfigTest, EmptyConfig) {
236256
::cilium::BpfMetadata config{};
237257

0 commit comments

Comments
 (0)