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