vmonkey 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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