about summary refs log tree commit homepage
path: root/lib/mogilefs
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2012-10-30 23:12:10 +0000
committerEric Wong <normalperson@yhbt.net>2012-10-30 23:12:10 +0000
commit9b1339dfe76e04e4a21d39301d2236859dc03bfd (patch)
treea8bc5998b08b3ed4eb2ef0f21703e7bb1d4fbffa /lib/mogilefs
parent42abd93b948881afe5c3e9d04ceb5f40fda4472c (diff)
downloadmogilefs-client-9b1339dfe76e04e4a21d39301d2236859dc03bfd.tar.gz
This lets us send unsupported/new arguments to plugins
and matches the functionality of the Perl client library.
Diffstat (limited to 'lib/mogilefs')
-rw-r--r--lib/mogilefs/mogilefs.rb3
-rw-r--r--lib/mogilefs/new_file/common.rb4
2 files changed, 5 insertions, 2 deletions
diff --git a/lib/mogilefs/mogilefs.rb b/lib/mogilefs/mogilefs.rb
index 76325cb..7503bba 100644
--- a/lib/mogilefs/mogilefs.rb
+++ b/lib/mogilefs/mogilefs.rb
@@ -257,12 +257,13 @@ class MogileFS::MogileFS < MogileFS::Client
     case args
     when Hash
       opts[:domain] = args[:domain]
+      open_args = args[:create_open_args]
       klass = args[:class] and "default" != klass and opts[:class] = klass
     when String
       opts[:class] = args if "default" != args
     end
     opts[:domain] ||= @domain
-    res = @backend.create_open(opts)
+    res = @backend.create_open(open_args ? open_args.merge(opts) : opts)
 
     dests = if dev_count = res['dev_count'] # multi_dest succeeded
       (1..dev_count.to_i).map { |i| [res["devid_#{i}"], res["path_#{i}"]] }
diff --git a/lib/mogilefs/new_file/common.rb b/lib/mogilefs/new_file/common.rb
index 1d2b1a0..b901f67 100644
--- a/lib/mogilefs/new_file/common.rb
+++ b/lib/mogilefs/new_file/common.rb
@@ -35,6 +35,8 @@ module MogileFS::NewFile::Common
   end
 
   def create_close(devid, uri, bytes_uploaded)
+    close_args = @opts[:create_close_args]
+
     dest_info = @opts[:info] ||= {}
     dest_info["fid"] = @opts[:fid].to_i
     dest_info["key"] = @opts[:key]
@@ -62,7 +64,7 @@ module MogileFS::NewFile::Common
     # twice will hurt us...
     backend.noop
 
-    backend.create_close(dest_info)
+    backend.create_close(close_args ? close_args.merge(dest_info) : dest_info)
 
     # make this look like file_info + get_uris
     dest_info.delete(:checksumverify)