vagrant-winrm-syncedfolders 0.1.0 → 1.0.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/.rubocop.yml +2 -15
- data/CHANGELOG.md +8 -0
- data/Gemfile +12 -12
- data/README.md +14 -4
- data/lib/vagrant-winrm-syncedfolders.rb +13 -14
- data/lib/vagrant-winrm-syncedfolders/plugin.rb +30 -24
- data/lib/vagrant-winrm-syncedfolders/synced_folder.rb +51 -46
- data/lib/vagrant-winrm-syncedfolders/version.rb +1 -1
- data/vagrant-winrm-syncedfolders.gemspec +5 -1
- metadata +18 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 650f7f92fdc8fec5ba9506f1b3671501291fabec
|
4
|
+
data.tar.gz: d0df2f6eed24f41cbff7134e5847b1e09cb90dd3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d09172db6e8d2c63c630438d787bd68893593aee69d050d224e40e4c5a0b72b7b943c8bf9471093b2bc7d45ea0e6a1fadf3bd5a97bac110f75b14abee15b4dc
|
7
|
+
data.tar.gz: e7c417bdb5dd358a5153e5763f838afa6373724556abf5df9ec1e9b7e71089920dcceb5ad25c4bfda42f4175d4ef448fd08970afe12cff9888e6eba40e475ea7
|
data/.rubocop.yml
CHANGED
@@ -1,24 +1,11 @@
|
|
1
|
-
AllCops:
|
2
|
-
Exclude:
|
3
|
-
- '*.gemspec'
|
4
|
-
|
5
1
|
Metrics/LineLength:
|
6
2
|
Max: 120
|
7
3
|
|
8
|
-
|
9
|
-
|
4
|
+
StringLiterals:
|
5
|
+
EnforcedStyle: double_quotes
|
10
6
|
|
11
7
|
Style/Documentation:
|
12
8
|
Enabled: false
|
13
9
|
|
14
|
-
Metrics/MethodLength:
|
15
|
-
Max: 20
|
16
|
-
|
17
|
-
StringLiterals:
|
18
|
-
EnforcedStyle: double_quotes
|
19
|
-
|
20
10
|
Style/FileName:
|
21
11
|
Enabled: false
|
22
|
-
|
23
|
-
Metrics/AbcSize:
|
24
|
-
Max: 100
|
data/CHANGELOG.md
ADDED
data/Gemfile
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
source "https://rubygems.org"
|
2
|
-
|
3
|
-
# Specify your gem's dependencies in vagrant-orchestrate.gemspec
|
4
|
-
gemspec
|
5
|
-
|
6
|
-
group :development do
|
7
|
-
gem "vagrant", git: "https://github.com/mitchellh/vagrant.git", ref: "v1.7.
|
8
|
-
end
|
9
|
-
|
10
|
-
group :plugins do
|
11
|
-
gem "vagrant-winrm-syncedfolders", path: "."
|
12
|
-
end
|
1
|
+
source "https://rubygems.org"
|
2
|
+
|
3
|
+
# Specify your gem's dependencies in vagrant-orchestrate.gemspec
|
4
|
+
gemspec
|
5
|
+
|
6
|
+
group :development do
|
7
|
+
gem "vagrant", git: "https://github.com/mitchellh/vagrant.git", ref: "v1.7.4"
|
8
|
+
end
|
9
|
+
|
10
|
+
group :plugins do
|
11
|
+
gem "vagrant-winrm-syncedfolders", path: "."
|
12
|
+
end
|
data/README.md
CHANGED
@@ -1,22 +1,32 @@
|
|
1
1
|
# vagrant-winrm-syncedfolders
|
2
2
|
|
3
|
-
Vagrant plugin that allows you to use WinRM as a folder synchronization mechanism.
|
3
|
+
vagrant-winrm-syncedfolders is a Vagrant plugin that allows you to use WinRM as a folder synchronization mechanism.
|
4
4
|
|
5
|
-
*Limitations:* The WinRM communicator that is used to perform the folder synchronization is known to be slow for large
|
5
|
+
*Limitations:* The WinRM communicator that is used to perform the folder synchronization is known to be slow for large directories.
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
9
|
+
*Note:* vagrant-winrm-syncedfolders versions 1.0.0 and later *only* supports
|
10
|
+
Vagrant 1.7.4 and later, due to an issue with the version of `winrm-fs`
|
11
|
+
bundled with the installer.
|
12
|
+
|
13
|
+
Vagrant 1.7.4 users can install this plugin via:
|
14
|
+
|
9
15
|
vagrant plugin install vagrant-winrm-syncedfolders
|
10
16
|
|
17
|
+
Vagrant 1.7.2 users will need to continue using an old version of the plugin via:
|
18
|
+
|
19
|
+
vagrant plugin install vagrant-winrm-syncedfolders --plugin-version 0.1.0
|
20
|
+
|
11
21
|
## Usage
|
12
22
|
|
13
23
|
Upon installation of this plugin the priority order of synced folders for Windows guests will be as follows:
|
14
24
|
|
15
|
-
- SMB
|
25
|
+
- SMB (Windows host only)
|
16
26
|
- WinRM
|
17
27
|
- Rsync
|
18
28
|
|
19
|
-
It is also possible to force a synced folder to use the WinRM:
|
29
|
+
It is also possible to force a synced folder to use the WinRM folder sync:
|
20
30
|
|
21
31
|
config.vm.synced_folder ".", "/vagrant", type: "winrm"
|
22
32
|
|
@@ -1,14 +1,13 @@
|
|
1
|
-
require "pathname"
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
module
|
6
|
-
|
7
|
-
#
|
8
|
-
#
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
end
|
1
|
+
require "pathname"
|
2
|
+
require "vagrant-winrm-syncedfolders/plugin"
|
3
|
+
|
4
|
+
module VagrantPlugins
|
5
|
+
module SyncedFolderWinRM
|
6
|
+
# This returns the path to the source of this plugin.
|
7
|
+
#
|
8
|
+
# @return [Pathname]
|
9
|
+
def self.source_root
|
10
|
+
@source_root ||= Pathname.new(File.expand_path("../../", __FILE__))
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -1,24 +1,30 @@
|
|
1
|
-
require "vagrant"
|
2
|
-
|
3
|
-
module VagrantPlugins
|
4
|
-
module SyncedFolderWinRM
|
5
|
-
# This plugin implements WinRM synced folders.
|
6
|
-
class Plugin < Vagrant.plugin("2")
|
7
|
-
name "WinRM synced folders"
|
8
|
-
description <<-EOF
|
9
|
-
The WinRM synced folders plugin enables you to use WinRM as a mechanism
|
10
|
-
to transfer files to a guest machine. There are known limitations to this
|
11
|
-
mechanism, most notably that file tranfer is slow for large numbers of files.
|
12
|
-
EOF
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
end
|
1
|
+
require "vagrant"
|
2
|
+
|
3
|
+
module VagrantPlugins
|
4
|
+
module SyncedFolderWinRM
|
5
|
+
# This plugin implements WinRM synced folders.
|
6
|
+
class Plugin < Vagrant.plugin("2")
|
7
|
+
name "WinRM synced folders"
|
8
|
+
description <<-EOF
|
9
|
+
The WinRM synced folders plugin enables you to use WinRM as a mechanism
|
10
|
+
to transfer files to a guest machine. There are known limitations to this
|
11
|
+
mechanism, most notably that file tranfer is slow for large numbers of files.
|
12
|
+
EOF
|
13
|
+
|
14
|
+
# The 6 below represents priority. Choosing a value of 6 puts it right in between
|
15
|
+
# the built in synced folder implementations of SMB (7) and RSync (5), which is
|
16
|
+
# useful since the SMB implementation has some non-trivial prerequisites and the
|
17
|
+
# RSync implementation isn't guaranteed to work on Windows natively. This provides
|
18
|
+
# a nice way to fall back to something that is pretty sure to work, with the cost
|
19
|
+
# being slower transfer times.
|
20
|
+
synced_folder("winrm", 6) do
|
21
|
+
require_relative "synced_folder"
|
22
|
+
init!
|
23
|
+
SyncedFolder
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.init!
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -1,46 +1,51 @@
|
|
1
|
-
require "log4r"
|
2
|
-
|
3
|
-
require "vagrant/util/retryable"
|
4
|
-
|
5
|
-
module VagrantPlugins
|
6
|
-
module SyncedFolderWinRM
|
7
|
-
class SyncedFolder < Vagrant.plugin("2", :synced_folder)
|
8
|
-
include Vagrant::Util::Retryable
|
9
|
-
|
10
|
-
def initialize(*args)
|
11
|
-
super
|
12
|
-
@logger = Log4r::Logger.new("vagrant::synced_folders::winrm")
|
13
|
-
end
|
14
|
-
|
15
|
-
def usable?(machine, _raise_error = false)
|
16
|
-
machine.config.vm.communicator == :winrm
|
17
|
-
end
|
18
|
-
|
19
|
-
def prepare(_machine, _folders, _opts)
|
20
|
-
end
|
21
|
-
|
22
|
-
def enable(machine, folders, _nfsopts)
|
23
|
-
folders.each do |_id, data|
|
24
|
-
hostpath = File.expand_path(data[:hostpath], machine.env.root_path)
|
25
|
-
guestpath = data[:guestpath]
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
end
|
1
|
+
require "log4r"
|
2
|
+
|
3
|
+
require "vagrant/util/retryable"
|
4
|
+
|
5
|
+
module VagrantPlugins
|
6
|
+
module SyncedFolderWinRM
|
7
|
+
class SyncedFolder < Vagrant.plugin("2", :synced_folder)
|
8
|
+
include Vagrant::Util::Retryable
|
9
|
+
|
10
|
+
def initialize(*args)
|
11
|
+
super
|
12
|
+
@logger = Log4r::Logger.new("vagrant::synced_folders::winrm")
|
13
|
+
end
|
14
|
+
|
15
|
+
def usable?(machine, _raise_error = false)
|
16
|
+
machine.config.vm.communicator == :winrm
|
17
|
+
end
|
18
|
+
|
19
|
+
def prepare(_machine, _folders, _opts)
|
20
|
+
end
|
21
|
+
|
22
|
+
def enable(machine, folders, _nfsopts)
|
23
|
+
folders.each do |_id, data|
|
24
|
+
hostpath = File.expand_path(data[:hostpath], machine.env.root_path)
|
25
|
+
guestpath = data[:guestpath]
|
26
|
+
sync machine, hostpath, guestpath
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def cleanup(_machine, _opts)
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def sync(machine, hostpath, guestpath)
|
36
|
+
machine.ui.info("Uploading with WinRM: #{hostpath} => #{guestpath}")
|
37
|
+
machine.communicate.tap do |comm|
|
38
|
+
# When syncing many files, we've see SEC_E_INVALID_TOKEN errors
|
39
|
+
# that appear to be transient (try again and it goes away). Let's
|
40
|
+
# retry a few times to add some robustness.
|
41
|
+
attempts = 1
|
42
|
+
retryable(tries: 3, sleep: 1) do
|
43
|
+
@logger.debug("Attempting WinRM upload attempt number #{attempts}")
|
44
|
+
comm.upload(hostpath, guestpath)
|
45
|
+
attempts += 1
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = VagrantPlugins::SyncedFolderWinRM::VERSION
|
9
9
|
spec.authors = ["Christopher Baldauf"]
|
10
10
|
spec.email = ["cbaldauf@cimpress.com"]
|
11
|
-
spec.summary =
|
11
|
+
spec.summary = "Use WinRM synced folders for Windows guests using the WinRM communcator"
|
12
12
|
spec.homepage = "https://github.com/Cimpress-MCP/vagrant-winrm-syncedfolders"
|
13
13
|
spec.license = "Apache 2.0"
|
14
14
|
|
@@ -17,6 +17,10 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
|
+
# 0.2.0 bundled with vagrant 1.7.4 has a known bug
|
21
|
+
# we can force this dependency as a stop-gap [GH-3]
|
22
|
+
spec.add_runtime_dependency "winrm-fs", "~> 0.2.2"
|
23
|
+
|
20
24
|
spec.add_development_dependency "bundler", "~> 1.6"
|
21
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
22
26
|
spec.add_development_dependency "rspec", "~> 2.14"
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-winrm-syncedfolders
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christopher Baldauf
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: winrm-fs
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.2.2
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.2.2
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -75,6 +89,7 @@ extra_rdoc_files: []
|
|
75
89
|
files:
|
76
90
|
- ".gitignore"
|
77
91
|
- ".rubocop.yml"
|
92
|
+
- CHANGELOG.md
|
78
93
|
- Gemfile
|
79
94
|
- LICENSE
|
80
95
|
- README.md
|
@@ -105,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
105
120
|
version: '0'
|
106
121
|
requirements: []
|
107
122
|
rubyforge_project:
|
108
|
-
rubygems_version: 2.
|
123
|
+
rubygems_version: 2.4.8
|
109
124
|
signing_key:
|
110
125
|
specification_version: 4
|
111
126
|
summary: Use WinRM synced folders for Windows guests using the WinRM communcator
|