vi_api_lib 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/History.txt CHANGED
@@ -1,3 +1,17 @@
1
+ === 0.1.1 / 2009-04-21
2
+
3
+ * 3 bug fixes:
4
+ * Use correkt managed type for unknown object types.
5
+ * Use base class for DateTime objects.
6
+ * Avoid nil dereference on empty property set.
7
+
8
+ * 1 major anhancement:
9
+ * Add interaction functionality to VirtualMachine.
10
+
11
+ * 2 minor enhancements:
12
+ * Add task_manager to session.
13
+ * Add accessor for type names in SOAP response.
14
+
1
15
  === 0.1.0 / 2009-04-20
2
16
 
3
17
  * First Gem Release
data/Manifest.txt CHANGED
@@ -14,6 +14,7 @@ lib/vmware/objects/folder.rb
14
14
  lib/vmware/objects/host_system.rb
15
15
  lib/vmware/objects/managed_entity.rb
16
16
  lib/vmware/objects/network.rb
17
+ lib/vmware/objects/task_manager.rb
17
18
  lib/vmware/objects/virtual_machine.rb
18
19
  lib/vmware/session.rb
19
20
  lib/vmware/soap/vim25.rb
data/README CHANGED
@@ -1,6 +1,6 @@
1
1
  = Ruby VMware 2.5 Web Services API
2
2
 
3
- http://vi_api_lib.rubyforge.org
3
+ http://rubyforge.org/projects/vi-api-lib/
4
4
 
5
5
  ================================
6
6
  Copyright 2009 Paglo Labs, Inc. All rights reserved.
@@ -20,7 +20,7 @@ See the examples directory for an example of how to use the library.
20
20
 
21
21
  == INSTALL:
22
22
 
23
- * gem install vi_api_lib
23
+ * gem install --no-rdoc --no-ri vi_api_lib
24
24
 
25
25
  == LICENSE:
26
26
 
@@ -25,6 +25,9 @@ class VMware::DataObject
25
25
 
26
26
  @cached_properties = prop_hash
27
27
  end
28
+ def soap_type
29
+ @values.class.to_s
30
+ end
28
31
 
29
32
  #
30
33
  # Return a specific property.
@@ -64,7 +67,7 @@ class VMware::DataObject
64
67
  end
65
68
 
66
69
  def self.is_base_class(val)
67
- val.nil? or val.is_a? String or val.is_a? TrueClass or val.is_a? FalseClass or val.is_a? Numeric
70
+ val.nil? or val.is_a? String or val.is_a? TrueClass or val.is_a? FalseClass or val.is_a? Numeric or val.is_a? DateTime
68
71
  end
69
72
 
70
73
  end
@@ -8,8 +8,9 @@ class VMware::ManagedEntity
8
8
  #
9
9
  # Create a wrapper for managed object based on a ManagedObjectReference
10
10
  #
11
- def initialize(session, object_reference)
11
+ def initialize(session, object_reference, managed_type=nil)
12
12
  @session, @object_reference = session, object_reference
13
+ @managed_type = managed_type
13
14
 
14
15
  # We cache properties for more efficient access.
15
16
  @cached_properties = nil
@@ -31,7 +32,7 @@ class VMware::ManagedEntity
31
32
 
32
33
  # Which properties to return.
33
34
  prop_spec = PropertySpec.new
34
- prop_spec.type = self.class.to_s.gsub(/^.*::/, "")
35
+ prop_spec.type = @managed_type || self.class.to_s.gsub(/^.*::/, "")
35
36
  prop_spec.pathSet = prop_list
36
37
  prop_spec.all = prop_list.empty?
37
38
 
@@ -59,7 +60,7 @@ class VMware::ManagedEntity
59
60
  prop_set = object_list[0].propSet
60
61
  prop_set.each do |prop|
61
62
  prop_hash[prop.name] = VMware::DataObject::soap_to_data_object(prop.val)
62
- end
63
+ end unless prop_set.nil?
63
64
  rescue SOAP::FaultError => e
64
65
  puts e.inspect
65
66
  end
@@ -0,0 +1,13 @@
1
+ class VMware::Task < VMware::ManagedEntity
2
+ # nothing usefull in here
3
+ # just to suppress warning
4
+ end
5
+ class VMware::TaskManager < VMware::ManagedEntity
6
+ def recent_tasks
7
+ tasks = self["recentTask"]
8
+ return [] if tasks.nil?
9
+ tasks.collect do |task|
10
+ @session.managed_object_wrapper_factory("Task", task)['info']
11
+ end
12
+ end
13
+ end
@@ -1,12 +1,14 @@
1
1
  class VMware::VirtualMachine < VMware::ManagedEntity
2
2
 
3
3
  def networks
4
+ return [] if self['network'].nil?
4
5
  self["network"].collect do |network|
5
6
  @session.managed_object_wrapper_factory("Network", network)
6
7
  end
7
8
  end
8
9
 
9
10
  def datastores
11
+ return [] if self['datastore'].nil?
10
12
  self["datastore"].collect do |datastore|
11
13
  @session.managed_object_wrapper_factory("Datastore", datastore)
12
14
  end
@@ -16,4 +18,25 @@ class VMware::VirtualMachine < VMware::ManagedEntity
16
18
  @session.managed_object_wrapper_factory("ResourcePool", self["resourcePool"])
17
19
  end
18
20
 
21
+ def powerOnVM_Task
22
+ @session.powerOnVM_Task PowerOnVMRequestType.new self.object_reference
23
+ end
24
+ def powerOffVM
25
+ @session.powerOffVM PowerOffVMRequestType.new self.object_reference
26
+ end
27
+ def shutdownGuest
28
+ @session.shutdownGuest ShutdownGuestRequestType.new self.object_reference
29
+ end
30
+ def markAsTemplate
31
+ @session.markAsTemplate MarkAsTemplateRequestType.new self.object_reference
32
+ end
33
+ def suspendVM_Task
34
+ @session.suspendVM_Task SuspendVMRequestType.new self.object_reference
35
+ end
36
+ def resetVM_Task
37
+ @session.resetVM_Task ResetVMRequestType.new self.object_reference
38
+ end
39
+ def rebootGuest
40
+ @session.rebootGuest RebootGuestRequestType.new self.object_reference
41
+ end
19
42
  end
@@ -31,6 +31,9 @@ class VMware::Session
31
31
  def root_folder
32
32
  managed_object_wrapper_factory("Folder", @sic.rootFolder)
33
33
  end
34
+ def task_manager
35
+ managed_object_wrapper_factory("TaskManager", @sic.taskManager)
36
+ end
34
37
 
35
38
  #
36
39
  # Login to the server.
@@ -54,7 +57,7 @@ class VMware::Session
54
57
  eval("VMware::#{type}.new(self, reference)")
55
58
  rescue
56
59
  puts "WARNING: Unknown managed object type: #{type}"
57
- VMware::ManagedEntity.new(self, reference)
60
+ VMware::ManagedEntity.new(self, reference, type)
58
61
  end
59
62
  end
60
63
 
data/lib/vmware.rb CHANGED
@@ -17,4 +17,5 @@ require 'vmware/objects/host_system'
17
17
  require 'vmware/objects/network'
18
18
  require 'vmware/objects/virtual_machine'
19
19
  require 'vmware/objects/compute_resource'
20
- require 'vmware/objects/datastore'
20
+ require 'vmware/objects/datastore'
21
+ require 'vmware/objects/task_manager'
data/rakefile CHANGED
@@ -12,7 +12,7 @@ Hoe.new('vi_api_lib', version) do |p|
12
12
  p.extra_rdoc_files = ['COPYING']
13
13
  end
14
14
 
15
- task :default => :debug_gem
15
+ task :default => :clean
16
16
 
17
17
  desc "make new history entry with increased major version number"
18
18
  task 'make_major_history' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vi_api_lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Waters
@@ -62,6 +62,7 @@ files:
62
62
  - lib/vmware/objects/host_system.rb
63
63
  - lib/vmware/objects/managed_entity.rb
64
64
  - lib/vmware/objects/network.rb
65
+ - lib/vmware/objects/task_manager.rb
65
66
  - lib/vmware/objects/virtual_machine.rb
66
67
  - lib/vmware/session.rb
67
68
  - lib/vmware/soap/vim25.rb
@@ -69,7 +70,7 @@ files:
69
70
  - lib/vmware/soap/vim25MappingRegistry.rb
70
71
  - rakefile
71
72
  has_rdoc: true
72
- homepage: http://vi_api_lib.rubyforge.org
73
+ homepage: http://rubyforge.org/projects/vi-api-lib/
73
74
  post_install_message:
74
75
  rdoc_options:
75
76
  - --main