vi_api_lib 0.1.1 → 0.1.2

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,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
- request = RetrievePropertiesRequestType.new(@session.sic.propertyCollector)
46
- request.specSet = prop_filter_spec
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
- @session.powerOnVM_Task PowerOnVMRequestType.new self.object_reference
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.powerOffVM PowerOffVMRequestType.new self.object_reference
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
- end
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
@@ -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.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-04-24 00:00:00 +02:00
13
+ date: 2009-06-07 00:00:00 +02:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency