]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Add test_blacklist_self() librados function for test cases
authorDavid Zafman <david.zafman@inktank.com>
Thu, 6 Jun 2013 06:22:17 +0000 (23:22 -0700)
committerDavid Zafman <david.zafman@inktank.com>
Thu, 6 Jun 2013 07:23:19 +0000 (00:23 -0700)
Signed-off-by: David Zafman <david.zafman@inktank.com>
src/include/rados/librados.hpp
src/librados/RadosClient.cc
src/librados/RadosClient.h
src/librados/librados.cc
src/messages/MMonCommand.h
src/osdc/Objecter.cc
src/osdc/Objecter.h

index af14a183b493b47e120aef567a0627d824f93c2e..a41ff210a2b58020f0973917150ac5d97e5597eb 100644 (file)
@@ -674,6 +674,9 @@ namespace librados
 
     int ioctx_create(const char *name, IoCtx &pioctx);
 
+    // Features useful for test cases
+    void test_blacklist_self(bool set);
+
     /* listing objects */
     int pool_list(std::list<std::string>& v);
     int get_pool_stats(std::list<std::string>& v,
index 5356fb65e6815f8cc51eecf195ddc2f29648c61e..c5ca6d80b989ebf9776677744d4038114197fc7d 100644 (file)
@@ -511,6 +511,10 @@ void librados::RadosClient::unregister_watcher(uint64_t cookie)
   }
 }
 
+void librados::RadosClient::blacklist_self(bool set) {
+  Mutex::Locker l(lock);
+  objecter->blacklist_self(set);
+}
 
 class C_WatchNotify : public Context {
   librados::WatchContext *ctx;
index 6dd6d109c6476be3f558811df3958de35228a05e..f3d1d0f81b5a5ab133c3553cce488b5e391074dc 100644 (file)
@@ -102,6 +102,7 @@ public:
   void watch_notify(MWatchNotify *m);
   void get();
   bool put();
+  void blacklist_self(bool set);
 };
 
 #endif
index 5e8b38f0b001285036bab347f12c0a39beb09223..0fd6aba242b2b93ae6f6dbe4e8033ede64ef37de 100644 (file)
@@ -1340,6 +1340,11 @@ int librados::Rados::ioctx_create(const char *name, IoCtx &io)
   return 0;
 }
 
+void librados::Rados::test_blacklist_self(bool set)
+{
+  client->blacklist_self(set);
+}
+
 int librados::Rados::get_pool_stats(std::list<string>& v, std::map<string, stats_map>& result)
 {
   string category;
index c011596ad52aeeb2a9ed8f70f45374107a18c520..2798280935e65d65c316fc7add95373cf8031498 100644 (file)
@@ -26,7 +26,7 @@ class MMonCommand : public PaxosServiceMessage {
   vector<string> cmd;
 
   MMonCommand() : PaxosServiceMessage(MSG_MON_COMMAND, 0) {}
-  MMonCommand(uuid_d &f, version_t v) : 
+  MMonCommand(const uuid_d &f, version_t v) : 
     PaxosServiceMessage(MSG_MON_COMMAND, v),
     fsid(f) { }
 
index 819fe367c8c84dcb1ab1e8c3631621a83aedeed1..e5f4a3cc9450045cdad119f6f71fb08ea74ad220 100644 (file)
@@ -35,6 +35,7 @@
 #include "messages/MStatfsReply.h"
 
 #include "messages/MOSDFailure.h"
+#include "messages/MMonCommand.h"
 
 #include <errno.h>
 
@@ -2178,3 +2179,24 @@ bool Objecter::RequestStateHook::call(std::string command, std::string args, buf
   out.append(ss);
   return true;
 }
+
+void Objecter::blacklist_self(bool set)
+{
+  ldout(cct, 10) << "blacklist_self " << (set ? "add" : "rm") << dendl;
+
+  vector<string> cmd;
+  cmd.push_back("osd");
+  cmd.push_back("blacklist");
+  if (set)
+    cmd.push_back("add");
+  else
+    cmd.push_back("rm");
+  stringstream ss;
+  ss << messenger->get_myaddr();
+  cmd.push_back(ss.str());
+
+  MMonCommand *m = new MMonCommand(monc->get_fsid(), last_seen_osdmap_version);
+  m->cmd = cmd;
+
+  monc->send_mon_message(m);
+}
index 52841236f1fc543aa2310cb385f37e92584468b6..66d39c442d291425a9ca59f0017c15d624e14964 100644 (file)
@@ -1672,6 +1672,7 @@ public:
   void ms_handle_connect(Connection *con);
   void ms_handle_reset(Connection *con);
   void ms_handle_remote_reset(Connection *con);
+  void blacklist_self(bool set);
 };
 
 #endif