From a3e2ae4925e7e25c213ef37072d576d1f1ffdc13 Mon Sep 17 00:00:00 2001 From: Abhishek Lekshmanan Date: Fri, 22 Sep 2017 16:11:55 +0200 Subject: [PATCH] rgw: defer constructing keystone engine unless url is configured currently we create a keystone revocation thread even when keystone url is empty, lets defer the construction of keystone unless the urls are configured Signed-off-by: Abhishek Lekshmanan (cherry picked from commit 104c2f59011e6b515e3845cce529ee44334e76c0) --- src/rgw/rgw_auth_s3.h | 14 ++++++++------ src/rgw/rgw_swift_auth.h | 15 ++++++++------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/rgw/rgw_auth_s3.h b/src/rgw/rgw_auth_s3.h index 9369864259f04..1c851a933e113 100644 --- a/src/rgw/rgw_auth_s3.h +++ b/src/rgw/rgw_auth_s3.h @@ -36,7 +36,7 @@ class ExternalAuthStrategy : public rgw::auth::Strategy, using keystone_cache_t = rgw::keystone::TokenCache; using EC2Engine = rgw::auth::keystone::EC2Engine; - EC2Engine keystone_engine; + boost::optional keystone_engine; LDAPEngine ldap_engine; aplptr_t create_apl_remote(CephContext* const cct, @@ -56,16 +56,18 @@ public: RGWRados* const store, AWSEngine::VersionAbstractor* const ver_abstractor) : store(store), - keystone_engine(cct, ver_abstractor, - static_cast(this), - keystone_config_t::get_instance(), - keystone_cache_t::get_instance()), ldap_engine(cct, store, *ver_abstractor, static_cast(this)) { if (cct->_conf->rgw_s3_auth_use_keystone && ! cct->_conf->rgw_keystone_url.empty()) { - add_engine(Control::SUFFICIENT, keystone_engine); + + keystone_engine.emplace(cct, ver_abstractor, + static_cast(this), + keystone_config_t::get_instance(), + keystone_cache_t::get_instance()); + add_engine(Control::SUFFICIENT, *keystone_engine); + } if (cct->_conf->rgw_s3_auth_use_ldap && diff --git a/src/rgw/rgw_swift_auth.h b/src/rgw/rgw_swift_auth.h index afab8e069745a..cc508202db855 100644 --- a/src/rgw/rgw_swift_auth.h +++ b/src/rgw/rgw_swift_auth.h @@ -168,7 +168,7 @@ class DefaultStrategy : public rgw::auth::Strategy, /* The engines. */ const rgw::auth::swift::TempURLEngine tempurl_engine; const rgw::auth::swift::SignedTokenEngine signed_engine; - const rgw::auth::keystone::TokenEngine keystone_engine; + boost::optional keystone_engine; const rgw::auth::swift::ExternalTokenEngine external_engine; const rgw::auth::swift::SwiftAnonymousEngine anon_engine; @@ -229,11 +229,6 @@ public: store, static_cast(this), static_cast(this)), - keystone_engine(cct, - static_cast(this), - static_cast(this), - keystone_config_t::get_instance(), - keystone_cache_t::get_instance()), external_engine(cct, store, static_cast(this), @@ -251,7 +246,13 @@ public: /* The auth strategy is responsible for deciding whether a parcular * engine is disabled or not. */ if (! cct->_conf->rgw_keystone_url.empty()) { - add_engine(Control::SUFFICIENT, keystone_engine); + keystone_engine.emplace(cct, + static_cast(this), + static_cast(this), + keystone_config_t::get_instance(), + keystone_cache_t::get_instance()); + + add_engine(Control::SUFFICIENT, *keystone_engine); } if (! cct->_conf->rgw_swift_auth_url.empty()) { add_engine(Control::SUFFICIENT, external_engine); -- 2.39.5