From: Mouad Benchchaoui Date: Thu, 20 Feb 2014 16:06:33 +0000 (+0100) Subject: Fix generate keystone token from credentials X-Git-Tag: v0.79~204 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5fb90a2f6dd5b31634efc748a977924dbdbebcb9;p=ceph.git 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. Reviewed-by: Yehuda Sadeh Signed-off-by: Mouad Benchchaoui --- diff --git a/src/rgw/rgw_swift.cc b/src/rgw/rgw_swift.cc index 1ae8f94d7f58..c7e707a65f99 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)