rbvmomi 1.1.6 → 1.1.8

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/README.html ADDED
@@ -0,0 +1,76 @@
1
+ <h1>RbVmomi</h1>
2
+
3
+ <h2>Introduction</h2>
4
+
5
+ <p>RbVmomi is a Ruby interface to the vSphere API. Like the Perl and Java SDKs,
6
+ you can use it to manage ESX and VirtualCenter servers. The current release
7
+ supports the vSphere 4.1 API.</p>
8
+
9
+ <h2>Usage</h2>
10
+
11
+ <p>A simple example of turning on a VM:</p>
12
+
13
+ <pre><code>require 'rbvmomi'
14
+ conn = RbVmomi.connect host: 'foo', user: 'bar', password: 'baz'
15
+ dc = conn.serviceInstance.find_datacenter("mydatacenter") or fail "datacenter not found"
16
+ vm = dc.find_vm("myvm") or fail "VM not found"
17
+ vm.PowerOn_Task.wait_for_completion
18
+ </code></pre>
19
+
20
+ <p>This code uses several RbVmomi extensions to the VI API for concision. The
21
+ expanded snippet below uses only standard API calls and should be familiar to
22
+ users of the Java SDK:</p>
23
+
24
+ <pre><code>require 'rbvmomi'
25
+ conn = RbVmomi.connect host: 'foo', user: 'bar', password: 'baz'
26
+ rootFolder = conn.serviceInstance.content.rootFolder
27
+ dc = rootFolder.childEntity.grep(RbVmomi::VIM::Datacenter).find { |x| x.name == "mydatacenter" } or fail "datacenter not found"
28
+ vm = dc.vmFolder.childEntity.grep(RbVmomi::VIM::VirtualMachine).find { |x| x.name == "myvm" } or fail "VM not found"
29
+ task = vm.PowerOn_Task
30
+ filter = conn.propertyCollector.CreateFilter(
31
+ spec: {
32
+ propSet: [{ type =&gt; 'Task', all: false, pathSet: ['info.state']}],
33
+ objectSet: [{ obj: task }]
34
+ },
35
+ partialUpdates: false
36
+ )
37
+ ver = ''
38
+ while true
39
+ result = conn.propertyCollector.WaitForUpdates(version: ver)
40
+ ver = result.version
41
+ break if ['success', ['error'].member? task.info.state
42
+ end
43
+ filter.DestroyPropertyFilter
44
+ raise task.info.error if task.info.state == 'error'
45
+ </code></pre>
46
+
47
+ <p>As you can see, the extensions RbVmomi adds can dramatically decrease the code
48
+ needed to perform simple tasks while still letting you use the full power of
49
+ the API when necessary. RbVmomi extensions are often more efficient than a
50
+ naive implementation; for example, the find_vm method on VIM::Datacenter used
51
+ in the first example uses the SearchIndex for fast lookups.</p>
52
+
53
+ <p>A few important points:</p>
54
+
55
+ <ul>
56
+ <li>Ruby 1.9 is required.</li>
57
+ <li>Properties are exposed as methods: vm.summary</li>
58
+ <li>All class, method, parameter, and property names match the <a href="http://www.vmware.com/support/developer/vc-sdk/visdk41pubs/ApiReference/index.html">official documentation</a>.</li>
59
+ <li>Data object types can usually be inferred from context, so you may simply use a hash instead.</li>
60
+ <li>Enumeration values are simply strings.</li>
61
+ <li>Example code is included in the examples/ directory.</li>
62
+ <li>A set of helper methods for Trollop is included to speed up development of
63
+ command line apps. See the included examples for usage.</li>
64
+ <li>This is a side project of a VMware developer and is entirely unsupported by VMware.</li>
65
+ </ul>
66
+
67
+ <p>Built-in extensions are in lib/rbvmomi/extensions.rb. You are encouraged to
68
+ reopen VIM classes in your applications and add extensions of your own. If you
69
+ write something generally useful please send it to me and I'll add it in. One
70
+ important point about extensions is that since VIM classes are lazily loaded,
71
+ you need to trigger this loading before you can reopen the class. Putting the
72
+ class name on a line by itself before reopening is enough.</p>
73
+
74
+ <h2>Development</h2>
75
+
76
+ <p>Send patches to rlane@vmware.com.</p>
data/Rakefile CHANGED
@@ -15,7 +15,7 @@ begin
15
15
  gem.add_dependency 'builder'
16
16
  gem.add_dependency 'trollop'
17
17
  gem.add_dependency 'cdb-full'
18
- gem.required_ruby_version = '>= 1.9.1'
18
+ gem.required_ruby_version = '>= 1.8.7'
19
19
  gem.files.include 'vmodl.cdb'
20
20
  gem.files.include '.yardopts'
21
21
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.6
1
+ 1.1.8
@@ -35,7 +35,7 @@ class RbVmomi::TrivialSoap
35
35
  @http.key = OpenSSL::PKey::RSA.new(@opts[:key]) if @opts[:key]
36
36
  end
37
37
  @http.set_debug_output(STDERR) if $DEBUG
38
- @http.read_timeout = 1000000000
38
+ @http.read_timeout = 1000000
39
39
  @http.open_timeout = 5
40
40
  def @http.on_connect
41
41
  @socket.io.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
@@ -8,6 +8,51 @@ class RbVmomi::VIM::Folder
8
8
  x if x.is_a? type
9
9
  end
10
10
 
11
+ # Retrieve a virtual machine or host by DNS name
12
+ # @param name [String] The fully qualified domain name to find.
13
+ # @param type [Class] Return nil unless the found entity <tt>is_a? type</tt>.
14
+ # @param dc [RbVmomi::VIM::Datacenter] Restricts the query to entities in the given Datacenter.
15
+ # @return [VIM::ManagedEntity]
16
+ def findByDnsName name, type=RbVmomi::VIM::VirtualMachine, dc=nil
17
+ propSpecs = {
18
+ :entity => self, :dnsName => name,
19
+ :vmSearch => type == RbVmomi::VIM::VirtualMachine
20
+ }
21
+ propSpecs[:datacenter] = dc if dc
22
+ x = @soap.searchIndex.FindByDnsName(propSpecs)
23
+ x if x.is_a? type
24
+ end
25
+
26
+ # Retrieve a virtual machine or host by IP address
27
+ # @param ip [String] The IP address is in dot-decimal notation.
28
+ # @param type [Class] Return nil unless the found entity <tt>is_a? type</tt>.
29
+ # @param dc [RbVmomi::VIM::Datacenter] Restricts the query to entities in the given Datacenter.
30
+ # @return [VIM::ManagedEntity]
31
+ def findByIp ip, type=RbVmomi::VIM::VirtualMachine, dc=nil
32
+ propSpecs = {
33
+ :entity => self, :ip => ip,
34
+ :vmSearch => type == RbVmomi::VIM::VirtualMachine
35
+ }
36
+ propSpecs[:datacenter] = dc if dc
37
+ x = @soap.searchIndex.FindByIp(propSpecs)
38
+ x if x.is_a? type
39
+ end
40
+
41
+ # Retrieve a virtual machine or host by BIOS UUID.
42
+ # @param uuid [String] The UUID to find.
43
+ # @param type [Class] Return nil unless the found entity <tt>is_a? type</tt>.
44
+ # @param dc [RbVmomi::VIM::Datacenter] Restricts the query to entities in the given Datacenter.
45
+ # @return [VIM::ManagedEntity]
46
+ def findByUuid uuid, type=RbVmomi::VIM::VirtualMachine, dc=nil
47
+ propSpecs = {
48
+ :entity => self, :uuid => uuid, :instanceUuid => false,
49
+ :vmSearch => type == RbVmomi::VIM::VirtualMachine
50
+ }
51
+ propSpecs[:datacenter] = dc if dc
52
+ x = @soap.searchIndex.FindByUuid(propSpecs)
53
+ x if x.is_a? type
54
+ end
55
+
11
56
  # Alias to <tt>traverse path, type, true</tt>
12
57
  # @see #traverse
13
58
  def traverse! path, type=Object
metadata CHANGED
@@ -1,8 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbvmomi
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 3
4
5
  prerelease:
5
- version: 1.1.6
6
+ segments:
7
+ - 1
8
+ - 1
9
+ - 8
10
+ version: 1.1.8
6
11
  platform: ruby
7
12
  authors:
8
13
  - Rich Lane
@@ -10,7 +15,7 @@ autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2011-02-28 00:00:00 -08:00
18
+ date: 2011-03-15 00:00:00 -07:00
14
19
  default_executable: rbvmomish
15
20
  dependencies:
16
21
  - !ruby/object:Gem::Dependency
@@ -21,6 +26,11 @@ dependencies:
21
26
  requirements:
22
27
  - - ">="
23
28
  - !ruby/object:Gem::Version
29
+ hash: 5
30
+ segments:
31
+ - 1
32
+ - 4
33
+ - 1
24
34
  version: 1.4.1
25
35
  type: :runtime
26
36
  version_requirements: *id001
@@ -32,6 +42,9 @@ dependencies:
32
42
  requirements:
33
43
  - - ">="
34
44
  - !ruby/object:Gem::Version
45
+ hash: 3
46
+ segments:
47
+ - 0
35
48
  version: "0"
36
49
  type: :runtime
37
50
  version_requirements: *id002
@@ -43,6 +56,9 @@ dependencies:
43
56
  requirements:
44
57
  - - ">="
45
58
  - !ruby/object:Gem::Version
59
+ hash: 3
60
+ segments:
61
+ - 0
46
62
  version: "0"
47
63
  type: :runtime
48
64
  version_requirements: *id003
@@ -54,6 +70,9 @@ dependencies:
54
70
  requirements:
55
71
  - - ">="
56
72
  - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
57
76
  version: "0"
58
77
  type: :runtime
59
78
  version_requirements: *id004
@@ -65,6 +84,7 @@ extensions: []
65
84
 
66
85
  extra_rdoc_files:
67
86
  - LICENSE
87
+ - README.html
68
88
  - README.rdoc
69
89
  files:
70
90
  - .yardopts
@@ -114,6 +134,7 @@ files:
114
134
  - test/test_parse_response.rb
115
135
  - test/test_serialization.rb
116
136
  - vmodl.cdb
137
+ - README.html
117
138
  has_rdoc: true
118
139
  homepage: https://github.com/rlane/rbvmomi
119
140
  licenses: []
@@ -128,17 +149,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
128
149
  requirements:
129
150
  - - ">="
130
151
  - !ruby/object:Gem::Version
131
- version: 1.9.1
152
+ hash: 57
153
+ segments:
154
+ - 1
155
+ - 8
156
+ - 7
157
+ version: 1.8.7
132
158
  required_rubygems_version: !ruby/object:Gem::Requirement
133
159
  none: false
134
160
  requirements:
135
161
  - - ">="
136
162
  - !ruby/object:Gem::Version
163
+ hash: 3
164
+ segments:
165
+ - 0
137
166
  version: "0"
138
167
  requirements: []
139
168
 
140
169
  rubyforge_project:
141
- rubygems_version: 1.5.3
170
+ rubygems_version: 1.4.1
142
171
  signing_key:
143
172
  specification_version: 3
144
173
  summary: Ruby interface to the VMware vSphere API