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 +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
|