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