vagrant-vsphere 1.13.4 → 1.14.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 +2 -1
- data/.rubocop.yml +15 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +12 -0
- data/DEVELOPMENT.md +22 -0
- data/Gemfile +3 -1
- data/README.md +2 -2
- data/Rakefile +4 -2
- data/lib/vSphere/action/clone.rb +20 -19
- data/lib/vSphere/action/close_vsphere.rb +2 -0
- data/lib/vSphere/action/connect_vsphere.rb +2 -0
- data/lib/vSphere/action/destroy.rb +3 -0
- data/lib/vSphere/action/get_ssh_info.rb +7 -2
- data/lib/vSphere/action/get_state.rb +3 -1
- data/lib/vSphere/action/is_created.rb +2 -0
- data/lib/vSphere/action/is_running.rb +2 -0
- data/lib/vSphere/action/is_suspended.rb +2 -0
- data/lib/vSphere/action/message_already_created.rb +2 -0
- data/lib/vSphere/action/message_not_created.rb +2 -0
- data/lib/vSphere/action/message_not_running.rb +2 -0
- data/lib/vSphere/action/message_not_suspended.rb +2 -0
- data/lib/vSphere/action/power_off.rb +2 -0
- data/lib/vSphere/action/power_on.rb +2 -0
- data/lib/vSphere/action/resume.rb +2 -0
- data/lib/vSphere/action/snapshot_delete.rb +8 -4
- data/lib/vSphere/action/snapshot_list.rb +2 -0
- data/lib/vSphere/action/snapshot_restore.rb +5 -2
- data/lib/vSphere/action/snapshot_save.rb +8 -4
- data/lib/vSphere/action/suspend.rb +2 -0
- data/lib/vSphere/action/wait_for_ip_address.rb +2 -0
- data/lib/vSphere/action.rb +8 -6
- data/lib/vSphere/cap/public_address.rb +3 -0
- data/lib/vSphere/cap/snapshot_list.rb +2 -0
- data/lib/vSphere/config.rb +4 -31
- data/lib/vSphere/errors.rb +2 -0
- data/lib/vSphere/plugin.rb +5 -5
- data/lib/vSphere/provider.rb +3 -0
- data/lib/vSphere/util/vim_helpers.rb +26 -19
- data/lib/vSphere/util/vm_helpers.rb +9 -6
- data/lib/vSphere/version.rb +3 -1
- data/lib/vagrant-vsphere.rb +4 -2
- data/spec/action_spec.rb +2 -0
- data/spec/clone_spec.rb +8 -6
- data/spec/connect_vsphere_spec.rb +2 -0
- data/spec/destroy_spec.rb +2 -0
- data/spec/get_ssh_info_spec.rb +6 -14
- data/spec/get_state_spec.rb +2 -0
- data/spec/is_created_spec.rb +2 -0
- data/spec/power_off_spec.rb +2 -0
- data/spec/spec_helper.rb +34 -31
- data/vSphere.gemspec +7 -6
- metadata +20 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 78475eca6295dc1f1bed7ff8490181ee6d3e783c4faa5c02139930e719b12ce3
|
4
|
+
data.tar.gz: 5babfa6b5a6f9bb2a53e540f0d0f5dae9e0f6c96a6e100ba49049e59431fd026
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7331f8728a023affd94a50da77ab3960e4866375201d248edf41a9d1e39262f2d4e53b52b2d901f635b5c599d338fecae2c8e13ca24b6fdfac5ee713bbacb959
|
7
|
+
data.tar.gz: 3e04b94b120a4e6abc53a2fc20876ed1fe26c97b1cf41b3fb76233c6828088d1852023c111ae15baa07db94a459db07a6d18d2df8cd8d67bc1c7139b56f4d92f
|
data/.bumpversion.cfg
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
[bumpversion]
|
2
|
-
current_version = 1.
|
2
|
+
current_version = 1.14.0
|
3
3
|
tag = true
|
4
4
|
commit = true
|
5
5
|
|
@@ -8,3 +8,4 @@ commit = true
|
|
8
8
|
[bumpversion:file:README.md]
|
9
9
|
parse = version: (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)
|
10
10
|
serialize = version: {major}.{minor}.{patch}
|
11
|
+
|
data/.rubocop.yml
CHANGED
@@ -32,3 +32,18 @@ Metrics/ModuleLength:
|
|
32
32
|
|
33
33
|
Metrics/PerceivedComplexity:
|
34
34
|
Enabled: false
|
35
|
+
|
36
|
+
# Disabled these cops upgrading rubocop to 1.25.0
|
37
|
+
# TODO:Correct the issues found by these cops someday
|
38
|
+
Lint/MissingSuper:
|
39
|
+
Enabled: false
|
40
|
+
|
41
|
+
Metrics/BlockLength:
|
42
|
+
Enabled: false
|
43
|
+
|
44
|
+
Naming:
|
45
|
+
Enabled: false
|
46
|
+
|
47
|
+
# TODO: Add required ruby version to gemspec
|
48
|
+
Gemspec/RequiredRubyVersion:
|
49
|
+
Enabled: false
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
ruby-3.0.2
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
## [1.14.0 (2022-08-01)](https://github.com/nsidc/vagrant-vsphere/releases/tag/v1.14.0.pre1)
|
2
|
+
|
3
|
+
- Update gem to ruby 3.0.2
|
4
|
+
- Support for vagrant >=2.2.17
|
5
|
+
- Update nokogiri dependency (1.13.4) to take care of dependabot alerts
|
6
|
+
- Update rbvmomi, rake, rubocop dependencies
|
7
|
+
|
8
|
+
## [1.13.5 (2021-01-05)](https://github.com/nsidc/vagrant-vsphere/releases/tag/v1.13.5)
|
9
|
+
- Pin nokogiri to 1.10.10. This fixes an issue where vagrant-vsphere failed to install due to
|
10
|
+
nokogiri requiring Ruby >=2.5. This is a workaround until the vagrant-nsidc plugin is updated
|
11
|
+
to work with newer versions of vagrant that are bundled with newer versions of Ruby
|
12
|
+
|
1
13
|
## [1.13.4 (2020-03-31)](https://github.com/nsidc/vagrant-vsphere/releases/tag/v1.13.4)
|
2
14
|
|
3
15
|
- Allow newer versions of i18n.
|
data/DEVELOPMENT.md
CHANGED
@@ -65,3 +65,25 @@ prefers to be run from the official installer rather than through the gem.
|
|
65
65
|
Despite those warning messages, this is the
|
66
66
|
[officially recommended](https://docs.vagrantup.com/v2/plugins/development-basics.html)
|
67
67
|
method for Vagrant plugin development.
|
68
|
+
|
69
|
+
### Releasing
|
70
|
+
|
71
|
+
1) Ensure [travis-ci](https://travis-ci.org/github/nsidc/vagrant-vsphere/) build is passing
|
72
|
+
2) Ensure `CHANGELOG.md` is up-to-date with the changes to release
|
73
|
+
3) Update version in the code, according to [semver](https://semver.org/)
|
74
|
+
* [bumpversion](https://github.com/peritus/bumpversion) can be used; if not,
|
75
|
+
the version needs to be manually updated in `.bumpversion.cfg`,
|
76
|
+
`README.md`, and `lib/vSphere/version.rb` (e.g., as in
|
77
|
+
[`11eced2`](https://github.com/nsidc/vagrant-vsphere/commit/11eced2))
|
78
|
+
4) `bundle exec rake build`
|
79
|
+
* builds the plugin to `pkg/vagrant-vsphere-$VERSION.gem`
|
80
|
+
* install to your system vagrant for further testing with `vagrant plugin
|
81
|
+
install ./pkg/vagrant-vsphere-$VERSION.gem`
|
82
|
+
5) `bundle exec rake release`
|
83
|
+
* creates the version tag and pushes it to GitHub
|
84
|
+
* pushes the built gem to
|
85
|
+
[RubyGems.org](https://rubygems.org/gems/vagrant-vsphere/)
|
86
|
+
6) Update the [Releases page](https://github.com/nsidc/vagrant-vsphere/releases)
|
87
|
+
* the release name should match the version tag (e.g., `v1.2.3`)
|
88
|
+
* the release description can be the same as the `CHANGELOG.md` entry
|
89
|
+
* upload the `.gem` from RubyGems.org as an attached binary for the release
|
data/Gemfile
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
source 'http://rubygems.org'
|
2
4
|
|
3
5
|
group :development do
|
4
6
|
# We depend on Vagrant for development, but we don't add it as a
|
5
7
|
# gem dependency because we expect to be installed within the
|
6
8
|
# Vagrant environment itself using `vagrant plugin`.
|
7
|
-
gem 'vagrant', github: 'mitchellh/vagrant'
|
9
|
+
gem 'vagrant', github: 'mitchellh/vagrant', ref: 'v2.2.19'
|
8
10
|
end
|
9
11
|
|
10
12
|
group :plugins do
|
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.14.0.pre1**
|
23
23
|
|
24
|
-
vagrant-vsphere (**version: 1.
|
24
|
+
vagrant-vsphere (**version: 1.14.0**) is available from
|
25
25
|
[RubyGems.org](https://rubygems.org/gems/vagrant-vsphere)
|
26
26
|
|
27
27
|
## Installation
|
data/Rakefile
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rubygems'
|
2
4
|
require 'bundler/setup'
|
3
5
|
require 'rspec/core/rake_task'
|
@@ -9,7 +11,7 @@ $stdout.sync = true
|
|
9
11
|
$stderr.sync = true
|
10
12
|
|
11
13
|
# Change to the directory of this file.
|
12
|
-
Dir.chdir(File.expand_path(
|
14
|
+
Dir.chdir(File.expand_path(__dir__))
|
13
15
|
|
14
16
|
Bundler::GemHelper.install_tasks
|
15
17
|
|
@@ -17,4 +19,4 @@ RSpec::Core::RakeTask.new
|
|
17
19
|
|
18
20
|
RuboCop::RakeTask.new
|
19
21
|
|
20
|
-
task default: %w
|
22
|
+
task default: %w[rubocop spec]
|
data/lib/vSphere/action/clone.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rbvmomi'
|
2
4
|
require 'i18n'
|
3
5
|
require 'vSphere/util/vim_helpers'
|
@@ -19,14 +21,15 @@ module VagrantPlugins
|
|
19
21
|
name = get_name machine, config, env[:root_path]
|
20
22
|
dc = get_datacenter connection, machine
|
21
23
|
template = dc.find_vm config.template_name
|
22
|
-
|
24
|
+
raise Errors::VSphereError, :'missing_template' if template.nil?
|
25
|
+
|
23
26
|
vm_base_folder = get_vm_base_folder dc, template, config
|
24
|
-
|
27
|
+
raise Errors::VSphereError, :'invalid_base_path' if vm_base_folder.nil?
|
25
28
|
|
26
29
|
begin
|
27
30
|
# Storage DRS does not support vSphere linked clones. http://www.vmware.com/files/pdf/techpaper/vsphere-storage-drs-interoperability.pdf
|
28
31
|
ds = get_datastore dc, machine
|
29
|
-
|
32
|
+
raise Errors::VSphereError, :'invalid_configuration_linked_clone_with_sdrs' if config.linked_clone && ds.is_a?(RbVmomi::VIM::StoragePod)
|
30
33
|
|
31
34
|
location = get_location ds, dc, machine, template
|
32
35
|
spec = RbVmomi::VIM.VirtualMachineCloneSpec location: location, powerOn: true, template: false
|
@@ -74,9 +77,7 @@ module VagrantPlugins
|
|
74
77
|
|
75
78
|
recommendation = result.recommendations[0]
|
76
79
|
key = recommendation.key ||= ''
|
77
|
-
if key == ''
|
78
|
-
fail Errors::VSphereError, :missing_datastore_recommendation
|
79
|
-
end
|
80
|
+
raise Errors::VSphereError, :missing_datastore_recommendation if key == ''
|
80
81
|
|
81
82
|
env[:ui].info I18n.t('vsphere.creating_cloned_vm_sdrs')
|
82
83
|
env[:ui].info " -- Storage DRS recommendation: #{recommendation.target.name} #{recommendation.reasonText}"
|
@@ -125,13 +126,13 @@ module VagrantPlugins
|
|
125
126
|
while wait
|
126
127
|
events = query_customization_succeeded(vm, vem)
|
127
128
|
|
128
|
-
if events.size
|
129
|
+
if events.size.positive?
|
129
130
|
events.each do |e|
|
130
131
|
env[:ui].info e.fullFormattedMessage
|
131
132
|
end
|
132
133
|
wait = false
|
133
134
|
elsif waited_seconds >= timeout
|
134
|
-
|
135
|
+
raise Errors::VSphereError, :'sysprep_timeout'
|
135
136
|
else
|
136
137
|
sleep(sleep_time)
|
137
138
|
waited_seconds += sleep_time
|
@@ -154,7 +155,7 @@ module VagrantPlugins
|
|
154
155
|
return customization_spec if private_networks.nil?
|
155
156
|
|
156
157
|
# make sure we have enough NIC settings to override with the private network settings
|
157
|
-
|
158
|
+
raise Errors::VSphereError, :'too_many_private_networks' if private_networks.length > customization_spec.nicSettingMap.length
|
158
159
|
|
159
160
|
# assign the private network IP to the NIC
|
160
161
|
private_networks.each_index do |idx|
|
@@ -212,7 +213,7 @@ module VagrantPlugins
|
|
212
213
|
return config.name unless config.name.nil?
|
213
214
|
|
214
215
|
prefix = "#{root_path.basename}_#{machine.name}"
|
215
|
-
prefix.gsub!(/[^-a-z0-9_
|
216
|
+
prefix.gsub!(/[^-a-z0-9_.]/i, '')
|
216
217
|
# milliseconds + random number suffix to allow for simultaneous `vagrant up` of the same box in different dirs
|
217
218
|
prefix + "_#{(Time.now.to_f * 1000.0).to_i}_#{rand(100_000)}"
|
218
219
|
end
|
@@ -229,7 +230,7 @@ module VagrantPlugins
|
|
229
230
|
spec[:config][:deviceChange] ||= []
|
230
231
|
@card ||= template.config.hardware.device.grep(RbVmomi::VIM::VirtualEthernetCard).first
|
231
232
|
|
232
|
-
|
233
|
+
raise Errors::VSphereError, :missing_network_card if @card.nil?
|
233
234
|
|
234
235
|
yield(@card)
|
235
236
|
|
@@ -241,7 +242,7 @@ module VagrantPlugins
|
|
241
242
|
def add_custom_address_type(template, spec, addressType)
|
242
243
|
spec[:config][:deviceChange] = []
|
243
244
|
config = template.config
|
244
|
-
card = config.hardware.device.grep(RbVmomi::VIM::VirtualEthernetCard).first ||
|
245
|
+
card = config.hardware.device.grep(RbVmomi::VIM::VirtualEthernetCard).first || raise(Errors::VSphereError, :missing_network_card)
|
245
246
|
card.addressType = addressType
|
246
247
|
card_spec = { :deviceChange => [{ :operation => :edit, :device => card }] }
|
247
248
|
template.ReconfigVM_Task(:spec => card_spec).wait_for_completion
|
@@ -257,13 +258,13 @@ module VagrantPlugins
|
|
257
258
|
network = get_network_by_name(dc, vlan)
|
258
259
|
|
259
260
|
modify_network_card(template, spec) do |card|
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
261
|
+
|
262
|
+
switch_port = RbVmomi::VIM.DistributedVirtualSwitchPortConnection(switchUuid: network.config.distributedVirtualSwitch.uuid, portgroupKey: network.key)
|
263
|
+
card.backing = RbVmomi::VIM::VirtualEthernetCardDistributedVirtualPortBackingInfo(port: switch_port)
|
264
|
+
rescue StandardError
|
265
|
+
# not connected to a distibuted switch?
|
266
|
+
card.backing = RbVmomi::VIM::VirtualEthernetCardNetworkBackingInfo(network: network, deviceName: network.name)
|
267
|
+
|
267
268
|
end
|
268
269
|
end
|
269
270
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rbvmomi'
|
2
4
|
require 'i18n'
|
3
5
|
require 'vSphere/util/vim_helpers'
|
@@ -23,6 +25,7 @@ module VagrantPlugins
|
|
23
25
|
|
24
26
|
def destroy_vm(env)
|
25
27
|
return if env[:machine].state.id == :not_created
|
28
|
+
|
26
29
|
vm = get_vm_by_uuid env[:vSphere_connection], env[:machine]
|
27
30
|
return if vm.nil?
|
28
31
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rbvmomi'
|
2
4
|
require 'vSphere/util/vim_helpers'
|
3
5
|
|
@@ -21,12 +23,13 @@ module VagrantPlugins
|
|
21
23
|
def filter_guest_nic(vm, machine)
|
22
24
|
return vm.guest.ipAddress unless machine.provider_config.real_nic_ip
|
23
25
|
|
24
|
-
interfaces = vm.guest.net.select { |g| g.deviceConfigId
|
26
|
+
interfaces = vm.guest.net.select { |g| g.deviceConfigId.positive? }
|
25
27
|
ip_addresses = interfaces.map { |i| i.ipConfig.ipAddress.select { |a| a.state == 'preferred' } }.flatten
|
26
28
|
|
27
29
|
return (vm.guest.ipAddress || nil) if ip_addresses.empty?
|
28
30
|
|
29
|
-
|
31
|
+
raise Errors::VSphereError.new, :'multiple_interface_with_real_nic_ip_set' if ip_addresses.size > 1
|
32
|
+
|
30
33
|
ip_addresses.first.ipAddress
|
31
34
|
end
|
32
35
|
|
@@ -35,8 +38,10 @@ module VagrantPlugins
|
|
35
38
|
|
36
39
|
vm = get_vm_by_uuid connection, machine
|
37
40
|
return nil if vm.nil?
|
41
|
+
|
38
42
|
ip_address = filter_guest_nic(vm, machine)
|
39
43
|
return nil if ip_address.nil? || ip_address.empty?
|
44
|
+
|
40
45
|
{
|
41
46
|
host: ip_address,
|
42
47
|
port: 22
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rbvmomi'
|
2
4
|
require 'vSphere/util/vim_helpers'
|
3
5
|
require 'vSphere/util/vm_helpers'
|
@@ -22,7 +24,7 @@ module VagrantPlugins
|
|
22
24
|
private
|
23
25
|
|
24
26
|
def get_state(connection, machine)
|
25
|
-
return :not_created
|
27
|
+
return :not_created if machine.id.nil?
|
26
28
|
|
27
29
|
vm = get_vm_by_uuid connection, machine
|
28
30
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'vSphere/util/vim_helpers'
|
2
4
|
require 'vSphere/util/vm_helpers'
|
3
5
|
|
@@ -16,8 +18,9 @@ module VagrantPlugins
|
|
16
18
|
vm = get_vm_by_uuid(env[:vSphere_connection], env[:machine])
|
17
19
|
|
18
20
|
env[:ui].info(I18n.t(
|
19
|
-
|
20
|
-
|
21
|
+
"vagrant.actions.vm.snapshot.deleting",
|
22
|
+
name: env[:snapshot_name]
|
23
|
+
))
|
21
24
|
|
22
25
|
delete_snapshot(vm, env[:snapshot_name]) do |progress|
|
23
26
|
env[:ui].clear_line
|
@@ -27,8 +30,9 @@ module VagrantPlugins
|
|
27
30
|
env[:ui].clear_line
|
28
31
|
|
29
32
|
env[:ui].info(I18n.t(
|
30
|
-
|
31
|
-
|
33
|
+
"vagrant.actions.vm.snapshot.deleted",
|
34
|
+
name: env[:snapshot_name]
|
35
|
+
))
|
32
36
|
|
33
37
|
@app.call env
|
34
38
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'vSphere/util/vim_helpers'
|
2
4
|
require 'vSphere/util/vm_helpers'
|
3
5
|
|
@@ -16,8 +18,9 @@ module VagrantPlugins
|
|
16
18
|
vm = get_vm_by_uuid(env[:vSphere_connection], env[:machine])
|
17
19
|
|
18
20
|
env[:ui].info(I18n.t(
|
19
|
-
|
20
|
-
|
21
|
+
"vagrant.actions.vm.snapshot.restoring",
|
22
|
+
name: env[:snapshot_name]
|
23
|
+
))
|
21
24
|
|
22
25
|
restore_snapshot(vm, env[:snapshot_name]) do |progress|
|
23
26
|
env[:ui].clear_line
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'vSphere/util/vim_helpers'
|
2
4
|
require 'vSphere/util/vm_helpers'
|
3
5
|
|
@@ -16,8 +18,9 @@ module VagrantPlugins
|
|
16
18
|
vm = get_vm_by_uuid(env[:vSphere_connection], env[:machine])
|
17
19
|
|
18
20
|
env[:ui].info(I18n.t(
|
19
|
-
|
20
|
-
|
21
|
+
"vagrant.actions.vm.snapshot.saving",
|
22
|
+
name: env[:snapshot_name]
|
23
|
+
))
|
21
24
|
|
22
25
|
create_snapshot(vm, env[:snapshot_name]) do |progress|
|
23
26
|
env[:ui].clear_line
|
@@ -27,8 +30,9 @@ module VagrantPlugins
|
|
27
30
|
env[:ui].clear_line
|
28
31
|
|
29
32
|
env[:ui].success(I18n.t(
|
30
|
-
|
31
|
-
|
33
|
+
"vagrant.actions.vm.snapshot.saved",
|
34
|
+
name: env[:snapshot_name]
|
35
|
+
))
|
32
36
|
@app.call env
|
33
37
|
end
|
34
38
|
end
|
data/lib/vSphere/action.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'vagrant'
|
2
4
|
require 'vagrant/action/builder'
|
3
5
|
|
@@ -224,7 +226,7 @@ module VagrantPlugins
|
|
224
226
|
end
|
225
227
|
|
226
228
|
# TODO: Remove the if guard when Vagrant 1.8.0 is the minimum version.
|
227
|
-
# rubocop:disable IndentationWidth
|
229
|
+
# rubocop:disable Layout/IndentationWidth
|
228
230
|
if Gem::Version.new(Vagrant::VERSION) >= Gem::Version.new('1.8.0')
|
229
231
|
def self.action_snapshot_delete
|
230
232
|
Vagrant::Action::Builder.new.tap do |b|
|
@@ -292,11 +294,11 @@ module VagrantPlugins
|
|
292
294
|
b.use CloseVSphere
|
293
295
|
end
|
294
296
|
end
|
295
|
-
end
|
296
|
-
# rubocop:enable IndentationWidth
|
297
|
+
end
|
298
|
+
# rubocop:enable Layout/IndentationWidth
|
297
299
|
|
298
300
|
# autoload
|
299
|
-
action_root = Pathname.new(File.expand_path('
|
301
|
+
action_root = Pathname.new(File.expand_path('action', __dir__))
|
300
302
|
autoload :Clone, action_root.join('clone')
|
301
303
|
autoload :CloseVSphere, action_root.join('close_vsphere')
|
302
304
|
autoload :ConnectVSphere, action_root.join('connect_vsphere')
|
@@ -317,14 +319,14 @@ module VagrantPlugins
|
|
317
319
|
autoload :WaitForIPAddress, action_root.join('wait_for_ip_address')
|
318
320
|
|
319
321
|
# TODO: Remove the if guard when Vagrant 1.8.0 is the minimum version.
|
320
|
-
# rubocop:disable IndentationWidth
|
322
|
+
# rubocop:disable Layout/IndentationWidth
|
321
323
|
if Gem::Version.new(Vagrant::VERSION) >= Gem::Version.new('1.8.0')
|
322
324
|
autoload :SnapshotDelete, action_root.join('snapshot_delete')
|
323
325
|
autoload :SnapshotList, action_root.join('snapshot_list')
|
324
326
|
autoload :SnapshotRestore, action_root.join('snapshot_restore')
|
325
327
|
autoload :SnapshotSave, action_root.join('snapshot_save')
|
326
328
|
end
|
327
|
-
# rubocop:enable IndentationWidth
|
329
|
+
# rubocop:enable Layout/IndentationWidth
|
328
330
|
end
|
329
331
|
end
|
330
332
|
end
|
data/lib/vSphere/config.rb
CHANGED
@@ -1,36 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'vagrant'
|
2
4
|
|
3
5
|
module VagrantPlugins
|
4
6
|
module VSphere
|
5
7
|
class Config < Vagrant.plugin('2', :config)
|
6
|
-
attr_accessor :ip_address_timeout # Time to wait for an IP address when booting, in seconds @return [Integer]
|
7
|
-
attr_accessor :host
|
8
|
-
attr_accessor :insecure
|
9
|
-
attr_accessor :user
|
10
|
-
attr_accessor :password
|
11
|
-
attr_accessor :data_center_name
|
12
|
-
attr_accessor :compute_resource_name
|
13
|
-
attr_accessor :resource_pool_name
|
14
|
-
attr_accessor :clone_from_vm
|
15
|
-
attr_accessor :template_name
|
16
|
-
attr_accessor :name
|
17
|
-
attr_accessor :vm_base_path
|
18
|
-
attr_accessor :customization_spec_name
|
19
|
-
attr_accessor :data_store_name
|
20
|
-
attr_accessor :linked_clone
|
21
|
-
attr_accessor :proxy_host
|
22
|
-
attr_accessor :proxy_port
|
23
|
-
attr_accessor :vlan
|
24
|
-
attr_accessor :addressType
|
25
|
-
attr_accessor :mac
|
26
|
-
attr_accessor :memory_mb
|
27
|
-
attr_accessor :cpu_count
|
28
|
-
attr_accessor :cpu_reservation
|
29
|
-
attr_accessor :mem_reservation
|
30
|
-
attr_accessor :extra_config
|
31
|
-
attr_accessor :real_nic_ip
|
32
|
-
attr_accessor :notes
|
33
|
-
attr_accessor :wait_for_sysprep
|
8
|
+
attr_accessor :ip_address_timeout, :host, :insecure, :user, :password, :data_center_name, :compute_resource_name, :resource_pool_name, :clone_from_vm, :template_name, :name, :vm_base_path, :customization_spec_name, :data_store_name, :linked_clone, :proxy_host, :proxy_port, :vlan, :addressType, :mac, :memory_mb, :cpu_count, :cpu_reservation, :mem_reservation, :extra_config, :real_nic_ip, :notes, :wait_for_sysprep # Time to wait for an IP address when booting, in seconds @return [Integer]
|
34
9
|
|
35
10
|
attr_reader :custom_attributes
|
36
11
|
|
@@ -53,9 +28,7 @@ module VagrantPlugins
|
|
53
28
|
def validate(machine)
|
54
29
|
errors = _detected_errors
|
55
30
|
|
56
|
-
if password == :ask || password.nil?
|
57
|
-
self.password = machine.ui.ask('vSphere Password (will be hidden): ', echo: false)
|
58
|
-
end
|
31
|
+
self.password = machine.ui.ask('vSphere Password (will be hidden): ', echo: false) if password == :ask || password.nil?
|
59
32
|
|
60
33
|
# TODO: add blank?
|
61
34
|
errors << I18n.t('vsphere.config.host') if host.nil?
|
data/lib/vSphere/errors.rb
CHANGED
data/lib/vSphere/plugin.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
begin
|
2
4
|
require 'vagrant'
|
3
5
|
rescue LoadError
|
@@ -6,9 +8,7 @@ end
|
|
6
8
|
|
7
9
|
# This is a sanity check to make sure no one is attempting to install
|
8
10
|
# this into an early Vagrant version.
|
9
|
-
if Vagrant::VERSION < '1.5'
|
10
|
-
fail 'The Vagrant vSphere plugin is only compatible with Vagrant 1.5+'
|
11
|
-
end
|
11
|
+
raise 'The Vagrant vSphere plugin is only compatible with Vagrant 1.5+' if Vagrant::VERSION < '1.5'
|
12
12
|
|
13
13
|
module VagrantPlugins
|
14
14
|
module VSphere
|
@@ -36,14 +36,14 @@ module VagrantPlugins
|
|
36
36
|
end
|
37
37
|
|
38
38
|
# TODO: Remove the if guard when Vagrant 1.8.0 is the minimum version.
|
39
|
-
# rubocop:disable IndentationWidth
|
39
|
+
# rubocop:disable Layout/IndentationWidth
|
40
40
|
if Gem::Version.new(Vagrant::VERSION) >= Gem::Version.new('1.8.0')
|
41
41
|
provider_capability('vsphere', 'snapshot_list') do
|
42
42
|
require_relative 'cap/snapshot_list'
|
43
43
|
Cap::SnapshotList
|
44
44
|
end
|
45
45
|
end
|
46
|
-
# rubocop:enable IndentationWidth
|
46
|
+
# rubocop:enable Layout/IndentationWidth
|
47
47
|
|
48
48
|
def self.setup_i18n
|
49
49
|
I18n.load_path << File.expand_path('locales/en.yml', VSphere.source_root)
|
data/lib/vSphere/provider.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'vagrant'
|
2
4
|
|
3
5
|
module VagrantPlugins
|
@@ -10,6 +12,7 @@ module VagrantPlugins
|
|
10
12
|
def action(name)
|
11
13
|
action_method = "action_#{name}"
|
12
14
|
return Action.send(action_method) if Action.respond_to?(action_method)
|
15
|
+
|
13
16
|
nil
|
14
17
|
end
|
15
18
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rbvmomi'
|
2
4
|
|
3
5
|
module VagrantPlugins
|
@@ -5,7 +7,7 @@ module VagrantPlugins
|
|
5
7
|
module Util
|
6
8
|
module VimHelpers
|
7
9
|
def get_datacenter(connection, machine)
|
8
|
-
connection.serviceInstance.find_datacenter(machine.provider_config.data_center_name) ||
|
10
|
+
connection.serviceInstance.find_datacenter(machine.provider_config.data_center_name) || raise(Errors::VSphereError, :missing_datacenter)
|
9
11
|
end
|
10
12
|
|
11
13
|
def get_vm_by_uuid(connection, machine)
|
@@ -20,16 +22,18 @@ module VagrantPlugins
|
|
20
22
|
entity_array = resource_pool_name.split('/')
|
21
23
|
entity_array.each do |entity_array_item|
|
22
24
|
next if entity_array_item.empty?
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
rp = rp.
|
27
|
-
|
28
|
-
rp = rp.resourcePool.find { |f| f.name == entity_array_item } ||
|
29
|
-
|
30
|
-
rp = rp.resourcePool.find
|
25
|
+
|
26
|
+
case rp
|
27
|
+
when RbVmomi::VIM::Folder
|
28
|
+
rp = rp.childEntity.find { |f| f.name == entity_array_item } || raise(Errors::VSphereError, :missing_resource_pool)
|
29
|
+
when RbVmomi::VIM::ClusterComputeResource
|
30
|
+
rp = rp.resourcePool.resourcePool.find { |f| f.name == entity_array_item } || raise(Errors::VSphereError, :missing_resource_pool)
|
31
|
+
when RbVmomi::VIM::ResourcePool
|
32
|
+
rp = rp.resourcePool.find { |f| f.name == entity_array_item } || raise(Errors::VSphereError, :missing_resource_pool)
|
33
|
+
when RbVmomi::VIM::ComputeResource
|
34
|
+
rp = rp.resourcePool.find(resource_pool_name) || raise(Errors::VSphereError, :missing_resource_pool)
|
31
35
|
else
|
32
|
-
|
36
|
+
raise Errors::VSphereError, :missing_resource_pool
|
33
37
|
end
|
34
38
|
end
|
35
39
|
rp = rp.resourcePool if !rp.is_a?(RbVmomi::VIM::ResourcePool) && rp.respond_to?(:resourcePool)
|
@@ -38,19 +42,22 @@ module VagrantPlugins
|
|
38
42
|
|
39
43
|
def get_compute_resource(datacenter, machine)
|
40
44
|
cr = find_clustercompute_or_compute_resource(datacenter, machine.provider_config.compute_resource_name)
|
41
|
-
|
45
|
+
raise Errors::VSphereError, :missing_compute_resource if cr.nil?
|
46
|
+
|
42
47
|
cr
|
43
48
|
end
|
44
49
|
|
45
50
|
def find_clustercompute_or_compute_resource(datacenter, path)
|
46
|
-
|
51
|
+
case path
|
52
|
+
when String
|
47
53
|
es = path.split('/').reject(&:empty?)
|
48
|
-
|
54
|
+
when Enumerable
|
49
55
|
es = path
|
50
56
|
else
|
51
|
-
|
57
|
+
raise "unexpected path class #{path.class}"
|
52
58
|
end
|
53
59
|
return datacenter.hostFolder if es.empty?
|
60
|
+
|
54
61
|
final = es.pop
|
55
62
|
|
56
63
|
p = es.inject(datacenter.hostFolder) do |f, e|
|
@@ -69,7 +76,7 @@ module VagrantPlugins
|
|
69
76
|
if x.is_a?(RbVmomi::VIM::ClusterComputeResource) || x.is_a?(RbVmomi::VIM::ComputeResource)
|
70
77
|
x
|
71
78
|
else
|
72
|
-
puts
|
79
|
+
puts "ex unknown type #{x.to_json}"
|
73
80
|
nil
|
74
81
|
end
|
75
82
|
end
|
@@ -80,10 +87,10 @@ module VagrantPlugins
|
|
80
87
|
return if name.nil? || name.empty?
|
81
88
|
|
82
89
|
manager = connection.serviceContent.customizationSpecManager
|
83
|
-
|
90
|
+
raise Errors::VSphereError, :null_configuration_spec_manager if manager.nil?
|
84
91
|
|
85
92
|
spec = manager.GetCustomizationSpec(name: name)
|
86
|
-
|
93
|
+
raise Errors::VSphereError, :missing_configuration_spec if spec.nil?
|
87
94
|
|
88
95
|
spec
|
89
96
|
end
|
@@ -93,11 +100,11 @@ module VagrantPlugins
|
|
93
100
|
return if name.nil? || name.empty?
|
94
101
|
|
95
102
|
# find_datastore uses folder datastore that only lists Datastore and not StoragePod, if not found also try datastoreFolder which contains StoragePod(s)
|
96
|
-
datacenter.find_datastore(name) || datacenter.datastoreFolder.traverse(name) ||
|
103
|
+
datacenter.find_datastore(name) || datacenter.datastoreFolder.traverse(name) || raise(Errors::VSphereError, :missing_datastore)
|
97
104
|
end
|
98
105
|
|
99
106
|
def get_network_by_name(dc, name)
|
100
|
-
dc.network.find { |f| f.name == name } ||
|
107
|
+
dc.network.find { |f| f.name == name } || raise(Errors::VSphereError, :missing_vlan)
|
101
108
|
end
|
102
109
|
end
|
103
110
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rbvmomi'
|
2
4
|
|
3
5
|
module VagrantPlugins
|
@@ -55,11 +57,11 @@ module VagrantPlugins
|
|
55
57
|
def enumerate_snapshots(vm)
|
56
58
|
snapshot_info = vm.snapshot
|
57
59
|
|
58
|
-
if snapshot_info.nil?
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
60
|
+
snapshot_root = if snapshot_info.nil?
|
61
|
+
[]
|
62
|
+
else
|
63
|
+
snapshot_info.rootSnapshotList
|
64
|
+
end
|
63
65
|
|
64
66
|
recursor = lambda do |snapshot_list|
|
65
67
|
Enumerator.new do |yielder|
|
@@ -95,7 +97,8 @@ module VagrantPlugins
|
|
95
97
|
task = vm.CreateSnapshot_Task(
|
96
98
|
name: name,
|
97
99
|
memory: false,
|
98
|
-
quiesce: false
|
100
|
+
quiesce: false
|
101
|
+
)
|
99
102
|
|
100
103
|
if block_given?
|
101
104
|
task.wait_for_progress do |progress|
|
data/lib/vSphere/version.rb
CHANGED
data/lib/vagrant-vsphere.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'pathname'
|
2
4
|
|
3
5
|
require 'vSphere/plugin'
|
4
6
|
|
5
7
|
module VagrantPlugins
|
6
8
|
module VSphere
|
7
|
-
lib_path = Pathname.new(File.expand_path('
|
9
|
+
lib_path = Pathname.new(File.expand_path('vSphere', __dir__))
|
8
10
|
autoload :Action, lib_path.join('action')
|
9
11
|
autoload :Errors, lib_path.join('errors')
|
10
12
|
|
@@ -12,7 +14,7 @@ module VagrantPlugins
|
|
12
14
|
#
|
13
15
|
# @return [Pathname]
|
14
16
|
def self.source_root
|
15
|
-
@source_root ||= Pathname.new(File.expand_path('
|
17
|
+
@source_root ||= Pathname.new(File.expand_path('..', __dir__))
|
16
18
|
end
|
17
19
|
end
|
18
20
|
end
|
data/spec/action_spec.rb
CHANGED
data/spec/clone_spec.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
CUSTOM_VM_FOLDER = 'custom_vm_folder'
|
@@ -55,9 +57,8 @@ describe VagrantPlugins::VSphere::Action::Clone do
|
|
55
57
|
expect(@template).to have_received(:CloneVM_Task).with(
|
56
58
|
folder: @data_center,
|
57
59
|
name: NAME,
|
58
|
-
spec: { location:
|
59
|
-
config: expected_config
|
60
|
-
}
|
60
|
+
spec: { location: { pool: @child_resource_pool },
|
61
|
+
config: expected_config }
|
61
62
|
)
|
62
63
|
end
|
63
64
|
|
@@ -102,10 +103,11 @@ describe VagrantPlugins::VSphere::Action::Clone do
|
|
102
103
|
|
103
104
|
it 'should set extraConfig if specified' do
|
104
105
|
@machine.provider_config.stub(:extra_config).and_return(
|
105
|
-
'guestinfo.hostname' => 'somehost.testvm'
|
106
|
+
'guestinfo.hostname' => 'somehost.testvm'
|
107
|
+
)
|
106
108
|
expected_config = RbVmomi::VIM.VirtualMachineConfigSpec(extraConfig: [
|
107
|
-
|
108
|
-
|
109
|
+
{ 'key' => 'guestinfo.hostname', 'value' => 'somehost.testvm' }
|
110
|
+
])
|
109
111
|
|
110
112
|
call
|
111
113
|
expect(@template).to have_received(:CloneVM_Task).with(
|
data/spec/destroy_spec.rb
CHANGED
data/spec/get_ssh_info_spec.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe VagrantPlugins::VSphere::Action::GetSshInfo do
|
@@ -51,9 +53,7 @@ describe VagrantPlugins::VSphere::Action::GetSshInfo do
|
|
51
53
|
ipAddress: [double('NetIpConfigInfoIpAddress',
|
52
54
|
ipAddress: 'bad address', state: 'unknown'),
|
53
55
|
double('NetIpConfigInfoIpAddress',
|
54
|
-
ipAddress: '127.0.0.1', state: 'preferred')]
|
55
|
-
)
|
56
|
-
),
|
56
|
+
ipAddress: '127.0.0.1', state: 'preferred')])),
|
57
57
|
double('GuestNicInfo',
|
58
58
|
ipAddress: ['bad address', '255.255.255.255'],
|
59
59
|
deviceConfigId: -1,
|
@@ -61,10 +61,7 @@ describe VagrantPlugins::VSphere::Action::GetSshInfo do
|
|
61
61
|
ipAddress: [double('NetIpConfigInfoIpAddress',
|
62
62
|
ipAddress: 'bad address', state: 'unknown'),
|
63
63
|
double('NetIpConfigInfoIpAddress',
|
64
|
-
ipAddress: '255.255.255.255', state: 'preferred')]
|
65
|
-
)
|
66
|
-
)
|
67
|
-
]
|
64
|
+
ipAddress: '255.255.255.255', state: 'preferred')]))]
|
68
65
|
}
|
69
66
|
end
|
70
67
|
|
@@ -89,9 +86,7 @@ describe VagrantPlugins::VSphere::Action::GetSshInfo do
|
|
89
86
|
ipAddress: [double('NetIpConfigInfoIpAddress',
|
90
87
|
ipAddress: 'bad address', state: 'unknown'),
|
91
88
|
double('NetIpConfigInfoIpAddress',
|
92
|
-
ipAddress: '127.0.0.2', state: 'preferred')]
|
93
|
-
)
|
94
|
-
),
|
89
|
+
ipAddress: '127.0.0.2', state: 'preferred')])),
|
95
90
|
double('GuestNicInfo',
|
96
91
|
ipAddress: ['bad address', '255.255.255.255'],
|
97
92
|
deviceConfigId: 2000,
|
@@ -99,10 +94,7 @@ describe VagrantPlugins::VSphere::Action::GetSshInfo do
|
|
99
94
|
ipAddress: [double('NetIpConfigInfoIpAddress',
|
100
95
|
ipAddress: 'bad address', state: 'unknown'),
|
101
96
|
double('NetIpConfigInfoIpAddress',
|
102
|
-
ipAddress: '255.255.255.255', state: 'preferred')]
|
103
|
-
)
|
104
|
-
)
|
105
|
-
]
|
97
|
+
ipAddress: '255.255.255.255', state: 'preferred')]))]
|
106
98
|
}
|
107
99
|
|
108
100
|
end
|
data/spec/get_state_spec.rb
CHANGED
data/spec/is_created_spec.rb
CHANGED
data/spec/power_off_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rbvmomi'
|
2
4
|
require 'pathname'
|
3
5
|
require 'vSphere/errors'
|
@@ -29,7 +31,7 @@ RSpec.configure do |config|
|
|
29
31
|
# removes deprecation warnings.
|
30
32
|
# http://stackoverflow.com/questions/20275510/how-to-avoid-deprecation-warning-for-stub-chain-in-rspec-3-0/20296359#20296359
|
31
33
|
config.mock_with :rspec do |c|
|
32
|
-
c.syntax = [
|
34
|
+
c.syntax = %i[should expect]
|
33
35
|
end
|
34
36
|
|
35
37
|
config.before(:each) do
|
@@ -38,36 +40,37 @@ RSpec.configure do |config|
|
|
38
40
|
end
|
39
41
|
|
40
42
|
provider_config = double(
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
43
|
+
host: 'testhost.com',
|
44
|
+
user: 'testuser',
|
45
|
+
password: 'testpassword',
|
46
|
+
data_center_name: nil,
|
47
|
+
compute_resource_name: 'testcomputeresource',
|
48
|
+
resource_pool_name: 'testresourcepool',
|
49
|
+
vm_base_path: nil,
|
50
|
+
template_name: TEMPLATE,
|
51
|
+
name: NAME,
|
52
|
+
insecure: true,
|
53
|
+
validate: [],
|
54
|
+
customization_spec_name: nil,
|
55
|
+
data_store_name: nil,
|
56
|
+
clone_from_vm: nil,
|
57
|
+
linked_clone: nil,
|
58
|
+
proxy_host: nil,
|
59
|
+
proxy_port: nil,
|
60
|
+
vlan: nil,
|
61
|
+
memory_mb: nil,
|
62
|
+
cpu_count: nil,
|
63
|
+
mac: nil,
|
64
|
+
addressType: nil,
|
65
|
+
cpu_reservation: nil,
|
66
|
+
mem_reservation: nil,
|
67
|
+
custom_attributes: {},
|
68
|
+
notes: nil,
|
69
|
+
extra_config: {},
|
70
|
+
ip_address_timeout: 1,
|
71
|
+
real_nic_ip: false,
|
72
|
+
wait_for_sysprep: false
|
73
|
+
)
|
71
74
|
vm_config = double(
|
72
75
|
vm: double('config_vm',
|
73
76
|
box: nil,
|
data/vSphere.gemspec
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift File.expand_path('lib', __dir__)
|
2
4
|
require 'vSphere/version'
|
3
5
|
|
4
6
|
Gem::Specification.new do |s|
|
@@ -11,18 +13,17 @@ Gem::Specification.new do |s|
|
|
11
13
|
s.summary = 'VMWare vSphere provider'
|
12
14
|
s.description = 'Enables Vagrant to manage machines with VMWare vSphere.'
|
13
15
|
|
14
|
-
|
15
|
-
s.add_dependency 'nokogiri', '~>1.5'
|
16
|
+
s.add_dependency 'nokogiri', '1.13.4'
|
16
17
|
|
17
|
-
s.add_dependency 'rbvmomi', '
|
18
|
+
s.add_dependency 'rbvmomi', '3.0.0'
|
18
19
|
|
19
20
|
s.add_dependency 'i18n', '>=0.6.4'
|
20
21
|
|
21
|
-
s.add_development_dependency 'rake', '
|
22
|
+
s.add_development_dependency 'rake', '13.0.6'
|
22
23
|
s.add_development_dependency 'rspec-core'
|
23
24
|
s.add_development_dependency 'rspec-expectations'
|
24
25
|
s.add_development_dependency 'rspec-mocks'
|
25
|
-
s.add_development_dependency 'rubocop', '
|
26
|
+
s.add_development_dependency 'rubocop', '1.25.0'
|
26
27
|
|
27
28
|
s.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
28
29
|
s.executables = s.files.grep(/^bin\//) { |f| File.basename(f) }
|
metadata
CHANGED
@@ -1,49 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-vsphere
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Grauch
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-08-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 1.13.4
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 1.13.4
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rbvmomi
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 1.11.5
|
34
|
-
- - "<"
|
31
|
+
- - '='
|
35
32
|
- !ruby/object:Gem::Version
|
36
|
-
version:
|
33
|
+
version: 3.0.0
|
37
34
|
type: :runtime
|
38
35
|
prerelease: false
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
40
37
|
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: 1.11.5
|
44
|
-
- - "<"
|
38
|
+
- - '='
|
45
39
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
40
|
+
version: 3.0.0
|
47
41
|
- !ruby/object:Gem::Dependency
|
48
42
|
name: i18n
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -64,14 +58,14 @@ dependencies:
|
|
64
58
|
requirements:
|
65
59
|
- - '='
|
66
60
|
- !ruby/object:Gem::Version
|
67
|
-
version:
|
61
|
+
version: 13.0.6
|
68
62
|
type: :development
|
69
63
|
prerelease: false
|
70
64
|
version_requirements: !ruby/object:Gem::Requirement
|
71
65
|
requirements:
|
72
66
|
- - '='
|
73
67
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
68
|
+
version: 13.0.6
|
75
69
|
- !ruby/object:Gem::Dependency
|
76
70
|
name: rspec-core
|
77
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -118,16 +112,16 @@ dependencies:
|
|
118
112
|
name: rubocop
|
119
113
|
requirement: !ruby/object:Gem::Requirement
|
120
114
|
requirements:
|
121
|
-
- -
|
115
|
+
- - '='
|
122
116
|
- !ruby/object:Gem::Version
|
123
|
-
version:
|
117
|
+
version: 1.25.0
|
124
118
|
type: :development
|
125
119
|
prerelease: false
|
126
120
|
version_requirements: !ruby/object:Gem::Requirement
|
127
121
|
requirements:
|
128
|
-
- -
|
122
|
+
- - '='
|
129
123
|
- !ruby/object:Gem::Version
|
130
|
-
version:
|
124
|
+
version: 1.25.0
|
131
125
|
description: Enables Vagrant to manage machines with VMWare vSphere.
|
132
126
|
email:
|
133
127
|
- andrew.grauch@nsidc.org
|
@@ -197,7 +191,7 @@ homepage: ''
|
|
197
191
|
licenses:
|
198
192
|
- MIT
|
199
193
|
metadata: {}
|
200
|
-
post_install_message:
|
194
|
+
post_install_message:
|
201
195
|
rdoc_options: []
|
202
196
|
require_paths:
|
203
197
|
- lib
|
@@ -212,8 +206,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
212
206
|
- !ruby/object:Gem::Version
|
213
207
|
version: '0'
|
214
208
|
requirements: []
|
215
|
-
rubygems_version: 3.
|
216
|
-
signing_key:
|
209
|
+
rubygems_version: 3.2.22
|
210
|
+
signing_key:
|
217
211
|
specification_version: 4
|
218
212
|
summary: VMWare vSphere provider
|
219
213
|
test_files:
|