From 424ffb977d7877ccb37e63e91525016c9f268d62 Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Thu, 7 Apr 2016 12:34:32 +0200 Subject: [PATCH] rgw: naturalize the transplanted get_keystone_{url,admin_token} in KeystoneService. Signed-off-by: Radoslaw Zarzynski --- src/rgw/rgw_keystone.cc | 17 ++++++++--------- src/rgw/rgw_keystone.h | 27 +++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/src/rgw/rgw_keystone.cc b/src/rgw/rgw_keystone.cc index da35cb18c1ec2..431c53a209ce8 100644 --- a/src/rgw/rgw_keystone.cc +++ b/src/rgw/rgw_keystone.cc @@ -152,25 +152,24 @@ KeystoneApiVersion KeystoneService::get_api_version() } } -int RGWSwift::get_keystone_url(CephContext * const cct, - std::string& url) +int KeystoneService::get_keystone_url(CephContext * const cct, + std::string& url) { - // FIXME: it seems we don't need RGWGetRevokedToken here - bufferlist bl; - RGWGetRevokedTokens req(cct, &bl); - url = cct->_conf->rgw_keystone_url; if (url.empty()) { ldout(cct, 0) << "ERROR: keystone url is not configured" << dendl; return -EINVAL; } - if (url[url.size() - 1] != '/') + + if (url[url.size() - 1] != '/') { url.append("/"); + } + return 0; } -int RGWSwift::get_keystone_admin_token(CephContext * const cct, - std::string& token) +int KeystoneService::get_keystone_admin_token(CephContext * const cct, + std::string& token) { std::string token_url; diff --git a/src/rgw/rgw_keystone.h b/src/rgw/rgw_keystone.h index 10e8dd0ef937e..63501ffa6d959 100644 --- a/src/rgw/rgw_keystone.h +++ b/src/rgw/rgw_keystone.h @@ -26,8 +26,35 @@ enum class KeystoneApiVersion { }; class KeystoneService { + class RGWKeystoneHTTPTransceiver : public RGWHTTPTransceiver { + public: + RGWKeystoneHTTPTransceiver(CephContext * const cct, + bufferlist * const token_body_bl) + : RGWHTTPTransceiver(cct, token_body_bl, + cct->_conf->rgw_keystone_verify_ssl, + { "X-Subject-Token" }) { + } + + std::string get_subject_token() const { + try { + return get_header_value("X-Subject-Token"); + } catch (std::out_of_range&) { + return header_value_t(); + } + } + }; + + typedef RGWKeystoneHTTPTransceiver RGWValidateKeystoneToken; + typedef RGWKeystoneHTTPTransceiver RGWGetKeystoneAdminToken; + typedef RGWKeystoneHTTPTransceiver RGWGetRevokedTokens; + public: static KeystoneApiVersion get_api_version(); + + static int get_keystone_url(CephContext * const cct, + std::string& url); + static int get_keystone_admin_token(CephContext * const cct, + std::string& token); }; class KeystoneToken { -- 2.39.5