vagrant-winrm-syncedfolders 0.1.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|