summaryrefslogtreecommitdiff
path: root/controller
diff options
context:
space:
mode:
authorGrant Limberg <[email protected]>2023-09-06 09:44:25 -0700
committerGrant Limberg <[email protected]>2023-09-06 09:44:25 -0700
commit8426677c5589abba3e1903013eaf14ac41f10cf4 (patch)
treea93347f3d44e855e72457b40e1b23ce45d8785a3 /controller
parentf8359f554bcc7bd4a81ad6aff7536e8943593f63 (diff)
fix /controller endpoint
Diffstat (limited to 'controller')
-rw-r--r--controller/EmbeddedNetworkController.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/controller/EmbeddedNetworkController.cpp b/controller/EmbeddedNetworkController.cpp
index 85fbb4dc..a01b68a9 100644
--- a/controller/EmbeddedNetworkController.cpp
+++ b/controller/EmbeddedNetworkController.cpp
@@ -867,12 +867,33 @@ void EmbeddedNetworkController::configureHTTPControlPlane(
const std::function<void(const httplib::Request&, httplib::Response&, std::string)> setContent)
{
// Control plane Endpoints
+ std::string controllerPath = "/controller";
std::string networkListPath = "/controller/network";
std::string networkPath = "/controller/network/([0-9a-fA-F]{16})";
std::string oldAndBustedNetworkCreatePath = "/controller/network/([0-9a-fA-F]{10})______";
std::string memberListPath = "/controller/network/([0-9a-fA-F]{16})/member";
std::string memberPath = "/controller/network/([0-9a-fA-F]{16})/member/([0-9a-fA-F]{10})";
+ auto controllerGet = [&, setContent](const httplib::Request &req, httplib::Response &res) {
+ char tmp[4096];
+ const bool dbOk = _db.isReady();
+ OSUtils::ztsnprintf(
+ tmp,
+ sizeof(tmp),
+ "{\n\t\"controller\": true,\n\t\"apiVersion\": %d,\n\t\"clock\": %llu,\n\t\"databaseReady\": %s\n}\n",
+ ZT_NETCONF_CONTROLLER_API_VERSION,
+ (unsigned long long)OSUtils::now(),
+ dbOk ? "true" : "false");
+
+ if (!dbOk) {
+ res.status = 503;
+ }
+
+ setContent(req, res, tmp);
+ };
+ s.Get(controllerPath, controllerGet);
+ sv6.Get(controllerPath, controllerGet);
+
auto networkListGet = [&, setContent](const httplib::Request &req, httplib::Response &res) {
std::set<uint64_t> networkIds;
_db.networks(networkIds);