kitchen-vagrant 1.2.1 → 1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 42ea3e54f9e4977b9e47072ff2c0abf52a13c6c2
4
- data.tar.gz: 0fac9532f895ea77cfd8da14db2782c46a4a77fd
3
+ metadata.gz: 29f29923c8d4eeae2f0e8b01bf0fd097548bcfa8
4
+ data.tar.gz: 9d86529013c13dee68293b5f4e363bdca635f879
5
5
  SHA512:
6
- metadata.gz: d1e4ed5ef32b522270b13232dcfb727447ac59e8b317c3b1cf524475c97f4dadd72fecbbc6a075331423dd79f4e401c5cc0986c8645ae53533d03d20889a1796
7
- data.tar.gz: 34c5ad36a18e2d255cb60a6d669a8c7fc0f30a80f42f8f7da2ab8a18143e21f3a3991ff54ba3d5495ea6cd996251b2a1d91569d1c038853925e393c131fa14c0
6
+ metadata.gz: 20aeaa321f602d5a93e2923ac07bea6381d58fc1417cae5d9531301ac9b2637bae06054b6815eb3a64df3893646696255a303183ccb146a878e3dbe06947c1a0
7
+ data.tar.gz: d9c49dbd3b95086bad52de43eb322579ed8d13951094bdb487f20786e66a80fb1ad8886c6e3d3662bc657787c1533cd173accda25d410067458d427a23672e62
data/.gitignore CHANGED
File without changes
data/.rspec CHANGED
File without changes
data/.travis.yml CHANGED
File without changes
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Change Log
2
2
 
3
+ ## [1.3.0](https://github.com/test-kitchen/kitchen-vagrant/tree/1.3.0) (2018-01-17)
4
+ [Full Changelog](https://github.com/test-kitchen/kitchen-vagrant/compare/v1.2.2...1.3.0)
5
+
6
+ - Improve Hyper-V defaults and support [\#338](https://github.com/test-kitchen/kitchen-vagrant/pull/338)
7
+
8
+ ## [1.2.2](https://github.com/test-kitchen/kitchen-vagrant/tree/1.2.2) (2017-11-07)
9
+ [Full Changelog](https://github.com/test-kitchen/kitchen-vagrant/compare/v1.2.1...1.2.2)
10
+
11
+ - For WinRM options, only treat strings as strings. [\#330](https://github.com/test-kitchen/kitchen-vagrant/pull/330)
12
+
3
13
  ## [1.2.1](https://github.com/test-kitchen/kitchen-vagrant/tree/1.2.1) (2017-08-22)
4
14
  [Full Changelog](https://github.com/test-kitchen/kitchen-vagrant/compare/v1.2.0...1.2.1)
5
15
 
data/Gemfile CHANGED
File without changes
data/Guardfile CHANGED
File without changes
data/LICENSE CHANGED
File without changes
data/README.md CHANGED
@@ -20,73 +20,41 @@ A Vagrant version of 1.1.0 or higher is required for this driver which means
20
20
  that a [native package][vagrant_dl] must be installed on the system running
21
21
  Test Kitchen.
22
22
 
23
- **Note:** If you have previously installed Vagrant as a gem (a version prior
24
- to 1.1.0), this version may be resolved first in your `PATH`. If you receive an
25
- error message that Vagrant is too old despite having installed Vagrant as a
26
- package, you may be required to uninstall the gem version or modify your `PATH`
27
- environment. If you require the vagrant gem for older projects you should
28
- consider the [vagrant-wrapper][vagrant_wrapper] gem which helps manage both
29
- styles of Vagrant installations
30
- ([background details][vagrant_wrapper_background]).
31
-
32
23
  If you are creating Windows VMs over a WinRM Transport, then the
33
24
  [vagrant-winrm][vagrant_winrm] Vagrant plugin must be installed. As a
34
25
  consequence, the minimum version of Vagrant required is 1.6 or higher.
35
26
 
36
- ### <a name="dependencies-virtualization"></a> Virtualization Hypervisor(s)
37
-
38
- Currently this driver supports Parallels, VirtualBox, and VMware Fusion/Workstation
39
- hypervisors. VirtualBox is free and is the default provider for Vagrant.
40
-
41
- [VirtualBox package][virtualbox_dl]
42
-
43
- If you would like to use VMware Fusion/Workstation you must purchase the
44
- software from VMware and then must also purchase the Vagrant VMware plugin.
45
-
46
- [Vagrant VMware Plugin][vmware_plugin]
47
-
48
- [VMware Fusion][fusion_dl]
49
-
50
- [VMware Workstation][workstation_dl]
51
-
52
- If you would like to use Parallels Desktop you must also purchase the software but the
53
- `vagrant-parallels` plugin is freely available.
54
-
55
- [Parallels Desktop for Mac][parallels_dl]
56
-
57
- [Vagrant Parallels Provider][vagrant_parallels]
58
-
59
- #### <a name="unmaintained-virtualization"></a> Unmaintained Virtualization Hypervisors
60
-
61
- Some additional hypervisors may be used with this driver but are not officially supported:
62
-
63
- [CloudStack][cloudstack] using the unofficial [vagrant-cloudstack][vagrant_cloudstack] plugin for Vagrant.
64
-
65
- [KVM][kvm]/[Libvirt][libvirt] using the unofficial [vagrant-libvirt][vagrant_libvirt] plugin for Vagrant.
66
-
67
- [LXC][lxc] using the unofficial [vagrant-lxc][vagrant_lxc] plugin for Vagrant.
27
+ ### <a name="dependencies-virtualization"></a> Supported Virtualization Hypervisors
68
28
 
69
- [OpenStack][openstack] using an unofficial provider plugin for Vagrant.
29
+ | Provider | vagrant plugin | Paid
30
+ | --------- | --------- | ---------
31
+ | [VirtualBox][virtualbox_dl] | built-in | N
32
+ | [VMware Fusion][fusion_dl] | vagrant-vmware-fusion | Y
33
+ | [VMware Workstation][ws_dl] | vagrant-vmware-workstation | Y
34
+ | [Parallels Desktop][parallels_dl] | vagrant-parallels | Y (plugin free)
35
+ | Hyper-V | n/a | N
70
36
 
71
- [RackSpace][rackspace] using the official [vagrant-rackspace][vagrant_rackspace] plugin for Vagrant.
37
+ If you would like to use VMware Fusion or Workstation you must purchase the
38
+ software from VMware and also purchase the corresponding [Vagrant VMware Plugin][vmware_plugin].
72
39
 
73
- [SoftLayer][softlayer] using the unofficial [vagrant-softlayer][vagrant_softlayer] plugin for Vagrant.
40
+ ## <a name="installation"></a> Installation
74
41
 
75
- ## <a name="installation"></a> Installation and Setup
42
+ If using the ChefDK, kitchen-vagrant is already installed. If using an existing Ruby install:
76
43
 
77
- Please read the [Driver usage][driver_usage] page for more details.
44
+ ```
45
+ gem install kitchen-vagrant
46
+ ```
78
47
 
79
48
  ## <a name="default-config"></a> Default Configuration
80
49
 
81
- For a select number of platforms and a select number of hypervisors (VirtualBox, VMware,
82
- and Parallels) default boxes are published under the [Bento organization][bento_org]
83
- on [Atlas][atlas] such as:
50
+ For a set of platforms and hypervisors, boxes are published under the [Bento organization][bento_org]
51
+ on [Vagrant Cloud][vagrant_cloud] which serve as the default boxes for common platforms:
84
52
 
85
53
  ```yaml
86
54
  ---
87
55
  platforms:
88
56
  - name: ubuntu-16.04
89
- - name: centos-7.3
57
+ - name: centos-7
90
58
  - name: freebsd-11
91
59
  ```
92
60
 
@@ -98,12 +66,12 @@ platforms:
98
66
  - name: ubuntu-16.04
99
67
  driver:
100
68
  box: bento/ubuntu-16.04
101
- - name: centos-7.3
69
+ - name: centos-7
102
70
  driver:
103
- box: bento/centos-7.3
104
- - name: freebsd-11.0
71
+ box: bento/centos-7
72
+ - name: freebsd-11
105
73
  driver:
106
- box: bento/freebsd-11.0
74
+ box: bento/freebsd-11
107
75
  # ...
108
76
  ```
109
77
 
@@ -132,8 +100,23 @@ platforms:
132
100
  driver:
133
101
  box: windows-2012r2
134
102
  ```
103
+ ### Hyper-V
104
+
105
+ As Hyper-V is an exclusive hypervisor, it is recomended that the environment variable `VAGRANT_DEFAULT_PROVIDER` be set to `hyperv`. Vagrant currently requires user input to choose a virtual switch so we try to detect this automatically and use a workaround. If no network configuration is provided, we check:
135
106
 
136
- Many host wide defaults for Vagrant can be set using `$HOME/.vagrant.d/Vagrantfile`. See the [Vagrantfile documentation][vagrantfile] for more information.
107
+ 1) environment variable `KITCHEN_HYPERV_SWITCH`
108
+ 2) If on Windows 10 Fall Creators Update, use the built-in 'Default Switch'
109
+ 3) the first switch returned
110
+
111
+ If `VAGRANT_DEFAULT_PROVIDER` is set and the above logic has a valid virtual switch, no additional configuration is needed. This will effectively generate a configuration similar to:
112
+
113
+ ```yaml
114
+ driver:
115
+ name: vagrant
116
+ provider: hyperv
117
+ network:
118
+ - ["public_network", bridge: "Default Switch"]
119
+ ```
137
120
 
138
121
  ## <a name="config"></a> Configuration
139
122
 
@@ -167,7 +150,7 @@ page.
167
150
 
168
151
  The default will be computed from the platform name of the instance. However,
169
152
  for a number of common platforms in the [Bento][bento] project, the default will
170
- prefix the name with `bento/` in accordance with Atlas naming standards.
153
+ prefix the name with `bento/` in accordance with Vagrant Cloud naming standards.
171
154
 
172
155
  For example, a platform with name `ubuntu-16.04` will produce a
173
156
  default `box` value of `bento/ubuntu-16.04`. Alternatively, a box called
@@ -179,7 +162,7 @@ Whether to check for box updates (enabled by default).
179
162
 
180
163
  ### <a name="config-box-url"></a> box\_url
181
164
 
182
- A box_url is not required when using the Atlas format of
165
+ A box_url is not required when using the Vagrant Cloud format of
183
166
  `bento/ubuntu-16.04` assuming the organization and box referenced
184
167
  exist. If using a custom box this can be an `https://` or `file://`
185
168
  URL.
@@ -206,7 +189,7 @@ The [version][vagrant_versioning] of the configured box.
206
189
 
207
190
  The default is `nil`, indicating unset.
208
191
 
209
- This option is only relevant when used with Atlas boxes which support versioning.
192
+ This option is only relevant when used with Vagrant Cloud boxes which support versioning.
210
193
 
211
194
  ### <a name="config-communicator"></a> communicator
212
195
 
@@ -271,6 +254,9 @@ and [VMware][vagrant_config_vmware] for more details.
271
254
  Adding the `createhd` and `storageattach` keys in `customize` allows for creation
272
255
  of additional disks in VirtualBox. Full paths must be used as required by VirtualBox.
273
256
 
257
+ Adding the `storagectl` key in `customize` allows for creation or customization of
258
+ disks controller in Virtualbox.
259
+
274
260
  *NOTE*: IDE Controller based drives always show up in the boot order first, regardless of if they
275
261
  are [bootable][vbox_ide_boot].
276
262
 
@@ -282,6 +268,9 @@ driver:
282
268
  size: 1024
283
269
  - filename: /tmp/disk2.vmdk
284
270
  size: 2048
271
+ storagectl:
272
+ - name: IDE Controller
273
+ portcount: 4
285
274
  storageattach:
286
275
  - storagectl: IDE Controller
287
276
  port: 1
@@ -303,13 +292,15 @@ Vagrant.configure("2") do |config|
303
292
 
304
293
  config.vm.provider :virtualbox do |virtualbox|
305
294
  virtualbox.customize ["createhd", "--filename", "./tmp/disk1.vmdk", "--size", 1024]
295
+ virtualbox.customize ["storagectl", :id, "--name", "IDE Controller", "--portcount", 4]
306
296
  virtualbox.customize ["storageattach", :id, "--storagectl", "IDE Controller", "--port", "1", "--device", 0, "--type", "hdd", "--medium", "./tmp/disk1.vmdk"]
307
297
  end
308
298
  end
309
299
  ```
310
300
 
311
301
  Please read [createhd](https://www.virtualbox.org/manual/ch08.html#vboxmanage-createvdi)
312
- and [storageattach](https://www.virtualbox.org/manual/ch08.html#vboxmanage-storageattach)
302
+ , [storageattach](https://www.virtualbox.org/manual/ch08.html#vboxmanage-storageattach)
303
+ and [storagectl](https://www.virtualbox.org/manual/ch08.html#vboxmanage-storagectl)
313
304
  for additional information on these options.
314
305
 
315
306
  ### <a name="config-guest"></a> guest
@@ -567,6 +558,17 @@ instance was called "default-fuzz-9" will produce a default `vm_hostname` value
567
558
  of `"default-fuzz-9"`. For Windows-based platforms, a default of `nil` is used
568
559
  to save on boot time and potential rebooting.
569
560
 
561
+ ## <a name="unsupported"></a> Unsupported Hypervisors
562
+
563
+ The following providers are reported to work but are unsupported:
564
+
565
+ - [CloudStack][cloudstack] via [vagrant-cloudstack][vagrant_cloudstack]
566
+ - [KVM][kvm]/[Libvirt][libvirt] via [vagrant-libvirt][vagrant_libvirt]
567
+ - [LXC][lxc] via [vagrant-lxc][vagrant_lxc]
568
+ - [OpenStack][openstack]
569
+ - [RackSpace][rackspace] via [vagrant-rackspace][vagrant_rackspace]
570
+ - [SoftLayer][softlayer] via [vagrant-softlayer][vagrant_softlayer]
571
+
570
572
  ## <a name="development"></a> Development
571
573
 
572
574
  * Source hosted at [GitHub][repo]
@@ -613,9 +615,9 @@ Apache 2.0 (see [LICENSE][license])
613
615
  [vagrant_wrapper_background]: https://github.com/org-binbab/gem-vagrant-wrapper#background---aka-the-vagrant-gem-enigma
614
616
  [vmware_plugin]: http://www.vagrantup.com/vmware
615
617
  [fusion_dl]: http://www.vmware.com/products/fusion/overview.html
616
- [workstation_dl]: http://www.vmware.com/products/workstation/
617
- [bento_org]: https://atlas.hashicorp.com/bento
618
- [atlas]: https://atlas.hashicorp.com/
618
+ [ws_dl]: http://www.vmware.com/products/workstation/
619
+ [bento_org]: https://app.vagrantup.com/bento
620
+ [vagrant_cloud]: https://app.vagrantup.com/boxes/search
619
621
  [parallels_dl]: http://www.parallels.com/products/desktop/download/
620
622
  [vagrant_parallels]: https://github.com/Parallels/vagrant-parallels
621
623
  [vagrant_cachier]: https://github.com/fgrehm/vagrant-cachier
data/Rakefile CHANGED
File without changes
File without changes
@@ -0,0 +1,111 @@
1
+ #
2
+ # Author:: Steven Murawski <smurawski@chef.io>
3
+ # Copyright:: Copyright (c) 2015 Chef Software, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+
18
+ require "mixlib/shellout"
19
+ require "fileutils"
20
+ require "json"
21
+
22
+ module Kitchen
23
+ module Driver
24
+ module HypervHelpers
25
+ def encode_command(script)
26
+ encoded_script = script.encode("UTF-16LE", "UTF-8")
27
+ Base64.strict_encode64(encoded_script)
28
+ end
29
+
30
+ def is_64bit?
31
+ os_arch = ENV["PROCESSOR_ARCHITEW6432"] || ENV["PROCESSOR_ARCHITECTURE"]
32
+ ruby_arch = ["foo"].pack("p").size == 4 ? 32 : 64
33
+ os_arch == "AMD64" && ruby_arch == 64
34
+ end
35
+
36
+ def is_32bit?
37
+ os_arch = ENV["PROCESSOR_ARCHITEW6432"] || ENV["PROCESSOR_ARCHITECTURE"]
38
+ ruby_arch = ["foo"].pack("p").size == 4 ? 32 : 64
39
+ os_arch != "AMD64" && ruby_arch == 32
40
+ end
41
+
42
+ def powershell_64_bit
43
+ if is_64bit? || is_32bit?
44
+ 'c:\windows\system32\windowspowershell\v1.0\powershell.exe'
45
+ else
46
+ 'c:\windows\sysnative\windowspowershell\v1.0\powershell.exe'
47
+ end
48
+ end
49
+
50
+ def wrap_command(script)
51
+ base_script_path = File.join(File.dirname(__FILE__), "/../../../support/hyperv.ps1")
52
+ debug("Loading functions from #{base_script_path}")
53
+ new_script = [ ". #{base_script_path}", "#{script}" ].join(";\n")
54
+ debug("Wrapped script: #{new_script}")
55
+ "#{powershell_64_bit} -noprofile -executionpolicy bypass" \
56
+ " -encodedcommand #{encode_command new_script} -outputformat Text"
57
+ end
58
+
59
+ # Convenience method to run a powershell command locally.
60
+ #
61
+ # @param cmd [String] command to run locally
62
+ # @param options [Hash] options hash
63
+ # @see Kitchen::ShellOut.run_command
64
+ # @api private
65
+ def run_ps(cmd, options = {})
66
+ cmd = "echo #{cmd}" if config[:dry_run]
67
+ debug("Preparing to run: ")
68
+ debug(" #{cmd}")
69
+ wrapped_command = wrap_command cmd
70
+ execute_command wrapped_command, options
71
+ end
72
+
73
+ def execute_command(cmd, options = {})
74
+ debug("#Local Command BEGIN (#{cmd})")
75
+ sh = Mixlib::ShellOut.new(cmd, options)
76
+ sh.run_command
77
+ debug("Local Command END #{Util.duration(sh.execution_time)}")
78
+ raise "Failed: #{sh.stderr}" if sh.error?
79
+ stdout = sanitize_stdout(sh.stdout)
80
+ JSON.parse(stdout) if stdout.length > 2
81
+ end
82
+
83
+ def sanitize_stdout(stdout)
84
+ stdout.split("\n").select { |s| !s.start_with?("PS") }.join("\n")
85
+ end
86
+
87
+ def hyperv_switch
88
+ default_switch_object = run_ps hyperv_default_switch_ps
89
+ if default_switch_object.nil? ||
90
+ !default_switch_object.key?("Name") ||
91
+ default_switch_object["Name"].empty?
92
+ raise "Failed to find a default VM Switch."
93
+ end
94
+ default_switch_object["Name"]
95
+ end
96
+
97
+ def hyperv_default_switch_ps
98
+ <<-VMSWITCH
99
+ Get-DefaultVMSwitch #{ENV['KITCHEN_HYPERV_SWITCH']} | ConvertTo-Json
100
+ VMSWITCH
101
+ end
102
+
103
+ private
104
+
105
+ def ruby_array_to_ps_array(list)
106
+ return "@()" if list.nil? || list.empty?
107
+ list.to_s.tr("[]", "()").prepend("@")
108
+ end
109
+ end
110
+ end
111
+ end
@@ -22,6 +22,7 @@ require "rubygems/version"
22
22
 
23
23
  require "kitchen"
24
24
  require "kitchen/driver/vagrant_version"
25
+ require "kitchen/driver/helpers"
25
26
 
26
27
  module Kitchen
27
28
 
@@ -33,6 +34,7 @@ module Kitchen
33
34
  class Vagrant < Kitchen::Driver::Base
34
35
 
35
36
  include ShellOut
37
+ include Kitchen::Driver::HypervHelpers
36
38
 
37
39
  kitchen_driver_api_version 2
38
40
 
@@ -169,6 +171,7 @@ module Kitchen
169
171
  finalize_pre_create_command!
170
172
  finalize_synced_folders!
171
173
  finalize_ca_cert!
174
+ finalize_network!
172
175
  self
173
176
  end
174
177
 
@@ -208,7 +211,7 @@ module Kitchen
208
211
 
209
212
  protected
210
213
 
211
- WEBSITE = "http://www.vagrantup.com/downloads.html".freeze
214
+ WEBSITE = "https://www.vagrantup.com/downloads.html".freeze
212
215
  MIN_VER = "1.1.0".freeze
213
216
 
214
217
  class << self
@@ -240,6 +243,7 @@ module Kitchen
240
243
  # shared folders
241
244
  # @api private
242
245
  def safe_share?(box)
246
+ return false if config[:provider] =~ /(hyperv|libvirt)/
243
247
  box =~ /^bento\/(centos|debian|fedora|opensuse|ubuntu|oracle)-/
244
248
  end
245
249
 
@@ -342,6 +346,19 @@ module Kitchen
342
346
  end
343
347
  end
344
348
 
349
+ # If Hyper-V and no network configuration
350
+ # check KITCHEN_HYPERV_SWITCH and fallback to helper method
351
+ # to select the best switch
352
+ # @api private
353
+ def finalize_network!
354
+ if config[:provider] == "hyperv" && config[:network].empty?
355
+ config[:network].push([
356
+ "public_network",
357
+ "bridge: #{hyperv_switch}",
358
+ ])
359
+ end
360
+ end
361
+
345
362
  # Loads any required third party Ruby libraries or runs any shell out
346
363
  # commands to prepare the plugin. This method will be called in the
347
364
  # context of the main thread of execution and so does not necessarily
@@ -21,6 +21,6 @@ module Kitchen
21
21
  module Driver
22
22
 
23
23
  # Version string for Vagrant Kitchen driver
24
- VAGRANT_VERSION = "1.2.1"
24
+ VAGRANT_VERSION = "1.3.0"
25
25
  end
26
26
  end
@@ -1377,6 +1377,48 @@ describe Kitchen::Driver::Vagrant do
1377
1377
  RUBY
1378
1378
  end
1379
1379
 
1380
+ it "adds lines for single storagectl in :customize" do
1381
+ config[:customize] = {
1382
+ :storagectl => {
1383
+ :name => "Custom SATA Controller",
1384
+ :add => "sata",
1385
+ :controller => "IntelAHCI",
1386
+ :portcount => 4,
1387
+ },
1388
+ }
1389
+ cmd
1390
+
1391
+ expect(vagrantfile).to match(regexify(<<-RUBY.gsub(/^ {8}/, "").chomp))
1392
+ c.vm.provider :virtualbox do |p|
1393
+ p.customize ["storagectl", :id, "--name", "Custom SATA Controller", "--add", "sata", "--controller", "IntelAHCI", "--portcount", 4]
1394
+ end
1395
+ RUBY
1396
+ end
1397
+
1398
+ it "adds lines for multiple storagectl in :customize" do
1399
+ config[:customize] = {
1400
+ :storagectl => [
1401
+ {
1402
+ :name => "Custom SATA Controller",
1403
+ :add => "sata",
1404
+ :controller => "IntelAHCI",
1405
+ },
1406
+ {
1407
+ :name => "Custom SATA Controller",
1408
+ :portcount => 4,
1409
+ },
1410
+ ],
1411
+ }
1412
+ cmd
1413
+
1414
+ expect(vagrantfile).to match(regexify(<<-RUBY.gsub(/^ {8}/, "").chomp))
1415
+ c.vm.provider :virtualbox do |p|
1416
+ p.customize ["storagectl", :id, "--name", "Custom SATA Controller", "--add", "sata", "--controller", "IntelAHCI"]
1417
+ p.customize ["storagectl", :id, "--name", "Custom SATA Controller", "--portcount", 4]
1418
+ end
1419
+ RUBY
1420
+ end
1421
+
1380
1422
  it "adds lines for single storageattach in :customize" do
1381
1423
  config[:customize] = {
1382
1424
  :storageattach => {
data/spec/spec_helper.rb CHANGED
File without changes
@@ -0,0 +1,29 @@
1
+ #requires -Version 2 -Modules Hyper-V
2
+
3
+ #implicitly import hyperv module to avoid powercli cmdlets
4
+ if ((Get-Module -Name 'hyper-v') -ne $null) {
5
+ Remove-Module -Name hyper-v
6
+ Import-Module -Name hyper-v
7
+ }
8
+ else {
9
+ Import-Module -Name hyper-v
10
+ }
11
+
12
+ $ProgressPreference = 'SilentlyContinue'
13
+
14
+ function Get-DefaultVMSwitch {
15
+ [CmdletBinding()]
16
+ param ($Name)
17
+
18
+ $switches = Get-VMSwitch @PSBoundParameters
19
+
20
+ if (-not $PSBoundParameters.ContainsKey('Name') -and (($switches.Name) -contains 'Default Switch') ) {
21
+ # Looking for 'Default Switch' on Fall Creators Update or newer
22
+ $switches = $switches |
23
+ Where-Object {$_.Name -like 'Default Switch'}
24
+ }
25
+
26
+ $switches |
27
+ Select-Object -first 1 |
28
+ Select-Object Name, ID
29
+ }
@@ -68,7 +68,11 @@ Vagrant.configure("2") do |c|
68
68
  <% end %>
69
69
  <% if config[:winrm] %>
70
70
  <% config[:winrm].each do |key, value| %>
71
- c.winrm.<%= key %> = "<%= value %>"
71
+ <% if value.is_a? String %>
72
+ c.winrm.<%= key %> = "<%= value%>"
73
+ <% else %>
74
+ c.winrm.<%= key %> = <%= value%>
75
+ <% end %>
72
76
  <% end %>
73
77
  <% end %>
74
78
 
@@ -156,19 +160,19 @@ Vagrant.configure("2") do |c|
156
160
  <% value.each do |item| %>
157
161
  p.customize ["createhd", "--filename", "<%= item[:filename] %>", "--size", <%= item[:size] %>]
158
162
  <% end %>
159
- <% elsif key == :storageattach %>
163
+ <% elsif key == :storageattach || key == :storagectl %>
160
164
  <% value = [value] unless value.instance_of?(Array) %>
161
165
  <% value.each do |item| %>
162
166
  <% options = [] %>
163
- <% item.each do |storageattach_option_key, storageattach_option_value|
164
- options << "\"--#{storageattach_option_key}\""
165
- if storageattach_option_value.instance_of? Fixnum
166
- options << storageattach_option_value
167
+ <% item.each do |storage_option_key, storage_option_value|
168
+ options << "\"--#{storage_option_key}\""
169
+ if storage_option_value.instance_of? Fixnum
170
+ options << storage_option_value
167
171
  else
168
- options << "\"#{storageattach_option_value}\""
172
+ options << "\"#{storage_option_value}\""
169
173
  end
170
174
  end %>
171
- p.customize ["storageattach", :id, <%= options.join(', ') %>]
175
+ p.customize ["<%= key.to_s %>", :id, <%= options.join(', ') %>]
172
176
  <% end %>
173
177
  <% elsif key == :cpuidset %>
174
178
  <% ids = [] %>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-vagrant
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fletcher Nichol
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-22 00:00:00.000000000 Z
11
+ date: 2018-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: test-kitchen
@@ -125,10 +125,12 @@ files:
125
125
  - README.md
126
126
  - Rakefile
127
127
  - kitchen-vagrant.gemspec
128
+ - lib/kitchen/driver/helpers.rb
128
129
  - lib/kitchen/driver/vagrant.rb
129
130
  - lib/kitchen/driver/vagrant_version.rb
130
131
  - spec/kitchen/driver/vagrant_spec.rb
131
132
  - spec/spec_helper.rb
133
+ - support/hyperv.ps1
132
134
  - templates/Vagrantfile.erb
133
135
  homepage: https://github.com/test-kitchen/kitchen-vagrant/
134
136
  licenses:
@@ -150,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
152
  version: '0'
151
153
  requirements: []
152
154
  rubyforge_project:
153
- rubygems_version: 2.6.11
155
+ rubygems_version: 2.6.13
154
156
  signing_key:
155
157
  specification_version: 4
156
158
  summary: Kitchen::Driver::Vagrant - A Vagrant Driver for Test Kitchen.