|
@@ -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);
|