vmonkey 0.2.0 → 0.3.0

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.
@@ -1,3 +1,3 @@
1
1
  module Vmonkey
2
- VERSION = '0.2.0'
2
+ VERSION = '0.3.0'
3
3
  end
@@ -8,7 +8,7 @@ class RbVmomi::VIM::VirtualMachine
8
8
  def clone_to(path, opts = {})
9
9
  dest = monkey.get(path.parent)
10
10
  unless dest.is_a? RbVmomi::VIM::Folder or dest.is_a? RbVmomi::VIM::VirtualApp
11
- raise "Cannot clone_to [#{dest.pretty_path}] - destination must specify a Folder or VirtualApp"
11
+ raise "Cannot clone_to [#{path.parent}] - destination must specify a Folder or VirtualApp"
12
12
  end
13
13
 
14
14
  params = _clone_params(path.basename, dest, opts)
@@ -57,14 +57,14 @@ class RbVmomi::VIM::VirtualMachine
57
57
 
58
58
  unless self.method_defined? :guest_ip
59
59
  ## backported from rbvmomi 1.8 for rbvmomi 1.5 support
60
- def guest_ip
60
+ def guest_ip
61
61
  g = self.guest
62
62
  if g.ipAddress && (g.toolsStatus == "toolsOk" || g.toolsStatus == "toolsOld")
63
63
  g.ipAddress
64
64
  else
65
65
  nil
66
66
  end
67
- end
67
+ end
68
68
  end
69
69
 
70
70
  def move_to!(path)
@@ -89,8 +89,24 @@ class RbVmomi::VIM::VirtualMachine
89
89
  tcp_socket && tcp_socket.close
90
90
  end
91
91
 
92
+ def wait_for(max=300, interval=2, &block)
93
+ elapsed = 0
94
+ start = Time.now
95
+
96
+ until (result = yield) || (elapsed > max)
97
+ sleep interval
98
+ elapsed = Time.now - start
99
+ end
100
+
101
+ unless result
102
+ raise Errors::TimeoutError.new "Waited #{max} seconds, giving up"
103
+ end
104
+
105
+ true
106
+ end
107
+
92
108
  def wait_for_port(port)
93
- sleep 2 until port_ready?(port)
109
+ wait_for { port_ready?(port) }
94
110
  end
95
111
 
96
112
  def stop
@@ -105,6 +121,14 @@ class RbVmomi::VIM::VirtualMachine
105
121
  PowerOnVM_Task().wait_for_completion unless runtime.powerState == 'poweredOn'
106
122
  end
107
123
 
124
+ def started?
125
+ runtime.powerState == 'poweredOn'
126
+ end
127
+
128
+ def ready?
129
+ ! guest_ip.nil?
130
+ end
131
+
108
132
  def find_property(name)
109
133
  config.vAppConfig.property.find { |p| p.props[:id] == name.to_s }
110
134
  end
@@ -144,7 +144,7 @@ describe RbVmomi::VIM::VirtualMachine do
144
144
  @other_path = "#{@vm_path}-other"
145
145
  @other_vm = @spec_vm.clone_to @other_path
146
146
  end
147
-
147
+
148
148
  after(:all) do
149
149
  other_vm = @monkey.vm @other_path
150
150
  other_vm.destroy if other_vm
@@ -174,14 +174,33 @@ describe RbVmomi::VIM::VirtualMachine do
174
174
  context 'that has had #start called' do
175
175
  before(:all) { @spec_vm.start }
176
176
 
177
- describe '#port_ready?' do
178
- it 'should be false immediately following start' do
179
- expect(@spec_vm.port_ready? 22).to be_false
177
+ context 'immediately following start' do
178
+ describe '#ready?' do
179
+ it 'should be false' do
180
+ expect(@spec_vm.ready?).to be_false
181
+ end
182
+ end
183
+
184
+ describe '#port_ready?' do
185
+ it 'should be false' do
186
+ expect(@spec_vm.port_ready? 22).to be_false
187
+ end
188
+ end
189
+ end
190
+
191
+ context 'following wait_for_port' do
192
+ before(:all) { @spec_vm.wait_for_port 22 }
193
+
194
+ describe '#ready?' do
195
+ it 'should be true' do
196
+ expect(@spec_vm.ready?).to be_true
197
+ end
180
198
  end
181
199
 
182
- it 'should be true after wait_for_port' do
183
- @spec_vm.wait_for_port 22
184
- expect(@spec_vm.port_ready? 22).to be_true
200
+ describe '#port_ready?' do
201
+ it 'should be true' do
202
+ expect(@spec_vm.port_ready? 22).to be_true
203
+ end
185
204
  end
186
205
  end
187
206
 
@@ -23,5 +23,5 @@ Gem::Specification.new do |spec|
23
23
 
24
24
  spec.add_development_dependency 'bundler', '~> 1.6'
25
25
  spec.add_development_dependency 'rake'
26
- spec.add_development_dependency 'rspec'
26
+ spec.add_development_dependency 'rspec', '~> 2.14'
27
27
  end
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vmonkey
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Brian Dupras
@@ -9,11 +10,12 @@ authors:
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2014-06-30 00:00:00.000000000 Z
13
+ date: 2014-07-01 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: nokogiri
16
17
  requirement: !ruby/object:Gem::Requirement
18
+ none: false
17
19
  requirements:
18
20
  - - '='
19
21
  - !ruby/object:Gem::Version
@@ -21,6 +23,7 @@ dependencies:
21
23
  type: :runtime
22
24
  prerelease: false
23
25
  version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
24
27
  requirements:
25
28
  - - '='
26
29
  - !ruby/object:Gem::Version
@@ -28,6 +31,7 @@ dependencies:
28
31
  - !ruby/object:Gem::Dependency
29
32
  name: rbvmomi
30
33
  requirement: !ruby/object:Gem::Requirement
34
+ none: false
31
35
  requirements:
32
36
  - - ~>
33
37
  - !ruby/object:Gem::Version
@@ -35,6 +39,7 @@ dependencies:
35
39
  type: :runtime
36
40
  prerelease: false
37
41
  version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
38
43
  requirements:
39
44
  - - ~>
40
45
  - !ruby/object:Gem::Version
@@ -42,6 +47,7 @@ dependencies:
42
47
  - !ruby/object:Gem::Dependency
43
48
  name: bundler
44
49
  requirement: !ruby/object:Gem::Requirement
50
+ none: false
45
51
  requirements:
46
52
  - - ~>
47
53
  - !ruby/object:Gem::Version
@@ -49,6 +55,7 @@ dependencies:
49
55
  type: :development
50
56
  prerelease: false
51
57
  version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
52
59
  requirements:
53
60
  - - ~>
54
61
  - !ruby/object:Gem::Version
@@ -56,32 +63,36 @@ dependencies:
56
63
  - !ruby/object:Gem::Dependency
57
64
  name: rake
58
65
  requirement: !ruby/object:Gem::Requirement
66
+ none: false
59
67
  requirements:
60
- - - '>='
68
+ - - ! '>='
61
69
  - !ruby/object:Gem::Version
62
70
  version: '0'
63
71
  type: :development
64
72
  prerelease: false
65
73
  version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
66
75
  requirements:
67
- - - '>='
76
+ - - ! '>='
68
77
  - !ruby/object:Gem::Version
69
78
  version: '0'
70
79
  - !ruby/object:Gem::Dependency
71
80
  name: rspec
72
81
  requirement: !ruby/object:Gem::Requirement
82
+ none: false
73
83
  requirements:
74
- - - '>='
84
+ - - ~>
75
85
  - !ruby/object:Gem::Version
76
- version: '0'
86
+ version: '2.14'
77
87
  type: :development
78
88
  prerelease: false
79
89
  version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
80
91
  requirements:
81
- - - '>='
92
+ - - ~>
82
93
  - !ruby/object:Gem::Version
83
- version: '0'
84
- description: ' simple to use vsphere methods '
94
+ version: '2.14'
95
+ description: ! ' simple to use vsphere methods '
85
96
  email:
86
97
  - brian@duprasville.com
87
98
  - dsmith@rallydev.com
@@ -113,26 +124,33 @@ files:
113
124
  homepage: https://github.com/something/vmonkey
114
125
  licenses:
115
126
  - MIT
116
- metadata: {}
117
127
  post_install_message:
118
128
  rdoc_options: []
119
129
  require_paths:
120
130
  - lib
121
131
  required_ruby_version: !ruby/object:Gem::Requirement
132
+ none: false
122
133
  requirements:
123
- - - '>='
134
+ - - ! '>='
124
135
  - !ruby/object:Gem::Version
125
136
  version: '0'
137
+ segments:
138
+ - 0
139
+ hash: 3892349743528929698
126
140
  required_rubygems_version: !ruby/object:Gem::Requirement
141
+ none: false
127
142
  requirements:
128
- - - '>='
143
+ - - ! '>='
129
144
  - !ruby/object:Gem::Version
130
145
  version: '0'
146
+ segments:
147
+ - 0
148
+ hash: 3892349743528929698
131
149
  requirements: []
132
150
  rubyforge_project:
133
- rubygems_version: 2.1.11
151
+ rubygems_version: 1.8.25
134
152
  signing_key:
135
- specification_version: 4
153
+ specification_version: 3
136
154
  summary: simple to use vsphere methods
137
155
  test_files:
138
156
  - spec/datacenter_spec.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: a0ff9f61554b7d4d9b77eb7db920190d126c0dc7
4
- data.tar.gz: edd8cf44704212d256c7abb8e00f5bd83ff4ee1d
5
- SHA512:
6
- metadata.gz: 34f00cb986328f92dbbe713edd3342c6674a25f18332f089ca6b789a9f2c4abbefc47705e3fd781567504b82770d4040942aa1dcd9ed2be4c4e2ec91ac89ee6f
7
- data.tar.gz: 81d1b577c3f4de6a43c4ce2789726cdf1672a2388096ca913bac1dbc8ff278a7e17f5cf2303cad323fcf7ce941d761e35d4d69be2796bd227396046bae0368c1