]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crush: add the dump_rule(int ruleset) method
authorLoic Dachary <loic@dachary.org>
Sun, 9 Feb 2014 20:18:45 +0000 (21:18 +0100)
committerLoic Dachary <loic@dachary.org>
Thu, 13 Feb 2014 11:14:05 +0000 (12:14 +0100)
And implement dump_rules() using dump_rule(). The indentiation and
variable names are intentionaly left as is to not confuse code being
moved around and the code changes.

Signed-off-by: Loic Dachary <loic@dachary.org>
src/crush/CrushWrapper.cc
src/crush/CrushWrapper.h
src/test/crush/TestCrushWrapper.cc

index 3aa7a43d5a32839f17a532077c9bb656eeb7e3e8..d80adfcb587fc64d5b07d1db01eaef655e0d75a7 100644 (file)
@@ -1177,6 +1177,12 @@ void CrushWrapper::dump_rules(Formatter *f) const
   for (int i=0; i<get_max_rules(); i++) {
     if (!rule_exists(i))
       continue;
+    dump_rule(i, f);
+  }
+}
+
+void CrushWrapper::dump_rule(int i, Formatter *f) const
+{
     f->open_object_section("rule");
     f->dump_int("rule_id", i);
     if (get_rule_name(i))
@@ -1236,7 +1242,6 @@ void CrushWrapper::dump_rules(Formatter *f) const
     }
     f->close_section();
     f->close_section();
-  }
 }
 
 void CrushWrapper::list_rules(Formatter *f) const
index 1f82e76c9aa4542face0b2c1385b70915645b1fb..b753821887053db50219c19ee7802df4188c99c9 100644 (file)
@@ -894,6 +894,7 @@ public:
   void decode_crush_bucket(crush_bucket** bptr, bufferlist::iterator &blp);
   void dump(Formatter *f) const;
   void dump_rules(Formatter *f) const;
+  void dump_rule(int ruleset, Formatter *f) const;
   void dump_tunables(Formatter *f) const;
   void list_rules(Formatter *f) const;
   void dump_tree(const vector<__u32>& w, ostream *out, Formatter *f) const;
index ec74cd0f1e7b5ab5da9ffda530e402a90b2a3205..55c7e86831f0d8c62028baf66b42f0fd7160b7c4 100644 (file)
@@ -526,6 +526,15 @@ TEST(CrushWrapper, dump_rules) {
     EXPECT_EQ(0, ss.str().find("<rule><rule_id>0</rule_id><rule_name>NAME</rule_name>"));
   }
 
+  {
+    Formatter *f = new_formatter("xml");
+    c->dump_rule(ruleset, f);
+    stringstream ss;
+    f->flush(ss);
+    delete f;
+    EXPECT_EQ(0, ss.str().find("<rule><rule_id>0</rule_id><rule_name>NAME</rule_name>"));
+  }
+
   delete c;
 }