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 +14 -0
- data/Manifest.txt +1 -0
- data/README +2 -2
- data/lib/vmware/objects/data_object.rb +4 -1
- data/lib/vmware/objects/managed_entity.rb +4 -3
- data/lib/vmware/objects/task_manager.rb +13 -0
- data/lib/vmware/objects/virtual_machine.rb +23 -0
- data/lib/vmware/session.rb +4 -1
- data/lib/vmware.rb +2 -1
- data/rakefile +1 -1
- metadata +3 -2
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://
|
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
|
data/lib/vmware/session.rb
CHANGED
@@ -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
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.
|
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://
|
73
|
+
homepage: http://rubyforge.org/projects/vi-api-lib/
|
73
74
|
post_install_message:
|
74
75
|
rdoc_options:
|
75
76
|
- --main
|