MXS-1220: Add PUT support for services

Service parameters can now be altered with a PUT request to the REST
API. This allows general level parameters to be altered.

Module specific parameters need to be altered with a different mechanism,
namely the module command system. This requires that a generic way to call
a function needs to be devised.
This commit is contained in:
Markus Mäkelä
2017-04-25 21:48:30 +03:00
parent d282b14b36
commit d248c7e081
3 changed files with 95 additions and 0 deletions

View File

@ -175,6 +175,23 @@ HttpResponse cb_alter_monitor(const HttpRequest& request)
return HttpResponse(MHD_HTTP_BAD_REQUEST);
}
HttpResponse cb_alter_service(const HttpRequest& request)
{
json_t* json = request.get_json();
if (json)
{
SERVICE* service = service_find(request.uri_part(1).c_str());
if (service && runtime_alter_service_from_json(service, json))
{
return HttpResponse(MHD_HTTP_OK, service_to_json(service, request.host()));
}
}
return HttpResponse(MHD_HTTP_BAD_REQUEST);
}
HttpResponse cb_all_servers(const HttpRequest& request)
{
return HttpResponse(MHD_HTTP_OK, server_list_to_json(request.host()));
@ -352,6 +369,7 @@ public:
m_put.push_back(SResource(new Resource(cb_alter_server, 2, "servers", ":server")));
m_put.push_back(SResource(new Resource(cb_alter_monitor, 2, "monitors", ":monitor")));
m_put.push_back(SResource(new Resource(cb_alter_service, 2, "services", ":service")));
}
~RootResource()