vi_api_lib 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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