From 5d0566deaf5cd50f487c97ae6884bef0939db1c5 Mon Sep 17 00:00:00 2001
From: Iustin Pop <iustin@google.com>
Date: Fri, 21 Oct 2011 23:51:39 +0200
Subject: [PATCH] Accept both PUT and POST in noded
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This is a partial cherry-pick from
7530364ddbe949bc34fc26f25ba3f5d921beb021 on master:

Currently, noded requires PUT, even though the semantics of the RPC
calls do not match a PUT. We change the code accept both PUT and POST,
with the intention to remove the PUT support in a later version.

Additionally, we add a message to the HttpBadRequest exception to make
clear the failure mode (not seeing any error message was what made me
send this patch…). This was the only description-less use of this
exception, by the way.

Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: RenΓ© Nussbaumer <rn@google.com>
(cherry picked from commit 7530364ddbe949bc34fc26f25ba3f5d921beb021)

What was not cherry-picked is the rpc change (to switch to PUT). The
reason I want to backport this to devel-2.5 is that when upgrading to
2.6, having noded accept both makes for an easier upgrade path.

Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>
---
 lib/server/noded.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/lib/server/noded.py b/lib/server/noded.py
index bdd2dec56..0377ba984 100644
--- a/lib/server/noded.py
+++ b/lib/server/noded.py
@@ -138,8 +138,9 @@ class NodeHttpServer(http.server.HttpServer):
     """Handle a request.
 
     """
-    if req.request_method.upper() != http.HTTP_PUT:
-      raise http.HttpBadRequest()
+    # FIXME: Remove HTTP_PUT in Ganeti 2.7
+    if req.request_method.upper() not in (http.HTTP_PUT, http.HTTP_POST):
+      raise http.HttpBadRequest("Only PUT and POST methods are supported")
 
     path = req.request_path
     if path.startswith("/"):
-- 
GitLab