diff --git a/api/storage_service.cc b/api/storage_service.cc index 325f222ee2..aa2544fcb2 100644 --- a/api/storage_service.cc +++ b/api/storage_service.cc @@ -4,6 +4,8 @@ #include "storage_service.hh" #include "api/api-doc/storage_service.json.hh" +#include +#include namespace api { @@ -11,6 +13,35 @@ void set_storage_service(http_context& ctx, routes& r) { httpd::storage_service_json::local_hostid.set(r, [](const_req req) { return ""; }); + + httpd::storage_service_json::get_tokens.set(r, [](std::unique_ptr req) { + return service::sorted_tokens().then([](const std::vector& tokens) { + return make_ready_future(container_to_vec(tokens)); + }); + }); + + httpd::storage_service_json::get_node_tokens.set(r, [](std::unique_ptr req) { + gms::inet_address addr(req->param["endpoint"]); + return service::get_tokens(addr).then([](const std::vector& tokens) { + return make_ready_future(container_to_vec(tokens)); + }); + }); + + httpd::storage_service_json::get_commitlog.set(r, [&ctx](const_req req) { + return ctx.db.local().commitlog()->active_config().commit_log_location; + }); + + httpd::storage_service_json::get_token_endpoint.set(r, [](std::unique_ptr req) { + return service::get_token_to_endpoint().then([] (const std::map& tokens){ + std::vector res(tokens.size()); + for (auto i : tokens) { + res.push_back(storage_service_json::mapper()); + res.back().key = boost::lexical_cast(i.first); + res.back().value = boost::lexical_cast(i.second); + } + return make_ready_future(res); + }); + }); } }