aboutsummaryrefslogtreecommitdiffstats
path: root/vespalib
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@yahooinc.com>2022-08-25 13:27:59 +0000
committerTor Brede Vekterli <vekterli@yahooinc.com>2022-08-25 13:34:11 +0000
commitbf13afeb506b581aa7af898941c3c5cf885946d4 (patch)
tree4bfc92d95caa87e446c84726998ce083fb361337 /vespalib
parenta105ffc48d22834af461cafd17da6e4bc8c7e715 (diff)
Add capabilities and RPC filters for sentinel and internal Proton APIs
Diffstat (limited to 'vespalib')
-rw-r--r--vespalib/src/tests/net/tls/capabilities/capabilities_test.cpp28
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/capability.cpp4
-rw-r--r--vespalib/src/vespa/vespalib/net/tls/capability.h11
3 files changed, 31 insertions, 12 deletions
diff --git a/vespalib/src/tests/net/tls/capabilities/capabilities_test.cpp b/vespalib/src/tests/net/tls/capabilities/capabilities_test.cpp
index 4a20200c631..96d345a40f0 100644
--- a/vespalib/src/tests/net/tls/capabilities/capabilities_test.cpp
+++ b/vespalib/src/tests/net/tls/capabilities/capabilities_test.cpp
@@ -38,12 +38,14 @@ TEST("CapabilitySet instances are equality comparable") {
}
TEST("Can get underlying name of all Capability instances") {
- EXPECT_EQUAL(Capability::content_storage_api().name(), "vespa.content.storage_api"sv);
- EXPECT_EQUAL(Capability::content_document_api().name(), "vespa.content.document_api"sv);
- EXPECT_EQUAL(Capability::content_search_api().name(), "vespa.content.search_api"sv);
- EXPECT_EQUAL(Capability::slobrok_api().name(), "vespa.slobrok.api"sv);
- EXPECT_EQUAL(Capability::content_status_pages().name(), "vespa.content.status_pages"sv);
- EXPECT_EQUAL(Capability::content_metrics_api().name(), "vespa.content.metrics_api"sv);
+ EXPECT_EQUAL(Capability::content_storage_api().name(), "vespa.content.storage_api"sv);
+ EXPECT_EQUAL(Capability::content_document_api().name(), "vespa.content.document_api"sv);
+ EXPECT_EQUAL(Capability::content_search_api().name(), "vespa.content.search_api"sv);
+ EXPECT_EQUAL(Capability::content_proton_admin_api().name(), "vespa.content.proton_admin_api"sv);
+ EXPECT_EQUAL(Capability::slobrok_api().name(), "vespa.slobrok.api"sv);
+ EXPECT_EQUAL(Capability::config_sentinel_api().name(), "vespa.config.sentinel_api"sv);
+ EXPECT_EQUAL(Capability::content_status_pages().name(), "vespa.content.status_pages"sv);
+ EXPECT_EQUAL(Capability::content_metrics_api().name(), "vespa.content.metrics_api"sv);
EXPECT_EQUAL(Capability::content_cluster_controller_internal_state_api().name(),
"vespa.content.cluster_controller.internal_state_api"sv);
}
@@ -69,12 +71,14 @@ void check_capability_set_mapping(const std::string& name, CapabilitySet expecte
}
TEST("All known capabilities can be looked up by name") {
- check_capability_mapping("vespa.content.storage_api", Capability::content_storage_api());
- check_capability_mapping("vespa.content.document_api", Capability::content_document_api());
- check_capability_mapping("vespa.content.search_api", Capability::content_search_api());
- check_capability_mapping("vespa.slobrok.api", Capability::slobrok_api());
- check_capability_mapping("vespa.content.status_pages", Capability::content_status_pages());
- check_capability_mapping("vespa.content.metrics_api", Capability::content_metrics_api());
+ check_capability_mapping("vespa.content.storage_api", Capability::content_storage_api());
+ check_capability_mapping("vespa.content.document_api", Capability::content_document_api());
+ check_capability_mapping("vespa.content.search_api", Capability::content_search_api());
+ check_capability_mapping("vespa.content.proton_admin_api", Capability::content_proton_admin_api());
+ check_capability_mapping("vespa.slobrok.api", Capability::slobrok_api());
+ check_capability_mapping("vespa.config.sentinel_api", Capability::config_sentinel_api());
+ check_capability_mapping("vespa.content.status_pages", Capability::content_status_pages());
+ check_capability_mapping("vespa.content.metrics_api", Capability::content_metrics_api());
check_capability_mapping("vespa.content.cluster_controller.internal_state_api",
Capability::content_cluster_controller_internal_state_api());
}
diff --git a/vespalib/src/vespa/vespalib/net/tls/capability.cpp b/vespalib/src/vespa/vespalib/net/tls/capability.cpp
index 64de250e60d..db357ffd820 100644
--- a/vespalib/src/vespa/vespalib/net/tls/capability.cpp
+++ b/vespalib/src/vespa/vespalib/net/tls/capability.cpp
@@ -16,8 +16,10 @@ constexpr std::array<std::string_view, Capability::max_value_count()> capability
"vespa.content.storage_api"sv,
"vespa.content.document_api"sv,
"vespa.content.search_api"sv,
+ "vespa.content.proton_admin_api"sv,
"vespa.content.cluster_controller.internal_state_api"sv,
"vespa.slobrok.api"sv,
+ "vespa.config.sentinel_api"sv,
"vespa.content.status_pages"sv,
"vespa.content.metrics_api"sv,
};
@@ -40,8 +42,10 @@ std::optional<Capability> Capability::find_capability(const string& cap_name) no
{"vespa.content.storage_api", content_storage_api()},
{"vespa.content.document_api", content_document_api()},
{"vespa.content.search_api", content_search_api()},
+ {"vespa.content.proton_admin_api", content_proton_admin_api()},
{"vespa.content.cluster_controller.internal_state_api", content_cluster_controller_internal_state_api()},
{"vespa.slobrok.api", slobrok_api()},
+ {"vespa.config.sentinel_api", config_sentinel_api()},
{"vespa.content.status_pages", content_status_pages()},
{"vespa.content.metrics_api", content_metrics_api()},
});
diff --git a/vespalib/src/vespa/vespalib/net/tls/capability.h b/vespalib/src/vespa/vespalib/net/tls/capability.h
index 842e3f3a363..3b4f7d79264 100644
--- a/vespalib/src/vespa/vespalib/net/tls/capability.h
+++ b/vespalib/src/vespa/vespalib/net/tls/capability.h
@@ -23,12 +23,15 @@ private:
// Each ID value corresponds to a unique single-bit position.
// These values shall never be exposed outside the running process, i.e. they
// must be possible to change arbitrarily internally across versions.
+ // Changes must be reflected in capabilities_test.cpp
enum class Id : uint32_t {
ContentStorageApi = 0, // Must start at zero
ContentDocumentApi,
ContentSearchApi,
+ ContentProtonAdminApi,
ContentClusterControllerInternalStateApi,
SlobrokApi,
+ ConfigSentinelApi,
ContentStatusPages,
ContentMetricsApi,
// When adding a capability ID to the end, max_value_count() MUST be updated
@@ -80,6 +83,10 @@ public:
return Capability(Id::ContentSearchApi);
}
+ constexpr static Capability content_proton_admin_api() noexcept {
+ return Capability(Id::ContentProtonAdminApi);
+ }
+
constexpr static Capability content_cluster_controller_internal_state_api() noexcept {
return Capability(Id::ContentClusterControllerInternalStateApi);
}
@@ -88,6 +95,10 @@ public:
return Capability(Id::SlobrokApi);
}
+ constexpr static Capability config_sentinel_api() noexcept {
+ return Capability(Id::ConfigSentinelApi);
+ }
+
constexpr static Capability content_status_pages() noexcept {
return Capability(Id::ContentStatusPages);
}