diff options
author | Eric Wong <normalperson@yhbt.net> | 2011-11-07 05:32:51 +0000 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2011-11-07 05:32:51 +0000 |
commit | c4e2b81f2493f0a0013ba03c11b74a61f3ca56f6 (patch) | |
tree | a3263b68457f9a06e097b2c0a51b26b02b77454a | |
parent | e3cbb44e8ef085421e2e001ba1382259242ce793 (diff) | |
download | mogilefs-client-c4e2b81f2493f0a0013ba03c11b74a61f3ca56f6.tar.gz |
This retains backwards compatibility and users of MogileFS 2.x to change replpolicy along with mindevcount.
-rw-r--r-- | lib/mogilefs/admin.rb | 41 |
1 files changed, 25 insertions, 16 deletions
diff --git a/lib/mogilefs/admin.rb b/lib/mogilefs/admin.rb index 5dc01d8..6608fe1 100644 --- a/lib/mogilefs/admin.rb +++ b/lib/mogilefs/admin.rb @@ -194,24 +194,24 @@ class MogileFS::Admin < MogileFS::Client end ## - # Creates a new class in +domain+ named +klass+ with files replicated to - # +mindevcount+ devices. Returns nil on failure. + # Creates a new class in +domain+ named +klass+ with +policy+ for + # replication. Raises on failure. - def create_class(domain, klass, mindevcount) - modify_class(domain, klass, mindevcount, :create) + def create_class(domain, klass, policy) + modify_class(domain, klass, policy, :create) end ## - # Updates class +klass+ in +domain+ to be replicated to +mindevcount+ - # devices. Returns nil on failure. + # Updates class +klass+ in +domain+ with +policy+ for replication. + # Raises on failure. - def update_class(domain, klass, mindevcount) - modify_class(domain, klass, mindevcount, :update) + def update_class(domain, klass, policy) + modify_class(domain, klass, policy, :update) end ## - # Removes class +klass+ from +domain+. Returns true if successful, false if - # not. + # Removes class +klass+ from +domain+. Returns true if successful. + # Raises on failure def delete_class(domain, klass) ! @backend.delete_class(:domain => domain, :class => klass).nil? @@ -256,14 +256,23 @@ class MogileFS::Admin < MogileFS::Client ## # Modifies +klass+ on +domain+ to store files on +mindevcount+ devices via - # +action+. Returns the class name if successful, nil if not. + # +action+. Returns the class name if successful, raises if not - def modify_class(domain, klass, mindevcount, action) + def modify_class(domain, klass, policy, action) raise MogileFS::ReadOnlyError if readonly? - res = @backend.send("#{action}_class", :domain => domain, :class => klass, - :mindevcount => mindevcount) - - res ? res['class'] : nil + args = { :domain => domain, :class => klass } + case policy + when Integer + args[:mindevcount] = policy + when String + args[:replpolicy] = policy + when Hash + args.merge!(policy) + else + raise ArgumentError, + "policy=#{policy.inspect} not understood for #{action}_class" + end + @backend.__send__("#{action}_class", args)["class"] end ## |