From e469efd5fae29a52c010c3b3b3903caaf4c1011c Mon Sep 17 00:00:00 2001 From: Michael Rodriguez Date: Tue, 4 Mar 2008 15:45:53 -0800 Subject: [PATCH] start of crush map manip from perl --- src/crush/crushmap.pl | 49 +++++++++++++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 11 deletions(-) diff --git a/src/crush/crushmap.pl b/src/crush/crushmap.pl index c1f4be3364936..25e35fe1faaee 100755 --- a/src/crush/crushmap.pl +++ b/src/crush/crushmap.pl @@ -3,6 +3,8 @@ use CrushWrapper; use Config::General; use Tie::DxHash; +use Data::Dumper; + tie my %conf, "Tie::DxHash"; my $wrap = new CrushWrapper::CrushWrapper; @@ -12,22 +14,47 @@ $wrap->create(); %conf = Config::General::ParseConfig( -ConfigFile => "sample.txt", -Tie => "Tie::DxHash" ); my $arr = \%conf; +my @ritems; -use Data::Dumper; +#print Dumper $arr; +@nums = (1, -4, 11, 17, 1, -92, -15, 48); +print "length: " . scalar(@nums) ."\n"; -print Dumper $arr; +#print Dumper $arr; +#first argument must be zero for auto bucket_id +my $i=0; +foreach my $osd (keys %{$arr->{'osd'}}) { + $ritems[$i] = $wrap->add_bucket(0,4,0,0,[],[]); + $wrap->set_item_name($ritems[$i], $osd); + print "bucket_id: $ritems[$i]\n"; + print $wrap->get_item_name($ritems[$i]) ."\n"; + $i++; +} + +print Dumper @ritems; -=item -@nums = ( - 1, -4, 11, 17, 1, -92, -15, 48 - ); -print "length: " . scalar(@nums) ."\n"; -($result, $min, $max, $avg) = $wrap->add_bucket('1','1','1',scalar(@nums),\@nums,\@nums); -print join(" : ", ($result, $min, $max, $avg) ); -print "\n"; -=cut +=item +/*** BUCKETS ***/ +enum { + CRUSH_BUCKET_UNIFORM = 1, + CRUSH_BUCKET_LIST = 2, + CRUSH_BUCKET_TREE = 3, + CRUSH_BUCKET_STRAW = 4 +}; + +/*** RULES ***/ +enum { + CRUSH_RULE_NOOP = 0, + CRUSH_RULE_TAKE = 1, /* arg1 = value to start with */ + CRUSH_RULE_CHOOSE_FIRSTN = 2, /* arg1 = num items to pick */ + /* arg2 = type */ + CRUSH_RULE_CHOOSE_INDEP = 3, /* same */ + CRUSH_RULE_EMIT = 4 /* no args */ +}; + +=cut -- 2.39.5