Sha256: b6c700dcf08692312466cce6bd1bf9c7d00074d7a0dffc9aeb34408944f2f233
Contents?: true
Size: 1.41 KB
Versions: 2
Compression:
Stored size: 1.41 KB
Contents
module CephRuby class Pool attr_accessor :cluster, :name, :handle def initialize(cluster, name) self.cluster = cluster self.name = name if block_given? begin yield(self) ensure close end end end def exists? log("exists?") ret = Lib::Rados.rados_pool_lookup(cluster.handle, name) return true if ret >= 0 return false if ret == -Errno::ENOENT::Errno raise SystemCallError.new("lookup of '#{name}' failed", -ret) if ret < 0 end def open return if open? log("open") handle_p = FFI::MemoryPointer.new(:pointer) ret = Lib::Rados.rados_ioctx_create(cluster.handle, name, handle_p) raise SystemCallError.new("creation of io context for '#{name}' failed", -ret) if ret < 0 self.handle = handle_p.get_pointer(0) end def close return unless open? log("close") Lib::Rados.rados_ioctx_destroy(handle) self.handle = nil end def rados_object(name, &block) ensure_open RadosObject.new(self, name, &block) end def rados_block_device(name, &block) ensure_open RadosBlockDevice.new(self, name, &block) end # helper methods below def open? !!handle end def ensure_open return if open? open end def log(message) CephRuby.log("pool #{name} #{message}") end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ceph-ruby-ffi19-1.3 | lib/ceph-ruby/pool.rb |
ceph-ruby-ffi19-1.2 | lib/ceph-ruby/pool.rb |