From 844ba6edd3b51ad126679fa88a8ae1a7c42db4cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Tue, 2 May 2017 10:20:03 +0300 Subject: [PATCH] MXS-1220: Add start/stop entry points for monitors and services Monitors and services can now be started and stopped via the REST API. --- server/core/resource.cc | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/server/core/resource.cc b/server/core/resource.cc index 013c95b77..b830b24a8 100644 --- a/server/core/resource.cc +++ b/server/core/resource.cc @@ -108,6 +108,34 @@ bool Resource::matching_variable_path(const string& path, const string& target) return rval; } +HttpResponse cb_stop_monitor(const HttpRequest& request) +{ + MXS_MONITOR* monitor = monitor_find(request.uri_part(1).c_str()); + monitorStop(monitor); + return HttpResponse(MHD_HTTP_NO_CONTENT); +} + +HttpResponse cb_start_monitor(const HttpRequest& request) +{ + MXS_MONITOR* monitor = monitor_find(request.uri_part(1).c_str()); + monitorStart(monitor, monitor->parameters); + return HttpResponse(MHD_HTTP_NO_CONTENT); +} + +HttpResponse cb_stop_service(const HttpRequest& request) +{ + SERVICE* service = service_find(request.uri_part(1).c_str()); + serviceStop(service); + return HttpResponse(MHD_HTTP_NO_CONTENT); +} + +HttpResponse cb_start_service(const HttpRequest& request) +{ + SERVICE* service = service_find(request.uri_part(1).c_str()); + serviceStart(service); + return HttpResponse(MHD_HTTP_NO_CONTENT); +} + HttpResponse cb_create_server(const HttpRequest& request) { json_t* json = request.get_json(); @@ -396,6 +424,12 @@ public: 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"))); + /** Change resource states */ + m_put.push_back(SResource(new Resource(cb_stop_monitor, 3, "monitors", ":monitor", "stop"))); + m_put.push_back(SResource(new Resource(cb_start_monitor, 3, "monitors", ":monitor", "start"))); + m_put.push_back(SResource(new Resource(cb_stop_service, 3, "services", ":service", "stop"))); + m_put.push_back(SResource(new Resource(cb_start_service, 3, "services", ":service", "start"))); + m_delete.push_back(SResource(new Resource(cb_delete_server, 2, "servers", ":server"))); m_delete.push_back(SResource(new Resource(cb_delete_monitor, 2, "monitors", ":monitor"))); }