rbvmomi 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.0
1
+ 1.2.1
@@ -26,9 +26,10 @@ class Connection < TrivialSoap
26
26
  xml.tag! method, :xmlns => @ns do
27
27
  obj2xml xml, '_this', 'ManagedObject', false, this
28
28
  descs.each do |d|
29
- k = d['name'].to_sym
30
- if params.member? k or params.member? k.to_s
31
- v = params.member?(k) ? params[k] : params[k.to_s]
29
+ k = d['name']
30
+ k = k.to_sym if !params.member?(k) && params.member?(k.to_sym)
31
+ v = params[k]
32
+ if not v == nil
32
33
  obj2xml xml, d['name'], d['wsdl_type'], d['is-array'], v
33
34
  else
34
35
  fail "missing required parameter #{d['name']}" unless d['is-optional']
@@ -86,6 +86,23 @@ class EmitRequestTest < Test::Unit::TestCase
86
86
  EOS
87
87
  end
88
88
 
89
+ def test_nil_optional_param
90
+ desc = [
91
+ {
92
+ 'name' => 'blah',
93
+ 'is-array' => false,
94
+ 'is-optional' => true,
95
+ 'wsdl_type' => 'xsd:string',
96
+ }
97
+ ]
98
+
99
+ check desc, <<-EOS, MO, :blah => nil
100
+ <root xmlns="urn:vim25">
101
+ <_this type="VirtualMachine">foo</_this>
102
+ </root>
103
+ EOS
104
+ end
105
+
89
106
  def test_string_key
90
107
  desc = [
91
108
  {
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbvmomi
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 1
7
- - 2
8
- - 0
9
- version: 1.2.0
4
+ prerelease:
5
+ version: 1.2.1
10
6
  platform: ruby
11
7
  authors:
12
8
  - Rich Lane
@@ -25,10 +21,6 @@ dependencies:
25
21
  requirements:
26
22
  - - ">="
27
23
  - !ruby/object:Gem::Version
28
- segments:
29
- - 1
30
- - 4
31
- - 1
32
24
  version: 1.4.1
33
25
  type: :runtime
34
26
  version_requirements: *id001
@@ -40,8 +32,6 @@ dependencies:
40
32
  requirements:
41
33
  - - ">="
42
34
  - !ruby/object:Gem::Version
43
- segments:
44
- - 0
45
35
  version: "0"
46
36
  type: :runtime
47
37
  version_requirements: *id002
@@ -53,8 +43,6 @@ dependencies:
53
43
  requirements:
54
44
  - - ">="
55
45
  - !ruby/object:Gem::Version
56
- segments:
57
- - 0
58
46
  version: "0"
59
47
  type: :runtime
60
48
  version_requirements: *id003
@@ -66,7 +54,6 @@ extensions: []
66
54
 
67
55
  extra_rdoc_files:
68
56
  - LICENSE
69
- - README.html
70
57
  - README.rdoc
71
58
  files:
72
59
  - .yardopts
@@ -116,7 +103,6 @@ files:
116
103
  - test/test_parse_response.rb
117
104
  - test/test_serialization.rb
118
105
  - vmodl.db
119
- - README.html
120
106
  has_rdoc: true
121
107
  homepage: https://github.com/rlane/rbvmomi
122
108
  licenses: []
@@ -131,23 +117,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
131
117
  requirements:
132
118
  - - ">="
133
119
  - !ruby/object:Gem::Version
134
- segments:
135
- - 1
136
- - 8
137
- - 7
138
120
  version: 1.8.7
139
121
  required_rubygems_version: !ruby/object:Gem::Requirement
140
122
  none: false
141
123
  requirements:
142
124
  - - ">="
143
125
  - !ruby/object:Gem::Version
144
- segments:
145
- - 0
146
126
  version: "0"
147
127
  requirements: []
148
128
 
149
129
  rubyforge_project:
150
- rubygems_version: 1.3.7
130
+ rubygems_version: 1.5.3
151
131
  signing_key:
152
132
  specification_version: 3
153
133
  summary: Ruby interface to the VMware vSphere API
@@ -1,76 +0,0 @@
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>