vi_api_lib 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +16 -0
- data/lib/vmware/objects/folder.rb +9 -1
- data/lib/vmware/objects/managed_entity.rb +3 -19
- data/lib/vmware/objects/virtual_machine.rb +48 -4
- data/lib/vmware/session.rb +61 -1
- metadata +2 -2
data/History.txt
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
=== 0.1.2 / 2009-06-07
|
2
|
+
|
3
|
+
* 1 bug fix:
|
4
|
+
* Fix powerOff for VitualMachibe
|
5
|
+
|
6
|
+
* 2 minor enhancements:
|
7
|
+
* Add find_entities method to Session
|
8
|
+
* Added shortcut to managed object wrapper in session
|
9
|
+
|
10
|
+
* 5 additional entity methods:
|
11
|
+
* Add markAsVirtualMachine function to VirtualMachine
|
12
|
+
* Add migrate function to VirtualMachine
|
13
|
+
* Added rename methods to folder and virtual machine
|
14
|
+
* Added destroy methods to folder and virtual machine
|
15
|
+
* Added clone methods to virtual machine
|
16
|
+
|
1
17
|
=== 0.1.1 / 2009-04-21
|
2
18
|
|
3
19
|
* 3 bug fixes:
|
@@ -14,5 +14,13 @@ class VMware::Folder < VMware::ManagedEntity
|
|
14
14
|
|
15
15
|
result
|
16
16
|
end
|
17
|
+
def rename_Task name
|
18
|
+
rt = RenameRequestType.new self.object_reference
|
19
|
+
rt.newName = name
|
20
|
+
@session.rename_Task rt
|
21
|
+
end
|
22
|
+
def destroy_Task
|
23
|
+
@session.destroy_Task DestroyRequestType.new self.object_reference
|
24
|
+
end
|
17
25
|
|
18
|
-
end
|
26
|
+
end
|
@@ -25,25 +25,9 @@ class VMware::ManagedEntity
|
|
25
25
|
return @cached_properties
|
26
26
|
end
|
27
27
|
|
28
|
-
# Object at which filter starts.
|
29
|
-
object_spec = ObjectSpec.new
|
30
|
-
object_spec.obj = @object_reference
|
31
|
-
object_spec.skip = false
|
32
|
-
|
33
|
-
# Which properties to return.
|
34
|
-
prop_spec = PropertySpec.new
|
35
|
-
prop_spec.type = @managed_type || self.class.to_s.gsub(/^.*::/, "")
|
36
|
-
prop_spec.pathSet = prop_list
|
37
|
-
prop_spec.all = prop_list.empty?
|
38
|
-
|
39
|
-
# Create the filter.
|
40
|
-
prop_filter_spec = PropertyFilterSpec.new
|
41
|
-
prop_filter_spec.objectSet = [object_spec]
|
42
|
-
prop_filter_spec.propSet = prop_spec
|
43
|
-
|
44
28
|
# Create the request.
|
45
|
-
|
46
|
-
request
|
29
|
+
type = @managed_type || self.class.to_s.gsub(/^.*::/, "")
|
30
|
+
request = @session.create_prop_request type, prop_list, @object_reference
|
47
31
|
|
48
32
|
prop_hash = {}
|
49
33
|
begin
|
@@ -85,4 +69,4 @@ class VMware::ManagedEntity
|
|
85
69
|
return p[key.to_s]
|
86
70
|
end
|
87
71
|
|
88
|
-
end
|
72
|
+
end
|
@@ -18,11 +18,13 @@ class VMware::VirtualMachine < VMware::ManagedEntity
|
|
18
18
|
@session.managed_object_wrapper_factory("ResourcePool", self["resourcePool"])
|
19
19
|
end
|
20
20
|
|
21
|
-
def powerOnVM_Task
|
22
|
-
|
21
|
+
def powerOnVM_Task host=nil
|
22
|
+
rt = PowerOnVMRequestType.new self.object_reference
|
23
|
+
rt.host = host
|
24
|
+
@session.powerOnVM_Task rt
|
23
25
|
end
|
24
26
|
def powerOffVM
|
25
|
-
@session.
|
27
|
+
@session.powerOffVM_Task PowerOffVMRequestType.new self.object_reference
|
26
28
|
end
|
27
29
|
def shutdownGuest
|
28
30
|
@session.shutdownGuest ShutdownGuestRequestType.new self.object_reference
|
@@ -39,4 +41,46 @@ class VMware::VirtualMachine < VMware::ManagedEntity
|
|
39
41
|
def rebootGuest
|
40
42
|
@session.rebootGuest RebootGuestRequestType.new self.object_reference
|
41
43
|
end
|
42
|
-
|
44
|
+
def migrateVM_Task host
|
45
|
+
rt = MigrateVMRequestType.new self.object_reference
|
46
|
+
rt.priority = VirtualMachineMovePriority.new("defaultPriority")
|
47
|
+
rt.host = host
|
48
|
+
@session.migrateVM_Task rt
|
49
|
+
end
|
50
|
+
def markAsVirtualMachine pool
|
51
|
+
rt = MarkAsVirtualMachineRequestType.new self.object_reference
|
52
|
+
rt.pool = pool
|
53
|
+
@session.markAsVirtualMachine rt
|
54
|
+
end
|
55
|
+
def rename_Task name
|
56
|
+
rt = RenameRequestType.new self.object_reference
|
57
|
+
rt.newName = name
|
58
|
+
@session.rename_Task rt
|
59
|
+
end
|
60
|
+
def destroy_Task
|
61
|
+
@session.destroy_Task DestroyRequestType.new self.object_reference
|
62
|
+
end
|
63
|
+
def cloneVMToTemplate folder, name, pool
|
64
|
+
location = VirtualMachineRelocateSpec.new
|
65
|
+
location.pool = pool
|
66
|
+
spec = VirtualMachineCloneSpec.new
|
67
|
+
spec.template = true
|
68
|
+
spec.powerOn = false
|
69
|
+
spec.location = location
|
70
|
+
cloneVM_Task folder, name, spec
|
71
|
+
end
|
72
|
+
def cloneVM folder, name, power_on=false
|
73
|
+
spec = VirtualMachineCloneSpec.new
|
74
|
+
spec.template = false
|
75
|
+
spec.powerOn = power_on
|
76
|
+
spec.location = VirtualMachineRelocateSpec.new
|
77
|
+
cloneVM_Task folder, name, spec
|
78
|
+
end
|
79
|
+
def cloneVM_Task folder, name, spec
|
80
|
+
rt = CloneVMRequestType.new self.object_reference
|
81
|
+
rt.folder = folder
|
82
|
+
rt.name = name
|
83
|
+
rt.spec = spec
|
84
|
+
@session.cloneVM_Task rt
|
85
|
+
end
|
86
|
+
end
|
data/lib/vmware/session.rb
CHANGED
@@ -34,6 +34,63 @@ class VMware::Session
|
|
34
34
|
def task_manager
|
35
35
|
managed_object_wrapper_factory("TaskManager", @sic.taskManager)
|
36
36
|
end
|
37
|
+
def find_entities type, begin_entity=nil
|
38
|
+
begin_entity ||= @sic.rootFolder
|
39
|
+
request = create_prop_request type, [], begin_entity, traversal_specs
|
40
|
+
begin
|
41
|
+
retrieveProperties(request).collect { |obj| obj.obj }
|
42
|
+
rescue SOAP::FaultError => e
|
43
|
+
puts e.inspect
|
44
|
+
[]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def traversal_specs
|
49
|
+
specs = []
|
50
|
+
spec = selection_spec ['folder_spec','host_folder_spec','vm_folder_spec','host_spec','resource_spec','cr_spec','hosts_spec']
|
51
|
+
specs.push(traversal_spec 'folder_spec', 'Folder', 'childEntity', spec)
|
52
|
+
spec = selection_spec ['folder_spec']
|
53
|
+
specs.push(traversal_spec 'host_folder_spec', 'Datacenter', 'hostFolder', spec)
|
54
|
+
specs.push(traversal_spec 'vm_folder_spec', 'Datacenter', 'vmFolder', spec)
|
55
|
+
specs.push(traversal_spec 'host_spec', 'HostSystem', 'vm', spec)
|
56
|
+
spec = selection_spec ['resource_spec']
|
57
|
+
specs.push(traversal_spec 'resource_spec', 'ResourcePool', 'resourcePool', spec)
|
58
|
+
specs.push(traversal_spec 'cr_spec', 'ComputeResource', 'resourcePool', spec)
|
59
|
+
spec = selection_spec ['host_spec']
|
60
|
+
specs.push(traversal_spec 'hosts_spec', 'ComputeResource', 'host', spec)
|
61
|
+
specs
|
62
|
+
end
|
63
|
+
def traversal_spec name, type, path, select_set
|
64
|
+
TraversalSpec.new nil, [], name, type, path, false, select_set
|
65
|
+
end
|
66
|
+
def selection_spec names
|
67
|
+
names.collect do |name|
|
68
|
+
spec = SelectionSpec.new
|
69
|
+
spec.name = name
|
70
|
+
spec
|
71
|
+
end
|
72
|
+
end
|
73
|
+
def create_prop_request type, path_set, begin_entity, select_set=nil
|
74
|
+
# Which properties to return.
|
75
|
+
prop_spec = PropertySpec.new
|
76
|
+
prop_spec.type = type
|
77
|
+
prop_spec.pathSet = path_set
|
78
|
+
prop_spec.all = path_set.empty?
|
79
|
+
|
80
|
+
# Object at which filter starts.
|
81
|
+
object_spec = ObjectSpec.new
|
82
|
+
object_spec.obj = begin_entity
|
83
|
+
object_spec.skip = false
|
84
|
+
object_spec.selectSet = select_set unless select_set.nil?
|
85
|
+
|
86
|
+
# Create the filter.
|
87
|
+
prop_filter_spec = PropertyFilterSpec.new
|
88
|
+
prop_filter_spec.propSet = prop_spec
|
89
|
+
prop_filter_spec.objectSet = [object_spec]
|
90
|
+
|
91
|
+
# Create the request.
|
92
|
+
RetrievePropertiesRequestType.new @sic.propertyCollector, prop_filter_spec
|
93
|
+
end
|
37
94
|
|
38
95
|
#
|
39
96
|
# Login to the server.
|
@@ -56,10 +113,13 @@ class VMware::Session
|
|
56
113
|
begin
|
57
114
|
eval("VMware::#{type}.new(self, reference)")
|
58
115
|
rescue
|
59
|
-
puts "WARNING: Unknown managed object type: #{type}"
|
116
|
+
STDERR.puts "WARNING: Unknown managed object type: #{type}"
|
60
117
|
VMware::ManagedEntity.new(self, reference, type)
|
61
118
|
end
|
62
119
|
end
|
120
|
+
def wrap ref
|
121
|
+
managed_object_wrapper_factory ref.xmlattr_type, ref
|
122
|
+
end
|
63
123
|
|
64
124
|
#
|
65
125
|
# Catch any function call and send it over the soap connection.
|
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.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Waters
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-
|
13
|
+
date: 2009-06-07 00:00:00 +02:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|