MXS-1220: Add POST handling for servers

New servers can now be created by POSTing a new server definition to the
/servers/ resource.
This commit is contained in:
Markus Mäkelä
2017-04-19 16:39:08 +03:00
committed by Markus Mäkelä
parent 46344b204a
commit 80104d6dad
4 changed files with 193 additions and 3 deletions

View File

@ -25,6 +25,7 @@
#include "maxscale/filter.h"
#include "maxscale/monitor.h"
#include "maxscale/service.h"
#include "maxscale/config_runtime.h"
using std::list;
@ -103,6 +104,23 @@ bool Resource::matching_variable_path(const string& path, const string& target)
return rval;
}
HttpResponse cb_create_server(HttpRequest& request)
{
json_t* json = request.get_json();
if (json)
{
SERVER* server = runtime_create_server_from_json(json);
if (server)
{
return HttpResponse(MHD_HTTP_OK, server_to_json(server, request.host()));
}
}
return HttpResponse(MHD_HTTP_INTERNAL_SERVER_ERROR);
}
HttpResponse cb_all_servers(HttpRequest& request)
{
return HttpResponse(MHD_HTTP_OK, server_list_to_json(request.host()));
@ -262,12 +280,13 @@ public:
m_get.push_back(Resource(cb_modules, 2, "maxscale", "modules"));
m_post.push_back(Resource(cb_flush, 3, "maxscale", "logs", "flush"));
m_post.push_back(Resource(cb_create_server, 1, "servers"));
}
HttpResponse process_request_type(ResourceList& list, HttpRequest& request)
{
for (ResourceList::iterator it = m_get.begin();
it != m_get.end(); it++)
for (ResourceList::iterator it = list.begin();
it != list.end(); it++)
{
if (it->match(request))
{