vagrant-windows 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/.DS_Store ADDED
Binary file
data/CHANGELOG.md ADDED
@@ -0,0 +1,38 @@
1
+ ## Changelog
2
+
3
+ 0.1.1
4
+
5
+ - Remove extra debug information from command output.
6
+
7
+ 0.1.2
8
+
9
+ - Added virtual box 4.2 support.
10
+
11
+ 0.1.3
12
+
13
+ - Added puppet provisioner.
14
+
15
+ 1.0.0
16
+
17
+ - Converted to Vagrant 1.1.x plugin architecture.
18
+
19
+ 1.0.1
20
+
21
+ - Fix #29 Monkey Patch the 4.2 driver to include read_mac_addresses.
22
+ - use read_mac_addresses in all cases.
23
+
24
+ 1.0.3
25
+
26
+ - Added vagrant shell provisioner. The built-in shell provisioner tried to chmod the target script which doesn't make sense on windows.
27
+ - Can now run the vagrant-windows plugin via bundle exec instead of vagrant plugin install (for plugin dev).The vagrant src root finding logic didn't work from a bundle, but the native Vagrant src root does.
28
+ - Readme fixes/updates.
29
+
30
+ 1.2.0
31
+
32
+ - Converted to Vagrant 1.2.x plugin architecture.
33
+ - Various networking fixes.
34
+ - Chef provisioner runs through the Windows task scheduler instead of ps_runas power shell script.
35
+
36
+ 1.2.1
37
+
38
+ - Fixed issue 91, drive mapping was failing on Vagrant 1.1.
data/Gemfile CHANGED
@@ -8,4 +8,5 @@ group :development do
8
8
  # gem dependency because we expect to be installed within the
9
9
  # Vagrant environment itself using `vagrant plugin`.
10
10
  gem "vagrant", :git => "git://github.com/mitchellh/vagrant.git", :tag => 'v1.2.2'
11
+ gem "mocha", :require => false
11
12
  end
data/README.md CHANGED
@@ -1,80 +1,64 @@
1
- Installing Vagrant-Windows
2
- ==========================
1
+ # Vagrant-Windows
2
+ [![Build Status](https://travis-ci.org/WinRb/vagrant-windows.png)](https://travis-ci.org/WinRb/vagrant-windows)
3
+ [![Code Climate](https://codeclimate.com/github/WinRb/vagrant-windows.png)](https://codeclimate.com/github/WinRb/vagrant-windows)
4
+ [![Gem Version](https://badge.fury.io/rb/vagrant-windows.png)](http://badge.fury.io/rb/vagrant-windows)
3
5
 
4
- For Vagrant 1.1.x and 1.2.x execute `vagrant plugin install vagrant-windows`.
5
- For Vagrant 1.0.x execute `vagrant plugin install vagrant-windows --plugin-version 0.1.2`.
6
+ Use Windows guests with Vagrant
6
7
 
7
- ### Installing Vagrant-Windows From Source
8
- If you want to install from source, use the following method (this would be for 1.2.0):
8
+ ## Getting Started
9
+ 1. Install the vagrant-windows plugin.
10
+ 2. Create and configure a Windows guest base box.
11
+ 3. Create a Vagrantfile.
12
+ 4. vagrant up
9
13
 
10
- ```
11
- bundle install
12
- bundle exec rake
13
- vagrant plugin install pkg/vagrant-windows-1.2.0.gem
14
- ```
14
+ ## Installation
15
15
 
16
- Keep in mind you should have Ruby 1.9.3 and Ruby DevKit installed. Check out the following gist that can get you what you need (from blank system to fully ready): [Install Vagrant Windows Plugin From Source Gist](https://gist.github.com/ferventcoder/6251225).
16
+ - For Vagrant 1.1 and 1.2 execute `vagrant plugin install vagrant-windows`.
17
+ - For Vagrant 1.0 execute `vagrant plugin install vagrant-windows --plugin-version 0.1.2`.
17
18
 
18
- Supported Guest Operating Systems (Your VM)
19
- ===========================================
20
- _Does NOT work with Windows 2003 or XP_
19
+ ## Creating a Base Box
21
20
 
21
+ Supported Guest Operating Systems:
22
22
  - Windows 7
23
23
  - Windows 2008
24
24
  - Windows 2008 R2
25
25
  - Windows 2012
26
26
  - Windows 8
27
27
 
28
- Building a Base Box
29
- ===================
28
+ Windows Server 2003 and Windows XP are not supported.
30
29
 
31
- All Windows Machines
32
- --------------------
33
- #### Prerequisites
34
-
35
- Box setup:
30
+ You'll need to create a new Vagrant base box. Create a new Windows VM in VirtualBox, configure some Windows settings (see below) then follow the [Vagrant packaging instructions](http://docs.vagrantup.com/v2/cli/package.html).
36
31
 
37
32
  - Create a vagrant user, for things to work out of the box username and password should both be "vagrant".
38
33
  - Turn off UAC (Msconfig)
39
34
  - Disable complex passwords
35
+ - [Disable Shutdown Tracker](http://www.jppinto.com/2010/01/how-to-disable-the-shutdown-event-tracker-in-server-20032008/) on Windows 2008/2012 Servers (except Core).
36
+ - [Disable "Server Manager" Starting at login](http://www.elmajdal.net/win2k8/How_to_Turn_Off_The_Automatic_Display_of_Server_Manager_At_logon.aspx) on Windows 2008/2012 Servers (except Core).
37
+ - Enable and configure WinRM (see below)
40
38
 
41
- Prior to enabling WinRM, you must ensure the following services are enabled:
39
+ ### WinRM Configuration
42
40
 
43
- - Base Filtering Engine
44
- - Remote Procedure Call (RPC)
45
- - DCOM Server Process Launcher
46
- - RPC Endpoint Mapper
47
- - Windows Firewall
48
- - Windows Remote Management (WS-Management)
49
-
50
- #### Enable WinRM
41
+ These commands assume you're running from a regular command window and not PowerShell.
51
42
  ```
52
43
  winrm quickconfig -q
53
44
  winrm set winrm/config/winrs @{MaxMemoryPerShellMB="512"}
54
45
  winrm set winrm/config @{MaxTimeoutms="1800000"}
55
46
  winrm set winrm/config/service @{AllowUnencrypted="true"}
56
47
  winrm set winrm/config/service/auth @{Basic="true"}
48
+ sc config WinRM start= auto
57
49
  ```
58
- * note
59
- If you want to run the winrm commands from PowerShell you need to put ```@{MaxMemoryPerShellMB="512"}``` etc in single quotes:
60
-
61
- ```
62
- winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="512"}'
63
- ```
64
-
65
- #### Last steps
50
+ ### Required Windows Services
66
51
 
67
- - Optional: Start WinRM a few minutes faster by running: "sc config WinRM start= auto" (default is delayed-auto)
68
- - _Note:_ When you use the `winrm` command line tool it will always ask to set the startup to Delayed, so you may find yourself performing this a few times.
52
+ If you like to turn off optional Windows services you'll need to ensure you leave these services enabled for vagrant-windows to continue to work:
69
53
 
54
+ - Base Filtering Engine
55
+ - Remote Procedure Call (RPC)
56
+ - DCOM Server Process Launcher
57
+ - RPC Endpoint Mapper
58
+ - Windows Firewall
59
+ - Windows Remote Management (WS-Management)
70
60
 
71
- Windows 2008/2012 Servers (except Core)
72
- ---------------------------------------
73
- - [Disable Shutdown Tracker](http://www.jppinto.com/2010/01/how-to-disable-the-shutdown-event-tracker-in-server-20032008/)
74
- - [Disable "Server Manager" Starting at login](http://www.elmajdal.net/win2k8/How_to_Turn_Off_The_Automatic_Display_of_Server_Manager_At_logon.aspx)
75
-
76
- The Vagrant File
77
- ================
61
+ ## The Vagrant File
78
62
 
79
63
  Add the following to your Vagrantfile
80
64
 
@@ -122,41 +106,39 @@ Available Config Parameters:
122
106
  * ```config.winrm.max_tries``` - The number of retries to connect to WinRM, defaults to 20.
123
107
  * ```config.winrm.timeout``` - The max number of seconds to wait for a WinRM response, defaults to 1800 seconds.
124
108
 
125
- Note - You need to ensure you specify a config.windows and a config.winrm in your Vagrantfile. Currently there's a problem where
126
- Vagrant will not load the plugin config even with defaults if at least one of its values doesn't exist in the Vagrantfile.
109
+ Note - You need to ensure you specify a config.windows and a config.winrm in your Vagrantfile. Currently there's a problem where Vagrant will not load the plugin config even with defaults if at least one of its values doesn't exist in the Vagrantfile.
110
+
127
111
 
128
112
 
129
- What Works?
130
- ===========
113
+ ------------------------------------------------------------
114
+
115
+ ## What Works?
116
+
131
117
  - vagrant up|halt|reload|provision
132
118
  - Chef Vagrant Provisioner
133
119
  - Puppet Vagrant Provisioner
134
120
  - Shell Vagrant provisioner. Batch files or PowerShell (ps1) scripts are supported as well as inline scripts.
135
121
 
136
- TODOs
137
- =========
138
- 1. Test it! We need to test on more hosts, guests, and VBox versions. Help wanted.
139
- 2. Chef-Client support.
140
- 3. Unit tests.
141
- 4. Better docs.
142
122
 
143
- Troubleshooting
144
- ===============
123
+ ## Troubleshooting
145
124
 
146
- I get a 401 auth error from WinRM
147
- ---------------------------------
125
+ #### When I run the winrm command I get: "Error: Invalid use of command line. Type "winrm -?" for help."
126
+ - You're running the winrm command from powershell. You need to put ```@{MaxMemoryPerShellMB="512"}``` etc in single quotes:
127
+ ```
128
+ winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="512"}'
129
+ ```
130
+
131
+ #### I get a 401 auth error from WinRM
148
132
  - Ensure you've followed the WinRM configuration instructions above.
149
133
  - Ensure you can manually login using the specified config.winrm.username you've specified in your Vagrantfile.
150
134
  - Ensure your password hasn't expired.
151
135
  - Ensure your password doesn't need to be changed because of policy.
152
136
 
153
- I get a non-401 error from WinRM waiting for the VM to boot
154
- -----------------------------------------------------------
137
+ #### I get a non-401 error from WinRM waiting for the VM to boot
155
138
  - Ensure you've properly setup port forwarding of WinRM
156
139
  - Make sure your VM can boot manually through VBox.
157
140
 
158
- SQL Server cookbook fails to install through Vagrant
159
- ----------------------------------------------------
141
+ #### SQL Server cookbook fails to install through Vagrant
160
142
  - Ensure UAC is turned off
161
143
  - Ensure your vagrant user is an admin on the guest
162
144
  - The SQL Server installer uses a lot of resources, ensure WinRM Quota Management is properly configured to give it enough resources.
@@ -165,21 +147,17 @@ SQL Server cookbook fails to install through Vagrant
165
147
  If all else fails try running [vagrant with debug logging](http://docs.vagrantup.com/v2/debugging.html), perhaps that will give
166
148
  you enough insight to fix the problem or file an issue.
167
149
 
168
- What Can I do to help?
169
- ======================
170
- 1. Contribute Code (See Below)
171
- 2. Test Various Scenarios and file bugs for things that dont work
172
150
 
173
- Contributing
174
- ============
151
+ ## Contributing
152
+
175
153
  1. Fork it.
176
154
  2. Create a branch (git checkout -b my_feature_branch)
177
155
  3. Commit your changes (git commit -am "Added a sweet feature")
178
156
  4. Push to the branch (git push origin my_feature_branch)
179
157
  5. Create a pull requst from your branch into master (Please be sure to provide enough detail for us to cipher what this change is doing)
180
158
 
181
- Development
182
- =============
159
+ ### Development
160
+
183
161
  Clone this repository and use [Bundler](http://gembundler.com) to get the dependencies:
184
162
 
185
163
  ```
@@ -202,9 +180,20 @@ use bundler to execute Vagrant:
202
180
  $ bundle exec vagrant up
203
181
  ```
204
182
 
183
+ ### Installing Vagrant-Windows From Source
184
+
185
+ If you want to globally install your locally built plugin from source, use the following method (this would be for 1.2.0):
186
+
187
+ ```
188
+ bundle install
189
+ bundle exec rake build
190
+ vagrant plugin install pkg/vagrant-windows-1.2.0.gem
191
+ ```
192
+
193
+ Keep in mind you should have Ruby 1.9.3 and Ruby DevKit installed. Check out the following gist that can get you what you need (from blank system to fully ready): [Install Vagrant Windows Plugin From Source Gist](https://gist.github.com/ferventcoder/6251225).
194
+
195
+ ## References and Shout Outs
205
196
 
206
- References and Shout Outs
207
- =========================
208
197
  - Chris McClimans - Vagrant Branch (https://github.com/hh/vagrant/blob/feature/winrm/)
209
198
  - Dan Wanek - WinRM GEM (https://github.com/zenchild/WinRM)
210
199
  - +1 For being super responsive to pull requests.
@@ -215,38 +204,4 @@ References and Shout Outs
215
204
  - Rob Reynolds - Updated readme installation and box configuration notes
216
205
  - stonith - Updated readme winrm config notes
217
206
  - wenns - Updated readme to advise against forwarding RDP
218
-
219
- Changelog
220
- =========
221
- 0.1.1
222
-
223
- - Remove extra debug information from command output.
224
-
225
- 0.1.2
226
-
227
- - Added virtual box 4.2 support.
228
-
229
- 0.1.3
230
-
231
- - Added puppet provisioner.
232
-
233
- 1.0.0
234
-
235
- - Converted to Vagrant 1.1.x plugin architecture.
236
-
237
- 1.0.1
238
-
239
- - Fix #29 Monkey Patch the 4.2 driver to include read_mac_addresses.
240
- - use read_mac_addresses in all cases.
241
-
242
- 1.0.3
243
-
244
- - Added vagrant shell provisioner. The built-in shell provisioner tried to chmod the target script which doesn't make sense on windows.
245
- - Can now run the vagrant-windows plugin via bundle exec instead of vagrant plugin install (for plugin dev).The vagrant src root finding logic didn't work from a bundle, but the native Vagrant src root does.
246
- - Readme fixes/updates.
247
-
248
- 1.2.0
249
-
250
- - Converted to Vagrant 1.2.x plugin architecture.
251
- - Various networking fixes.
252
- - Chef provisioner runs through the Windows task scheduler instead of ps_runas power shell script.
207
+ - Joe Fitzgerald - Added VMWare support and improved retry logic.
@@ -2,6 +2,7 @@ require 'log4r'
2
2
  require_relative '../../communication/guestnetwork'
3
3
  require_relative '../../communication/winrmshell'
4
4
  require_relative '../../errors'
5
+ require_relative '../../helper'
5
6
 
6
7
  module VagrantWindows
7
8
  module Guest
@@ -14,8 +15,7 @@ module VagrantWindows
14
15
  @@logger.debug("networks: #{networks.inspect}")
15
16
 
16
17
  guest_network = ::VagrantWindows::Communication::GuestNetwork.new(machine.communicate.winrmshell)
17
-
18
- if (machine.provider_name != :vmware_fusion) && (machine.provider_name != :vmware_workstation)
18
+ unless VagrantWindows::Helper.is_vmware(machine)
19
19
  vm_interface_map = create_vm_interface_map(machine, guest_network)
20
20
  end
21
21
 
@@ -53,7 +53,7 @@ module VagrantWindows
53
53
  naked_mac = nic[:mac_address].gsub(':','')
54
54
  if driver_mac_address[naked_mac]
55
55
  vm_interface_map[driver_mac_address[naked_mac]] = {
56
- :name => nic[:net_connection_id],
56
+ :net_connection_id => nic[:net_connection_id],
57
57
  :mac_address => naked_mac,
58
58
  :interface_index => nic[:interface_index],
59
59
  :index => nic[:index] }
@@ -0,0 +1,31 @@
1
+ require_relative '../../helper'
2
+
3
+ module VagrantWindows
4
+ module Guest
5
+ module Cap
6
+ class MountSharedFolder
7
+
8
+ def self.mount_virtualbox_shared_folder(machine, name, guestpath, options)
9
+ mount_shared_folder(machine, name, guestpath, "\\\\vboxsrv\\")
10
+ end
11
+
12
+ def self.mount_vmware_shared_folder(machine, name, guestpath, options)
13
+ mount_shared_folder(machine, name, guestpath, "\\\\vmware-host\\Shared Folders\\")
14
+ end
15
+
16
+ protected
17
+
18
+ def self.mount_shared_folder(machine, name, guestpath, vm_provider_unc_base)
19
+ share_name = VagrantWindows::Helper.win_friendly_share_id(name)
20
+ options = {
21
+ :mount_point => guestpath,
22
+ :share_name => share_name,
23
+ :vm_provider_unc_path => vm_provider_unc_base + share_name}
24
+ mount_script = VagrantWindows.load_script_template("mount_volume.ps1", :options => options)
25
+ machine.communicate.execute(mount_script, {:shell => :powershell})
26
+ end
27
+
28
+ end
29
+ end
30
+ end
31
+ end
@@ -1,9 +1,9 @@
1
1
  require "vagrant"
2
+ require "vagrant-windows/helper"
2
3
  require "vagrant-windows/guest/cap/change_host_name"
3
4
  require "vagrant-windows/guest/cap/configure_networks"
4
5
  require "vagrant-windows/guest/cap/halt"
5
- require "vagrant-windows/guest/cap/mount_virtualbox_shared_folder"
6
- require "vagrant-windows/guest/cap/mount_vmware_shared_folder"
6
+ require "vagrant-windows/guest/cap/mount_shared_folder"
7
7
 
8
8
  module VagrantWindows
9
9
  module Guest
@@ -31,14 +31,14 @@ module VagrantWindows
31
31
  VagrantWindows::Guest::Cap::Halt.halt(@machine)
32
32
  end
33
33
 
34
- def mount_virtualbox_shared_folder(name, guestpath, options)
35
- VagrantWindows::Guest::Cap::MountVirtualBoxSharedFolder.mount_virtualbox_shared_folder(
36
- @machine, name, guestpath, options)
37
- end
38
-
39
- def mount_vmware_shared_folder(name, guestpath, options)
40
- VagrantWindows::Guest::Cap::MountVMwareBoxSharedFolder.mount_vmware_shared_folder(
34
+ def mount_shared_folder(name, guestpath, options)
35
+ if VagrantWindows::Helper.is_vmware(@machine) then
36
+ VagrantWindows::Guest::Cap::MountSharedFolder.mount_vmware_shared_folder(
37
+ @machine, name, guestpath, options)
38
+ else
39
+ VagrantWindows::Guest::Cap::MountSharedFolder.mount_virtualbox_shared_folder(
41
40
  @machine, name, guestpath, options)
41
+ end
42
42
  end
43
43
 
44
44
  def configure_networks(networks)
@@ -2,6 +2,10 @@ module VagrantWindows
2
2
  module Helper
3
3
  extend self
4
4
 
5
+ # Makes a path Windows guest friendly.
6
+ # Turns '/vagrant' into 'c:\vagrant'
7
+ #
8
+ # @return [String]
5
9
  def win_friendly_path(path)
6
10
  if path
7
11
  new_path = path.gsub('/', '\\')
@@ -10,10 +14,20 @@ module VagrantWindows
10
14
  new_path
11
15
  end
12
16
 
13
- # turns '/vagrant' into 'vagrant' or turns ''/a/b/c/d/e' into 'a_b_c_d_e'
17
+ # Makes Vagrant share names Windows guest friendly.
18
+ # Turns '/vagrant' into 'vagrant' or turns ''/a/b/c/d/e' into 'a_b_c_d_e'
19
+ #
20
+ # @return [String]
14
21
  def win_friendly_share_id(shared_folder_name)
15
22
  return shared_folder_name.gsub(/[\/\/]/,'_').sub(/^_/, '')
16
23
  end
17
24
 
25
+ # Checks to see if the specified machine is using VMWare Fusion or Workstation.
26
+ #
27
+ # @return [Boolean]
28
+ def is_vmware(machine)
29
+ machine.provider_name.to_s().start_with?('vmware')
30
+ end
31
+
18
32
  end
19
33
  end
@@ -76,13 +76,13 @@ module VagrantWindows
76
76
  end
77
77
 
78
78
  guest_capability(:windows, :mount_virtualbox_shared_folder) do
79
- require_relative "guest/cap/mount_virtualbox_shared_folder"
80
- VagrantWindows::Guest::Cap::MountVirtualBoxSharedFolder
79
+ require_relative "guest/cap/mount_shared_folder"
80
+ VagrantWindows::Guest::Cap::MountSharedFolder
81
81
  end
82
82
 
83
83
  guest_capability(:windows, :mount_vmware_shared_folder) do
84
- require_relative "guest/cap/mount_vmware_shared_folder"
85
- VagrantWindows::Guest::Cap::MountVMwareSharedFolder
84
+ require_relative "guest/cap/mount_shared_folder"
85
+ VagrantWindows::Guest::Cap::MountSharedFolder
86
86
  end
87
87
 
88
88
  end
@@ -7,6 +7,7 @@ function Test-ReparsePoint([string]$path) {
7
7
 
8
8
  $MountPoint = [System.IO.Path]::GetFullPath("<%= options[:mount_point] %>")
9
9
  $ShareName = "<%= options[:share_name] %>"
10
+ $VmProviderUncPath = "<%= options[:vm_provider_unc_path] %>"
10
11
 
11
12
  # https://github.com/BIAINC/vagrant-windows/issues/4
12
13
  # Not sure why this works, but it does.
@@ -41,7 +42,7 @@ if (-not (Test-Path $BaseDirectory))
41
42
  New-Item $BaseDirectory -Type Directory -Force | Out-Null
42
43
  }
43
44
 
44
- cmd /c mklink /D "$MountPoint" "\\vmware-host\Shared Folders\$ShareName" | out-null
45
+ cmd /c mklink /D "$MountPoint" "$VmProviderUncPath" | out-null
45
46
 
46
47
  if ( $LASTEXITCODE -ne 0 )
47
48
  {
@@ -1,3 +1,3 @@
1
1
  module VagrantWindows
2
- VERSION = "1.2.0"
2
+ VERSION = "1.2.1"
3
3
  end
@@ -35,8 +35,20 @@ describe VagrantWindows::Communication::GuestNetwork , :integration => true do
35
35
 
36
36
  it "should configure static IP for adapter" do
37
37
  nics = @guestnetwork.network_adapters()
38
- @guestnetwork.configure_static_interface(nics[1][:index], nics[1][:net_connection_id], "192.168.0.100", "255.255.255.0")
38
+ @guestnetwork.configure_static_interface(
39
+ nics[1][:index],
40
+ nics[1][:net_connection_id],
41
+ "192.168.0.121",
42
+ "255.255.255.0")
43
+
39
44
  expect(@guestnetwork.is_dhcp_enabled(nics[1][:index])).to be_false
45
+
46
+ # ensure the right IP was set by looking through all the output of ipconfig
47
+ ipconfig_out = ''
48
+ @shell.powershell('ipconfig /all') do |_, line|
49
+ ipconfig_out = ipconfig_out + "#{line}"
50
+ end
51
+ expect(ipconfig_out).to include('192.168.0.121')
40
52
  end
41
53
 
42
54
  it "should configure all networks to work mode" do
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'mocha/api'
2
3
 
3
4
  describe VagrantWindows::Helper , :unit => true do
4
5
 
@@ -34,5 +35,23 @@ describe VagrantWindows::Helper , :unit => true do
34
35
  end
35
36
 
36
37
  end
38
+
39
+ describe "is_vmware" do
40
+ it "should be true for vmware_fusion" do
41
+ machine = stub(:provider_name => :vmware_fusion)
42
+ expect(@dummy.is_vmware(machine)).to be_true
43
+ end
44
+
45
+ it "should be true for vmware_workstation" do
46
+ machine = stub(:provider_name => :vmware_workstation)
47
+ expect(@dummy.is_vmware(machine)).to be_true
48
+ end
49
+
50
+ it "should be false for virtual_box" do
51
+ machine = stub(:provider_name => :virtual_box)
52
+ expect(@dummy.is_vmware(machine)).to be_false
53
+ end
54
+
55
+ end
37
56
 
38
57
  end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+ require 'mocha/api'
3
+ require 'vagrant-windows/guest/cap/mount_shared_folder'
4
+
5
+ describe VagrantWindows::Guest::Cap::MountSharedFolder, :unit => true do
6
+
7
+ before(:each) do
8
+ @communicator = mock()
9
+ @machine = stub(:communicate => @communicator)
10
+ end
11
+
12
+ describe "mount_virtualbox_shared_folder" do
13
+ it "should run script with vbox paths" do
14
+ @communicator.expects(:execute).with do |script, options|
15
+ expect(script).to include("$VmProviderUncPath = \"\\\\vboxsrv\\vagrant\"")
16
+ end
17
+
18
+ VagrantWindows::Guest::Cap::MountSharedFolder.mount_virtualbox_shared_folder(
19
+ @machine, "vagrant", "/tmp/vagrant", {})
20
+ end
21
+ end
22
+
23
+ describe "mount_vmware_shared_folder" do
24
+ it "should run script with vmware paths" do
25
+ @communicator.expects(:execute).with do |script, options|
26
+ expect(script).to include("$VmProviderUncPath = \"\\\\vmware-host\\Shared Folders\\vagrant\"")
27
+ end
28
+
29
+ VagrantWindows::Guest::Cap::MountSharedFolder.mount_vmware_shared_folder(
30
+ @machine, "vagrant", "/tmp/vagrant", {})
31
+ end
32
+ end
33
+
34
+ end
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-windows
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Paul Morton
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-09-12 00:00:00.000000000 Z
12
+ date: 2013-09-16 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: winrm
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ~>
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ~>
25
28
  - !ruby/object:Gem::Version
@@ -27,20 +30,23 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: rake
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - '>='
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: '0'
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - '>='
43
+ - - ! '>='
39
44
  - !ruby/object:Gem::Version
40
45
  version: '0'
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: rspec-core
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
51
  - - ~>
46
52
  - !ruby/object:Gem::Version
@@ -48,6 +54,7 @@ dependencies:
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
59
  - - ~>
53
60
  - !ruby/object:Gem::Version
@@ -55,6 +62,7 @@ dependencies:
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: rspec-expectations
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
67
  - - ~>
60
68
  - !ruby/object:Gem::Version
@@ -62,6 +70,7 @@ dependencies:
62
70
  type: :development
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
75
  - - ~>
67
76
  - !ruby/object:Gem::Version
@@ -69,6 +78,7 @@ dependencies:
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: rspec-mocks
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
83
  - - ~>
74
84
  - !ruby/object:Gem::Version
@@ -76,6 +86,7 @@ dependencies:
76
86
  type: :development
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
91
  - - ~>
81
92
  - !ruby/object:Gem::Version
@@ -83,15 +94,17 @@ dependencies:
83
94
  - !ruby/object:Gem::Dependency
84
95
  name: simplecov
85
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
86
98
  requirements:
87
- - - '>='
99
+ - - ! '>='
88
100
  - !ruby/object:Gem::Version
89
101
  version: '0'
90
102
  type: :development
91
103
  prerelease: false
92
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
93
106
  requirements:
94
- - - '>='
107
+ - - ! '>='
95
108
  - !ruby/object:Gem::Version
96
109
  version: '0'
97
110
  description: Windows Guest Support for Vagrant
@@ -101,6 +114,7 @@ executables: []
101
114
  extensions: []
102
115
  extra_rdoc_files: []
103
116
  files:
117
+ - CHANGELOG.md
104
118
  - coverage/assets/0.7.1/application.css
105
119
  - coverage/assets/0.7.1/application.js
106
120
  - coverage/assets/0.7.1/fancybox/blank.gif
@@ -153,8 +167,7 @@ files:
153
167
  - lib/vagrant-windows/guest/cap/change_host_name.rb
154
168
  - lib/vagrant-windows/guest/cap/configure_networks.rb
155
169
  - lib/vagrant-windows/guest/cap/halt.rb
156
- - lib/vagrant-windows/guest/cap/mount_virtualbox_shared_folder.rb
157
- - lib/vagrant-windows/guest/cap/mount_vmware_shared_folder.rb
170
+ - lib/vagrant-windows/guest/cap/mount_shared_folder.rb
158
171
  - lib/vagrant-windows/guest/windows.rb
159
172
  - lib/vagrant-windows/helper.rb
160
173
  - lib/vagrant-windows/monkey_patches/lib/vagrant/machine.rb
@@ -170,8 +183,7 @@ files:
170
183
  - lib/vagrant-windows/scripts/cheftask.xml.erb
171
184
  - lib/vagrant-windows/scripts/cheftaskrun.ps1.erb
172
185
  - lib/vagrant-windows/scripts/command_alias.ps1
173
- - lib/vagrant-windows/scripts/mount_volume.virtualbox.ps1.erb
174
- - lib/vagrant-windows/scripts/mount_volume.vmware.ps1.erb
186
+ - lib/vagrant-windows/scripts/mount_volume.ps1.erb
175
187
  - lib/vagrant-windows/scripts/set_work_network.ps1
176
188
  - lib/vagrant-windows/scripts/winrs_v3_get_adapters.ps1
177
189
  - lib/vagrant-windows/version.rb
@@ -183,34 +195,43 @@ files:
183
195
  - spec/vagrant-windows/config_spec.rb
184
196
  - spec/vagrant-windows/guestnetwork_spec.rb
185
197
  - spec/vagrant-windows/helper_spec.rb
198
+ - spec/vagrant-windows/mount_shared_folder_spec.rb
186
199
  - spec/vagrant-windows/winrmcommunicator_spec.rb
187
200
  - vagrant-windows.gemspec
201
+ - .DS_Store
188
202
  - .gitignore
189
203
  - .travis.yml
190
204
  - coverage/.last_run.json
191
205
  - coverage/.resultset.json
192
206
  homepage: ''
193
207
  licenses: []
194
- metadata: {}
195
208
  post_install_message:
196
209
  rdoc_options: []
197
210
  require_paths:
198
211
  - lib
199
212
  required_ruby_version: !ruby/object:Gem::Requirement
213
+ none: false
200
214
  requirements:
201
- - - '>='
215
+ - - ! '>='
202
216
  - !ruby/object:Gem::Version
203
217
  version: '0'
218
+ segments:
219
+ - 0
220
+ hash: 1712186085374339877
204
221
  required_rubygems_version: !ruby/object:Gem::Requirement
222
+ none: false
205
223
  requirements:
206
- - - '>='
224
+ - - ! '>='
207
225
  - !ruby/object:Gem::Version
208
226
  version: '0'
227
+ segments:
228
+ - 0
229
+ hash: 1712186085374339877
209
230
  requirements: []
210
231
  rubyforge_project:
211
- rubygems_version: 2.0.3
232
+ rubygems_version: 1.8.23
212
233
  signing_key:
213
- specification_version: 4
234
+ specification_version: 3
214
235
  summary: A small gem that adds windows guest support to vagrant, uses WinRM as the
215
236
  Communication Channel
216
237
  test_files:
@@ -218,4 +239,5 @@ test_files:
218
239
  - spec/vagrant-windows/config_spec.rb
219
240
  - spec/vagrant-windows/guestnetwork_spec.rb
220
241
  - spec/vagrant-windows/helper_spec.rb
242
+ - spec/vagrant-windows/mount_shared_folder_spec.rb
221
243
  - spec/vagrant-windows/winrmcommunicator_spec.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: cecfc851c351d99894540e03b595c9ed93fb313b
4
- data.tar.gz: 325c6d920df52dc61f4db48e64337b88480a1b0d
5
- SHA512:
6
- metadata.gz: c5d93cd182875294ee9c50911b272363752039d8ab1ccae5c620291b109eb7c04a3ec8073901982e64fa040b04678197936fc8f2fe97d925ebb71fb8c230c438
7
- data.tar.gz: 9932265ce43b14f7b942146291e1696d861c2070d8b79b147bda0b02bc4e41ac486b8996e20fac232802ddea0b083f276e2dddd7f7692cd5e49a711033fc2582
@@ -1,17 +0,0 @@
1
- require_relative '../../helper'
2
-
3
- module VagrantWindows
4
- module Guest
5
- module Cap
6
- class MountVirtualBoxSharedFolder
7
-
8
- def self.mount_virtualbox_shared_folder(machine, name, guestpath, options)
9
- share_name = VagrantWindows::Helper.win_friendly_share_id(name)
10
- mount_script = VagrantWindows.load_script_template("mount_volume.virtualbox.ps1",
11
- :options => {:mount_point => guestpath, :share_name => share_name})
12
- machine.communicate.execute(mount_script, {:shell => :powershell})
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,15 +0,0 @@
1
- module VagrantWindows
2
- module Guest
3
- module Cap
4
- class MountVMwareSharedFolder
5
-
6
- def self.mount_vmware_shared_folder(machine, name, guestpath, options)
7
- share_name = VagrantWindows::Helper.win_friendly_share_id(name)
8
- mount_script = VagrantWindows.load_script_template("mount_volume.vmware.ps1",
9
- :options => {:mount_point => guestpath, :share_name => share_name})
10
- machine.communicate.execute(mount_script, {:shell => :powershell})
11
- end
12
- end
13
- end
14
- end
15
- end
@@ -1,49 +0,0 @@
1
-
2
- function Test-ReparsePoint([string]$path) {
3
- $file = Get-Item $path -Force -ea 0
4
- return [bool]($file.Attributes -band [IO.FileAttributes]::ReparsePoint)
5
- }
6
-
7
-
8
- $MountPoint = [System.IO.Path]::GetFullPath("<%= options[:mount_point] %>")
9
- $ShareName = "<%= options[:share_name] %>"
10
-
11
- # https://github.com/BIAINC/vagrant-windows/issues/4
12
- # Not sure why this works, but it does.
13
-
14
- & net use $ShareName 2>&1 | Out-Null
15
-
16
- Write-Debug "Attempting to mount $ShareName to $MountPoint"
17
- if( (Test-Path "$MountPoint") -and (Test-ReparsePoint "$MountPoint") )
18
- {
19
- Write-Debug "Junction already exists, so I will delete it"
20
- # Powershell refuses to delete junctions, oh well use cmd
21
- cmd /c rd "$MountPoint"
22
-
23
- if ( $LASTEXITCODE -ne 0 )
24
- {
25
- Write-Error "Failed to delete symbolic link at $MountPoint"
26
- exit 1
27
- }
28
-
29
- }
30
- elseif(Test-Path $MountPoint)
31
- {
32
- Write-Debug "Mount point already exists and is not a symbolic link"
33
- exit 1
34
- }
35
-
36
- $BaseDirectory = [System.IO.Path]::GetDirectoryName($MountPoint)
37
-
38
- if (-not (Test-Path $BaseDirectory))
39
- {
40
- Write-Debug "Creating parent directory for mount point $BaseDirectory"
41
- New-Item $BaseDirectory -Type Directory -Force | Out-Null
42
- }
43
-
44
- cmd /c mklink /D "$MountPoint" "\\vboxsrv\$ShareName" | out-null
45
-
46
- if ( $LASTEXITCODE -ne 0 )
47
- {
48
- exit 1
49
- }