]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
monclient: simplify auth_supported set
authorSage Weil <sage@newdream.net>
Wed, 2 Nov 2011 18:06:59 +0000 (11:06 -0700)
committerSage Weil <sage@newdream.net>
Sat, 5 Nov 2011 00:29:48 +0000 (17:29 -0700)
Use AuthSupported class instead of repopulating it ourselves.

Signed-off-by: Sage Weil <sage@newdream.net>
src/auth/AuthSupported.h
src/mon/MonClient.cc
src/mon/MonClient.h

index 12efb9ae2fc06cc2692bbc6954d7266b386596a6..413882d2cc733169ee007200becc02181ae3662f 100644 (file)
 class CephContext;
 
 class AuthSupported {
-  std::set<int> auth_supported;
+  std::set<__u32> auth_supported;
 public:
   AuthSupported(CephContext *cct);
 
   bool is_supported_auth(int auth_type);
   int pick(const std::set<__u32>& supported);
+
+  const std::set<__u32>& get_supported_set() const {
+    return auth_supported;
+  }
 };
 
 
index 214bfd6080cbdc7ad4ac93549a0c0afb8c955bb3..647fd9e4bb319f4067ac24e5c94c31f66652782f 100644 (file)
@@ -32,6 +32,7 @@
 
 #include "auth/Auth.h"
 #include "auth/KeyRing.h"
+#include "auth/AuthSupported.h"
 
 #include "include/str_list.h"
 #include "include/addr_parsing.h"
@@ -53,6 +54,7 @@ MonClient::MonClient(CephContext *cct_) :
   timer(cct_, monc_lock), finisher(cct_),
   initialized(false),
   log_client(NULL),
+  auth_supported(NULL),
   hunting(true),
   want_monmap(true),
   want_keys(0), global_id(0),
@@ -66,6 +68,7 @@ MonClient::MonClient(CephContext *cct_) :
 
 MonClient::~MonClient()
 {
+  delete auth_supported;
   delete auth;
   delete keyring;
   delete rotating_secrets;
@@ -341,7 +344,7 @@ void MonClient::handle_monmap(MMonMap *m)
 
 int MonClient::init()
 {
-  ldout(cct, 10) << "init" << dendl;
+  ldout(cct, 10) << "init auth_supported " << cct->_conf->auth_supported << dendl;
 
   messenger->add_dispatcher_head(this);
 
@@ -362,21 +365,8 @@ int MonClient::init()
   // seed rng so we choose a different monitor each time
   srand(getpid());
 
-  auth_supported.clear();
-  string str = cct->_conf->auth_supported;
-  list<string> sup_list;
-  get_str_list(str, sup_list);
-  for (list<string>::iterator iter = sup_list.begin(); iter != sup_list.end(); ++iter) {
-    if (iter->compare("cephx") == 0) {
-      ldout(cct, 10) << "supporting cephx auth protocol" << dendl;
-      auth_supported.insert(CEPH_AUTH_CEPHX);
-    } else if (iter->compare("none") == 0) {
-      auth_supported.insert(CEPH_AUTH_NONE);
-      ldout(cct, 10) << "supporting *none* auth protocol" << dendl;
-    } else {
-      ldout(cct, 0) << "WARNING: unknown auth protocol defined: " << *iter << dendl;
-    }
-  }
+  auth_supported = new AuthSupported(cct);
+  ldout(cct, 10) << "auth_supported " << auth_supported->get_supported_set() << dendl;
 
   initialized = true;
   return 0;
@@ -567,7 +557,7 @@ void MonClient::_reopen_session()
   m->protocol = 0;
   __u8 struct_v = 1;
   ::encode(struct_v, m->auth_payload);
-  ::encode(auth_supported, m->auth_payload);
+  ::encode(auth_supported->get_supported_set(), m->auth_payload);
   ::encode(entity_name, m->auth_payload);
   ::encode(global_id, m->auth_payload);
   _send_mon_message(m, true);
index 207b30abbb6253de291526d2f52d9eda2014a1ff..fcbdd16ecddb6e7b95a1f9d06d2ae43b4b2c7741 100644 (file)
@@ -38,6 +38,7 @@ class MMonSubscribeAck;
 class MAuthReply;
 class MAuthRotating;
 class LogClient;
+class AuthSupported;
 
 enum MonClientState {
   MC_STATE_NONE,
@@ -68,7 +69,7 @@ private:
 
   LogClient *log_client;
 
-  set<__u32> auth_supported;
+  AuthSupported *auth_supported;
 
   bool ms_dispatch(Message *m);
   bool ms_handle_reset(Connection *con);