From a8bfdac49cfe1b551a3950265de3d3ac73805484 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Fri, 30 Jun 2017 16:04:37 +0300 Subject: [PATCH] MXS-1220: Use PUT to set/clear server The correct method for set/clear endpoints is PUT, not POST, as the resource always ends up in the desired state, regardless of its current state. --- Documentation/REST-API/Resources-Server.md | 4 ++-- server/core/resource.cc | 4 ++-- server/core/test/rest-api/test/server.js | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Documentation/REST-API/Resources-Server.md b/Documentation/REST-API/Resources-Server.md index 4821b36a1..f529257f0 100644 --- a/Documentation/REST-API/Resources-Server.md +++ b/Documentation/REST-API/Resources-Server.md @@ -504,7 +504,7 @@ Status: 403 Forbidden ### Set server status ``` -POST /v1/servers/:name/set +PUT /v1/servers/:name/set ``` The _:name_ in the URI must map to a server name with all whitespace replaced @@ -525,7 +525,7 @@ For example, to set the server _db-server-1_ into maintenance mode, a request to the following URL must be made: ``` -POST /v1/servers/db-server-1/set?status=maintenance +PUT /v1/servers/db-server-1/set?status=maintenance ``` #### Response diff --git a/server/core/resource.cc b/server/core/resource.cc index 879d8db9f..4c00cd38f 100644 --- a/server/core/resource.cc +++ b/server/core/resource.cc @@ -727,8 +727,6 @@ public: "services", ":service", "listeners"))); m_post.push_back(SResource(new Resource(cb_create_user, 2, "users", "inet"))); m_post.push_back(SResource(new Resource(cb_create_user, 2, "users", "unix"))); - m_post.push_back(SResource(new Resource(cb_set_server, 3, "servers", ":server", "set"))); - m_post.push_back(SResource(new Resource(cb_clear_server, 3, "servers", ":server", "clear"))); /** For all module commands that modify state/data */ m_post.push_back(SResource(new Resource(cb_modulecmd, 4, "maxscale", "modules", ":module", "?"))); @@ -745,6 +743,8 @@ public: 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_put.push_back(SResource(new Resource(cb_set_server, 3, "servers", ":server", "set"))); + m_put.push_back(SResource(new Resource(cb_clear_server, 3, "servers", ":server", "clear"))); 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"))); diff --git a/server/core/test/rest-api/test/server.js b/server/core/test/rest-api/test/server.js index 243eb222f..a3450b2d4 100644 --- a/server/core/test/rest-api/test/server.js +++ b/server/core/test/rest-api/test/server.js @@ -90,7 +90,7 @@ describe("Server Status", function() { }); it("set server into maintenance", function() { - return request.post(base_url + "/servers/" + server.data.id + "/set?status=maintenance") + return request.put(base_url + "/servers/" + server.data.id + "/set?status=maintenance") .then(function(resp) { return request.get(base_url + "/servers/" + server.data.id) }) @@ -101,7 +101,7 @@ describe("Server Status", function() { }); it("clear maintenance", function() { - return request.post(base_url + "/servers/" + server.data.id + "/clear?status=maintenance") + return request.put(base_url + "/servers/" + server.data.id + "/clear?status=maintenance") .then(function(resp) { return request.get(base_url + "/servers/" + server.data.id) }) @@ -112,12 +112,12 @@ describe("Server Status", function() { }); it("set invalid status value", function() { - return request.post(base_url + "/servers/" + server.data.id + "/set?status=somethingstrange") + return request.put(base_url + "/servers/" + server.data.id + "/set?status=somethingstrange") .should.be.rejected }); it("clear invalid status value", function() { - return request.post(base_url + "/servers/" + server.data.id + "/clear?status=somethingstrange") + return request.put(base_url + "/servers/" + server.data.id + "/clear?status=somethingstrange") .should.be.rejected });