]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
thrasher: add option to mark OSDs down instead of out.
authorGreg Farnum <gregory.farnum@dreamhost.com>
Thu, 25 Aug 2011 22:19:30 +0000 (15:19 -0700)
committerGreg Farnum <gregory.farnum@dreamhost.com>
Thu, 25 Aug 2011 22:19:30 +0000 (15:19 -0700)
Signed-off-by: Greg Farnum <gregory.farnum@dreamhost.com>
teuthology/task/ceph_manager.py

index 9e1924e0eeec531ebe6d479c9f4e1219d518b5af..61d3674881913240ab8da82a5dd191d9440d4678 100644 (file)
@@ -29,11 +29,22 @@ class Thrasher(gevent.Greenlet):
         self.start()
 
     def remove_osd(self):
+        chance_down = 0
+        if self.config.get("chanceDown"):
+            if isinstance(self.config["chanceDown"], int):
+                chance_down = float(self.config["chanceDown"])/100
+            else:
+                chance_down = self.config["chanceDown"]
         osd = random.choice(self.in_osds)
-        self.log("Removing osd %s"%(str(osd),))
-        self.in_osds.remove(osd)
-        self.out_osds.append(osd)
-        self.ceph_manager.mark_out_osd(osd)
+        if random.uniform(0,1) < chance_down:
+            self.log("Marking osd {id_} down".format(id_=osd))
+            self.ceph_manager.mark_down_osd(osd)
+        else:
+            self.log("Removing osd %s"%(str(osd),))
+            self.ceph_manager.mark_out_osd(osd)
+            self.in_osds.remove(osd)
+            self.out_osds.append(osd)
+
 
     def add_osd(self):
         osd = random.choice(self.out_osds)
@@ -166,5 +177,8 @@ class CephManager:
     def mark_out_osd(self, osd):
         self.raw_cluster_cmd("osd out %s"%(str(osd,)))
 
+    def mark_down_osd(self, osd):
+        self.raw_cluster_cmd("osd down %s"%(str(osd,)))
+
     def mark_in_osd(self, osd):
         self.raw_cluster_cmd("osd in %s"%(str(osd,)))