lib/rbvmomi/vim.rb in rbvmomi-1.2.3 vs lib/rbvmomi/vim.rb in rbvmomi-1.3.0
- old
+ new
@@ -33,15 +33,41 @@
new(opts).tap do |vim|
vim.serviceContent.sessionManager.Login :userName => opts[:user], :password => opts[:password]
unless rev_given
rev = vim.serviceContent.about.apiVersion
- vim.rev = [rev, '4.1'].min
+ vim.rev = [rev, '5.0'].min
end
end
end
+ def close
+ VIM::SessionManager(self, 'SessionManager').Logout
+ super
+ end
+
+ def cookie= cookie
+ super
+ ObjectSpace.undefine_finalizer self
+ ObjectSpace.define_finalizer(self, self.class.finalizer(cookie,@opts))
+ end
+
+ def self.finalizer cookie, opts
+ proc do |object_id|
+ new(opts).tap do |vim|
+ vim.instance_variable_set :@cookie, cookie
+ vim.close
+ end
+ nil
+ end
+ end
+
+ def rev= x
+ super
+ @serviceContent = nil
+ end
+
# Return the ServiceInstance
#
# The ServiceInstance is the root of the vSphere inventory.
# @see http://www.vmware.com/support/developer/vc-sdk/visdk41pubs/ApiReference/vim.ServiceInstance.html
def serviceInstance
@@ -73,10 +99,10 @@
# @private
def pretty_print pp
pp.text "VIM(#{@opts[:host]})"
end
- @extension_dirs = [File.join(File.dirname(__FILE__), "vim")]
+ @extension_dirs = [File.join(File.dirname(__FILE__), "vim")] + (ENV['RBVMOMI_VIM_EXTENSION_PATH']||'').split(':')
# Directories to search for extensions
def self.extension_dirs
@extension_dirs
end