vagrant-vsphere 1.12.1 → 1.13.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.
- checksums.yaml +4 -4
- data/.bumpversion.cfg +1 -1
- data/.ruby-version +1 -0
- data/.travis.yml +2 -2
- data/CHANGELOG.md +6 -0
- data/Gemfile +1 -3
- data/README.md +2 -2
- data/lib/vSphere/action.rb +50 -0
- data/lib/vSphere/action/get_state.rb +2 -1
- data/lib/vSphere/action/is_suspended.rb +16 -0
- data/lib/vSphere/action/message_not_suspended.rb +18 -0
- data/lib/vSphere/action/resume.rb +30 -0
- data/lib/vSphere/action/suspend.rb +32 -0
- data/lib/vSphere/util/vm_helpers.rb +9 -0
- data/lib/vSphere/version.rb +1 -1
- data/locales/en.yml +6 -0
- data/spec/action_spec.rb +62 -0
- data/spec/get_ssh_info_spec.rb +3 -2
- data/spec/get_state_spec.rb +2 -2
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '02349de22aa61f900e082d22099a5010bf77c1fd'
|
4
|
+
data.tar.gz: f3cd646a826ef3deb077a2e123992dbc8dc6ef8a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b4789843ce0833dd2d510b17a8ed5fc13328410e5f0c17518a87749b303fd58cd3e40ec1542f4abbb7982d05b613c2b164088e614010faf9931d440086fff6d
|
7
|
+
data.tar.gz: 87f956a7410bde5568d37187af7569733e5eec5ab63b7eb1dc471ce237149c834b9dc06a414049bce5a003921beb9f2e6a3bf6ca9c1899314df1ab59a14e45e3
|
data/.bumpversion.cfg
CHANGED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.3.5
|
data/.travis.yml
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
language: ruby
|
2
2
|
cache: bundler
|
3
3
|
rvm:
|
4
|
-
- 2.
|
4
|
+
- 2.3.5
|
5
5
|
|
6
6
|
before_install:
|
7
7
|
- rvm @global do gem uninstall bundler --all --executables
|
8
8
|
- gem uninstall bundler --all --executables
|
9
|
-
- gem install bundler --version '1.
|
9
|
+
- gem install bundler --version '1.15.4'
|
10
10
|
|
11
11
|
sudo: false
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
## [1.13.0 (2017-11-06)](https://github.com/nsidc/vagrant-vsphere/releases/tag/v1.13.0)
|
2
|
+
|
3
|
+
- Add support for the commands
|
4
|
+
[`suspend`](https://www.vagrantup.com/docs/cli/suspend.html) and
|
5
|
+
[`resume`](https://www.vagrantup.com/docs/cli/resume.html).
|
6
|
+
|
1
7
|
## [1.12.1 (2017-03-07)](https://github.com/nsidc/vagrant-vsphere/releases/tag/v1.12.1)
|
2
8
|
|
3
9
|
- If no valid adapters can be found on a host when using the `real_nic_ip`
|
data/Gemfile
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
source 'http://rubygems.org'
|
2
2
|
|
3
|
-
gemspec
|
4
|
-
|
5
3
|
group :development do
|
6
4
|
# We depend on Vagrant for development, but we don't add it as a
|
7
5
|
# gem dependency because we expect to be installed within the
|
@@ -10,5 +8,5 @@ group :development do
|
|
10
8
|
end
|
11
9
|
|
12
10
|
group :plugins do
|
13
|
-
|
11
|
+
gemspec
|
14
12
|
end
|
data/README.md
CHANGED
@@ -19,9 +19,9 @@ This provider is built on top of the
|
|
19
19
|
* libxml2, libxml2-dev, libxslt, libxslt-dev
|
20
20
|
|
21
21
|
## Current Version
|
22
|
-
**version: 1.
|
22
|
+
**version: 1.13.0**
|
23
23
|
|
24
|
-
vagrant-vsphere (**version: 1.
|
24
|
+
vagrant-vsphere (**version: 1.13.0**) is available from
|
25
25
|
[RubyGems.org](https://rubygems.org/gems/vagrant-vsphere)
|
26
26
|
|
27
27
|
## Installation
|
data/lib/vSphere/action.rb
CHANGED
@@ -157,6 +157,52 @@ module VagrantPlugins
|
|
157
157
|
end
|
158
158
|
end
|
159
159
|
|
160
|
+
def self.action_resume
|
161
|
+
Vagrant::Action::Builder.new.tap do |b|
|
162
|
+
b.use ConfigValidate
|
163
|
+
b.use ConnectVSphere
|
164
|
+
b.use Call, IsCreated do |env, b2|
|
165
|
+
unless env[:result]
|
166
|
+
b2.use MessageNotCreated
|
167
|
+
next
|
168
|
+
end
|
169
|
+
|
170
|
+
b2.use Call, IsSuspended do |env2, b3|
|
171
|
+
unless env2[:result]
|
172
|
+
b3.use MessageNotSuspended
|
173
|
+
next
|
174
|
+
end
|
175
|
+
|
176
|
+
b3.use Resume
|
177
|
+
end
|
178
|
+
end
|
179
|
+
b.use CloseVSphere
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
def self.action_suspend
|
184
|
+
Vagrant::Action::Builder.new.tap do |b|
|
185
|
+
b.use ConfigValidate
|
186
|
+
b.use ConnectVSphere
|
187
|
+
b.use Call, IsCreated do |env, b2|
|
188
|
+
unless env[:result]
|
189
|
+
b2.use MessageNotCreated
|
190
|
+
next
|
191
|
+
end
|
192
|
+
|
193
|
+
b2.use Call, IsRunning do |env2, b3|
|
194
|
+
unless env2[:result]
|
195
|
+
b3.use MessageNotRunning
|
196
|
+
next
|
197
|
+
end
|
198
|
+
|
199
|
+
b3.use Suspend
|
200
|
+
end
|
201
|
+
end
|
202
|
+
b.use CloseVSphere
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
160
206
|
# vSphere specific actions
|
161
207
|
def self.action_get_state
|
162
208
|
Vagrant::Action::Builder.new.tap do |b|
|
@@ -259,11 +305,15 @@ module VagrantPlugins
|
|
259
305
|
autoload :GetState, action_root.join('get_state')
|
260
306
|
autoload :IsCreated, action_root.join('is_created')
|
261
307
|
autoload :IsRunning, action_root.join('is_running')
|
308
|
+
autoload :IsSuspended, action_root.join('is_suspended')
|
262
309
|
autoload :MessageAlreadyCreated, action_root.join('message_already_created')
|
263
310
|
autoload :MessageNotCreated, action_root.join('message_not_created')
|
264
311
|
autoload :MessageNotRunning, action_root.join('message_not_running')
|
312
|
+
autoload :MessageNotSuspended, action_root.join('message_not_suspended')
|
265
313
|
autoload :PowerOff, action_root.join('power_off')
|
266
314
|
autoload :PowerOn, action_root.join('power_on')
|
315
|
+
autoload :Resume, action_root.join('resume')
|
316
|
+
autoload :Suspend, action_root.join('suspend')
|
267
317
|
autoload :WaitForIPAddress, action_root.join('wait_for_ip_address')
|
268
318
|
|
269
319
|
# TODO: Remove the if guard when Vagrant 1.8.0 is the minimum version.
|
@@ -30,8 +30,9 @@ module VagrantPlugins
|
|
30
30
|
|
31
31
|
if powered_on?(vm)
|
32
32
|
:running
|
33
|
+
elsif suspended?(vm)
|
34
|
+
:suspended
|
33
35
|
else
|
34
|
-
# If the VM is powered off or suspended, we consider it to be powered off. A power on command will either turn on or resume the VM
|
35
36
|
:poweroff
|
36
37
|
end
|
37
38
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'i18n'
|
2
|
+
|
3
|
+
module VagrantPlugins
|
4
|
+
module VSphere
|
5
|
+
module Action
|
6
|
+
class MessageNotSuspended
|
7
|
+
def initialize(app, _env)
|
8
|
+
@app = app
|
9
|
+
end
|
10
|
+
|
11
|
+
def call(env)
|
12
|
+
env[:ui].info I18n.t('vsphere.vm_not_suspended')
|
13
|
+
@app.call(env)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'rbvmomi'
|
2
|
+
require 'i18n'
|
3
|
+
require 'vSphere/util/vim_helpers'
|
4
|
+
require 'vSphere/util/vm_helpers'
|
5
|
+
|
6
|
+
module VagrantPlugins
|
7
|
+
module VSphere
|
8
|
+
module Action
|
9
|
+
class Resume
|
10
|
+
include Util::VimHelpers
|
11
|
+
include Util::VmHelpers
|
12
|
+
|
13
|
+
def initialize(app, _env)
|
14
|
+
@app = app
|
15
|
+
end
|
16
|
+
|
17
|
+
def call(env)
|
18
|
+
vm = get_vm_by_uuid env[:vSphere_connection], env[:machine]
|
19
|
+
|
20
|
+
if suspended?(vm)
|
21
|
+
env[:ui].info I18n.t('vsphere.resume_vm')
|
22
|
+
resume_vm(vm)
|
23
|
+
end
|
24
|
+
|
25
|
+
@app.call env
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'rbvmomi'
|
2
|
+
require 'i18n'
|
3
|
+
require 'vSphere/util/vim_helpers'
|
4
|
+
require 'vSphere/util/vm_helpers'
|
5
|
+
|
6
|
+
module VagrantPlugins
|
7
|
+
module VSphere
|
8
|
+
module Action
|
9
|
+
class Suspend
|
10
|
+
include Util::VimHelpers
|
11
|
+
include Util::VmHelpers
|
12
|
+
|
13
|
+
def initialize(app, _env)
|
14
|
+
@app = app
|
15
|
+
end
|
16
|
+
|
17
|
+
def call(env)
|
18
|
+
vm = get_vm_by_uuid env[:vSphere_connection], env[:machine]
|
19
|
+
|
20
|
+
# Suspending is a no-op if we can't find the VM or it is already off
|
21
|
+
# or suspended
|
22
|
+
unless vm.nil? || suspended?(vm) || powered_off?(vm)
|
23
|
+
env[:ui].info I18n.t('vsphere.suspend_vm')
|
24
|
+
suspend_vm(vm)
|
25
|
+
end
|
26
|
+
|
27
|
+
@app.call env
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -18,6 +18,15 @@ module VagrantPlugins
|
|
18
18
|
vm.PowerOffVM_Task.wait_for_completion
|
19
19
|
end
|
20
20
|
|
21
|
+
# https://www.vmware.com/support/developer/converter-sdk/conv61_apireference/vim.VirtualMachine.html#powerOn
|
22
|
+
def resume_vm(vm)
|
23
|
+
vm.PowerOnVM_Task.wait_for_completion
|
24
|
+
end
|
25
|
+
|
26
|
+
def suspend_vm(vm)
|
27
|
+
vm.SuspendVM_Task.wait_for_completion
|
28
|
+
end
|
29
|
+
|
21
30
|
def get_vm_state(vm)
|
22
31
|
vm.runtime.powerState
|
23
32
|
end
|
data/lib/vSphere/version.rb
CHANGED
data/locales/en.yml
CHANGED
@@ -14,12 +14,18 @@ en:
|
|
14
14
|
Calling vSphere PowerOff
|
15
15
|
power_on_vm: |-
|
16
16
|
Calling vSphere PowerOn
|
17
|
+
resume_vm: |-
|
18
|
+
Calling vSphere PowerOn
|
19
|
+
suspend_vm: |-
|
20
|
+
Calling vSphere Suspend
|
17
21
|
vm_already_created: |-
|
18
22
|
The VM is already created
|
19
23
|
vm_not_created: |-
|
20
24
|
The VM has not been created
|
21
25
|
vm_not_running: |-
|
22
26
|
The VM is not running
|
27
|
+
vm_not_suspended: |-
|
28
|
+
The VM is not suspended
|
23
29
|
wait_sysprep: |-
|
24
30
|
Waiting for sysprep
|
25
31
|
|
data/spec/action_spec.rb
CHANGED
@@ -164,4 +164,66 @@ describe VagrantPlugins::VSphere::Action do
|
|
164
164
|
VagrantPlugins::VSphere::Action::MessageAlreadyCreated.any_instance.should_receive(:call)
|
165
165
|
end
|
166
166
|
end
|
167
|
+
|
168
|
+
describe 'suspend' do
|
169
|
+
it 'should connect to vSphere' do
|
170
|
+
VagrantPlugins::VSphere::Action::ConnectVSphere.any_instance.should_receive(:call)
|
171
|
+
run :suspend
|
172
|
+
end
|
173
|
+
|
174
|
+
it 'should check if the VM exits' do
|
175
|
+
@machine.state.stub(:id).and_return(:running)
|
176
|
+
VagrantPlugins::VSphere::Action::IsCreated.any_instance.should_receive(:call)
|
177
|
+
run :suspend
|
178
|
+
end
|
179
|
+
|
180
|
+
it 'should suspend the VM when the VM is running' do
|
181
|
+
@machine.state.stub(:id).and_return(:running)
|
182
|
+
VagrantPlugins::VSphere::Action::Suspend.any_instance.should_receive(:call)
|
183
|
+
run :suspend
|
184
|
+
end
|
185
|
+
|
186
|
+
it 'should not suspend the VM when the VM is suspended' do
|
187
|
+
@machine.state.stub(:id).and_return(:suspended)
|
188
|
+
VagrantPlugins::VSphere::Action::Suspend.any_instance.should_not_receive(:call)
|
189
|
+
run :suspend
|
190
|
+
end
|
191
|
+
|
192
|
+
it 'should not suspend the VM when the VM is off' do
|
193
|
+
@machine.state.stub(:id).and_return(:poweroff)
|
194
|
+
VagrantPlugins::VSphere::Action::Suspend.any_instance.should_not_receive(:call)
|
195
|
+
run :suspend
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
describe 'resume' do
|
200
|
+
it 'should connect to vSphere' do
|
201
|
+
VagrantPlugins::VSphere::Action::ConnectVSphere.any_instance.should_receive(:call)
|
202
|
+
run :resume
|
203
|
+
end
|
204
|
+
|
205
|
+
it 'should check if the VM exits' do
|
206
|
+
@machine.state.stub(:id).and_return(:suspended)
|
207
|
+
VagrantPlugins::VSphere::Action::IsCreated.any_instance.should_receive(:call)
|
208
|
+
run :resume
|
209
|
+
end
|
210
|
+
|
211
|
+
it 'should not resume the VM when the VM is running' do
|
212
|
+
@machine.state.stub(:id).and_return(:running)
|
213
|
+
VagrantPlugins::VSphere::Action::Resume.any_instance.should_not_receive(:call)
|
214
|
+
run :resume
|
215
|
+
end
|
216
|
+
|
217
|
+
it 'should resume the VM when the VM is suspended' do
|
218
|
+
@machine.state.stub(:id).and_return(:suspended)
|
219
|
+
VagrantPlugins::VSphere::Action::Resume.any_instance.should_receive(:call)
|
220
|
+
run :resume
|
221
|
+
end
|
222
|
+
|
223
|
+
it 'should not resume the VM when the VM is off' do
|
224
|
+
@machine.state.stub(:id).and_return(:poweroff)
|
225
|
+
VagrantPlugins::VSphere::Action::Resume.any_instance.should_not_receive(:call)
|
226
|
+
run :resume
|
227
|
+
end
|
228
|
+
end
|
167
229
|
end
|
data/spec/get_ssh_info_spec.rb
CHANGED
@@ -119,10 +119,11 @@ describe VagrantPlugins::VSphere::Action::GetSshInfo do
|
|
119
119
|
context 'when the VM networking is uninitialized' do
|
120
120
|
before do
|
121
121
|
allow(@vm.guest).to receive(:net) { [] }
|
122
|
+
allow(@vm.guest).to receive(:ipAddress) { '123.234.156.78' }
|
122
123
|
end
|
123
|
-
it 'should set the ssh info to
|
124
|
+
it 'should set the ssh info to the guest ipAddress and port 22 if no valid adapters are present' do
|
124
125
|
call
|
125
|
-
expect(@env[:machine_ssh_info]).to eq
|
126
|
+
expect(@env[:machine_ssh_info]).to eq(host: '123.234.156.78', port: 22)
|
126
127
|
end
|
127
128
|
end
|
128
129
|
end
|
data/spec/get_state_spec.rb
CHANGED
@@ -38,13 +38,13 @@ describe VagrantPlugins::VSphere::Action::GetState do
|
|
38
38
|
expect(@env[:machine_state_id]).to be :poweroff
|
39
39
|
end
|
40
40
|
|
41
|
-
it 'should set state id to
|
41
|
+
it 'should set state id to suspended if machine is suspended' do
|
42
42
|
@env[:machine].stub(:id).and_return(EXISTING_UUID)
|
43
43
|
@vm.runtime.stub(:powerState).and_return(VagrantPlugins::VSphere::Util::VmState::SUSPENDED)
|
44
44
|
|
45
45
|
call
|
46
46
|
|
47
|
-
expect(@env[:machine_state_id]).to be :
|
47
|
+
expect(@env[:machine_state_id]).to be :suspended
|
48
48
|
end
|
49
49
|
|
50
50
|
it 'should call the next item in the middleware stack' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-vsphere
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Grauch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -145,6 +145,7 @@ files:
|
|
145
145
|
- ".gitignore"
|
146
146
|
- ".rubocop.yml"
|
147
147
|
- ".rubocop_todo.yml"
|
148
|
+
- ".ruby-version"
|
148
149
|
- ".travis.yml"
|
149
150
|
- CHANGELOG.md
|
150
151
|
- DEVELOPMENT.md
|
@@ -162,15 +163,19 @@ files:
|
|
162
163
|
- lib/vSphere/action/get_state.rb
|
163
164
|
- lib/vSphere/action/is_created.rb
|
164
165
|
- lib/vSphere/action/is_running.rb
|
166
|
+
- lib/vSphere/action/is_suspended.rb
|
165
167
|
- lib/vSphere/action/message_already_created.rb
|
166
168
|
- lib/vSphere/action/message_not_created.rb
|
167
169
|
- lib/vSphere/action/message_not_running.rb
|
170
|
+
- lib/vSphere/action/message_not_suspended.rb
|
168
171
|
- lib/vSphere/action/power_off.rb
|
169
172
|
- lib/vSphere/action/power_on.rb
|
173
|
+
- lib/vSphere/action/resume.rb
|
170
174
|
- lib/vSphere/action/snapshot_delete.rb
|
171
175
|
- lib/vSphere/action/snapshot_list.rb
|
172
176
|
- lib/vSphere/action/snapshot_restore.rb
|
173
177
|
- lib/vSphere/action/snapshot_save.rb
|
178
|
+
- lib/vSphere/action/suspend.rb
|
174
179
|
- lib/vSphere/action/wait_for_ip_address.rb
|
175
180
|
- lib/vSphere/cap/public_address.rb
|
176
181
|
- lib/vSphere/cap/snapshot_list.rb
|
@@ -214,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
214
219
|
version: '0'
|
215
220
|
requirements: []
|
216
221
|
rubyforge_project:
|
217
|
-
rubygems_version: 2.
|
222
|
+
rubygems_version: 2.5.2.1
|
218
223
|
signing_key:
|
219
224
|
specification_version: 4
|
220
225
|
summary: VMWare vSphere provider
|