From 3d125c6ccbb5211202bd5a931bf733e67e63500a Mon Sep 17 00:00:00 2001 From: Mouad Benchchaoui Date: Thu, 20 Feb 2014 17:06:33 +0100 Subject: [PATCH] Fix generate keystone token from credentials Request to v2.0/tokens must be a POST request and the request should specify JSON in the content-type header and fix request body JSON generation to have the right JSON format. Signed-off-by: Mouad Benchchaoui --- src/rgw/rgw_swift.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/rgw/rgw_swift.cc b/src/rgw/rgw_swift.cc index 1ae8f94..c7e707a 100644 --- a/src/rgw/rgw_swift.cc +++ b/src/rgw/rgw_swift.cc @@ -252,18 +252,21 @@ int RGWSwift::get_keystone_admin_token(std::string& token) KeystoneToken t; bufferlist token_bl; RGWGetKeystoneAdminToken token_req(cct, &token_bl); + token_req.append_header("Content-Type", "application/json"); JSONFormatter jf; jf.open_object_section("auth"); + jf.open_object_section("auth"); // XXX: Workaround to have right Json object. jf.open_object_section("passwordCredentials"); encode_json("username", cct->_conf->rgw_keystone_admin_user, &jf); encode_json("password", cct->_conf->rgw_keystone_admin_password, &jf); jf.close_section(); encode_json("tenantName", cct->_conf->rgw_keystone_admin_tenant, &jf); jf.close_section(); + jf.close_section(); std::stringstream ss; jf.flush(ss); token_req.set_post_data(ss.str()); - int ret = token_req.process(token_url.c_str()); + int ret = token_req.process("POST", token_url.c_str()); if (ret < 0) return ret; if (t.parse(cct, token_bl) != 0) -- 1.7.12.4 (Apple Git-37)