envoyproxy / envoyproxy/envoy

make `per_filter_config` specific configs work automatically for filters

Open
#10,164 4 comments 0 reactions 0 assignees View on GitHub
area/http enhancement help wanted
Dominant language
C++
Stars
28.9k
Forks
5.6k
Avg merge
1d 20h
Merged PRs (30d)
437

Description

Currently filter writers need additional plumbing to allow their filter to do per vhost/route overrides. E.g.:

```
// Fetch the virtual host specific config.
const VHostSpecificFilterConfig* Filter::getSpecificConfig() const {
if (!decoder_callbacks_->route() || !decoder_callbacks_->route()->routeEntry()) {
return nullptr;
}

const auto* entry = decoder_callbacks_->route()->routeEntry();
const auto* settings = entry->virtualHost().perFilterConfig("pinterest.my_filter");

if (settings != nullptr) {
auto* vhost_config = dynamic_cast(settings);
return vhost_config;
}

return nullptr;
}
```

and then you have to merge that, with the config object you got from the Filter Factory. It's not _that_ much logic, but it's a bit of hassle to a) do it for every filter and b) remember that you have to do it.

Thoughts on providing some plumbing to avoid repeating the above pattern (or thoughts on the general future of per vhost/route config overrides)?

cc: @mattklein123 @htuch @fishcakez

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.