vagrant-winrm-syncedfolders 0.1.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 +7 -0
- data/.gitignore +17 -0
- data/.rubocop.yml +24 -0
- data/Gemfile +12 -0
- data/LICENSE +13 -0
- data/README.md +32 -0
- data/Rakefile +7 -0
- data/Vagrantfile +8 -0
- data/lib/vagrant-winrm-syncedfolders.rb +14 -0
- data/lib/vagrant-winrm-syncedfolders/plugin.rb +24 -0
- data/lib/vagrant-winrm-syncedfolders/synced_folder.rb +46 -0
- data/lib/vagrant-winrm-syncedfolders/version.rb +5 -0
- data/vagrant-winrm-syncedfolders.gemspec +24 -0
- metadata +112 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 868b9258f8e103e9dc60e643f19788dab619c748
|
4
|
+
data.tar.gz: 82982f674a94cf23045f83e09966673ec3374882
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: aafb45924e7bf8c69cfe4b77ac1ebe616c90be8ab32a498f42037a25aa926a66aac1d4cf04979c4517aa308c857685b2f7ce2549a89693fdce2e767ee3d6bd99
|
7
|
+
data.tar.gz: 504d785790e6a05c532f7d2ed07b97c0401622a339bf694278ba5f6a9cfd854eace513d7bf3d4c197ed90471529a35ddb690673b61535218e6148966ca4ab199
|
data/.gitignore
ADDED
data/.rubocop.yml
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
AllCops:
|
2
|
+
Exclude:
|
3
|
+
- '*.gemspec'
|
4
|
+
|
5
|
+
Metrics/LineLength:
|
6
|
+
Max: 120
|
7
|
+
|
8
|
+
Metrics/ClassLength:
|
9
|
+
Max: 150
|
10
|
+
|
11
|
+
Style/Documentation:
|
12
|
+
Enabled: false
|
13
|
+
|
14
|
+
Metrics/MethodLength:
|
15
|
+
Max: 20
|
16
|
+
|
17
|
+
StringLiterals:
|
18
|
+
EnforcedStyle: double_quotes
|
19
|
+
|
20
|
+
Style/FileName:
|
21
|
+
Enabled: false
|
22
|
+
|
23
|
+
Metrics/AbcSize:
|
24
|
+
Max: 100
|
data/Gemfile
ADDED
@@ -0,0 +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.2"
|
8
|
+
end
|
9
|
+
|
10
|
+
group :plugins do
|
11
|
+
gem "vagrant-winrm-syncedfolders", path: "."
|
12
|
+
end
|
data/LICENSE
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
Copyright 2015 Cimpress
|
2
|
+
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
you may not use this file except in compliance with the License.
|
5
|
+
You may obtain a copy of the License at
|
6
|
+
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
See the License for the specific language governing permissions and
|
13
|
+
limitations under the License.
|
data/README.md
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# vagrant-winrm-syncedfolders
|
2
|
+
|
3
|
+
Vagrant plugin that allows you to use WinRM as a folder synchronization mechanism.
|
4
|
+
|
5
|
+
*Limitations:* The WinRM communicator that is used to perform the folder synchronization is known to be slow for large numbers of files.
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
vagrant plugin install vagrant-winrm-syncedfolders
|
10
|
+
|
11
|
+
## Usage
|
12
|
+
|
13
|
+
Upon installation of this plugin the priority order of synced folders for Windows guests will be as follows:
|
14
|
+
|
15
|
+
- SMB
|
16
|
+
- WinRM
|
17
|
+
- Rsync
|
18
|
+
|
19
|
+
It is also possible to force a synced folder to use the WinRM:
|
20
|
+
|
21
|
+
config.vm.synced_folder ".", "/vagrant", type: "winrm"
|
22
|
+
|
23
|
+
## Contributing
|
24
|
+
|
25
|
+
In order to run this locally, the Vagrantfile is set to use the [boxcutter](https://github.com/boxcutter/windows)/eval-win7x86-enterprise box. If you don't already have this installed, here are some [instructions](https://github.com/tknerr/vagrant-managed-servers/pull/48).
|
26
|
+
|
27
|
+
1. Fork it ( https://github.com/Cimpress-MCP/vagrant-winrm-syncedfolders/fork )
|
28
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
29
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
30
|
+
4. Run the lint and build locally (`bundle exec rake build`)
|
31
|
+
5. Push to the branch (`git push origin my-new-feature`)
|
32
|
+
6. Create a new Pull Request
|
data/Rakefile
ADDED
data/Vagrantfile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require "pathname"
|
2
|
+
|
3
|
+
require "vagrant-winrm-syncedfolders/plugin"
|
4
|
+
|
5
|
+
module VagrantPlugins
|
6
|
+
module SyncedFolderWinRM
|
7
|
+
# This returns the path to the source of this plugin.
|
8
|
+
#
|
9
|
+
# @return [Pathname]
|
10
|
+
def self.source_root
|
11
|
+
@source_root ||= Pathname.new(File.expand_path("../../", __FILE__))
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,24 @@
|
|
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
|
+
synced_folder("winrm", 6) do
|
15
|
+
require_relative "synced_folder"
|
16
|
+
init!
|
17
|
+
SyncedFolder
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.init!
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,46 @@
|
|
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
|
+
machine.ui.info("Uploading with WinRM: #{hostpath} => #{guestpath}")
|
28
|
+
machine.communicate.tap do |comm|
|
29
|
+
# When syncing many files, we've see SEC_E_INVALID_TOKEN errors
|
30
|
+
# that appear to be transient (try again and it goes away). Let's
|
31
|
+
# retry a few times to add some robustness.
|
32
|
+
attempts = 1
|
33
|
+
retryable(tries: 3, sleep: 1) do
|
34
|
+
@logger.debug("Attempting WinRM upload attempt number #{attempts}")
|
35
|
+
comm.upload(hostpath, guestpath)
|
36
|
+
attempts += 1
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def cleanup(_machine, _opts)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require "vagrant-winrm-syncedfolders/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "vagrant-winrm-syncedfolders"
|
8
|
+
spec.version = VagrantPlugins::SyncedFolderWinRM::VERSION
|
9
|
+
spec.authors = ["Christopher Baldauf"]
|
10
|
+
spec.email = ["cbaldauf@cimpress.com"]
|
11
|
+
spec.summary = %q{Use WinRM synced folders for Windows guests using the WinRM communcator}
|
12
|
+
spec.homepage = "https://github.com/Cimpress-MCP/vagrant-winrm-syncedfolders"
|
13
|
+
spec.license = "Apache 2.0"
|
14
|
+
|
15
|
+
spec.files = `git ls-files -z`.split("\x0")
|
16
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
+
spec.require_paths = ["lib"]
|
19
|
+
|
20
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
21
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
22
|
+
spec.add_development_dependency "rspec", "~> 2.14"
|
23
|
+
spec.add_development_dependency "rubocop", "~> 0.28"
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: vagrant-winrm-syncedfolders
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Christopher Baldauf
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-05-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.6'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.14'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.14'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rubocop
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.28'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.28'
|
69
|
+
description:
|
70
|
+
email:
|
71
|
+
- cbaldauf@cimpress.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- ".gitignore"
|
77
|
+
- ".rubocop.yml"
|
78
|
+
- Gemfile
|
79
|
+
- LICENSE
|
80
|
+
- README.md
|
81
|
+
- Rakefile
|
82
|
+
- Vagrantfile
|
83
|
+
- lib/vagrant-winrm-syncedfolders.rb
|
84
|
+
- lib/vagrant-winrm-syncedfolders/plugin.rb
|
85
|
+
- lib/vagrant-winrm-syncedfolders/synced_folder.rb
|
86
|
+
- lib/vagrant-winrm-syncedfolders/version.rb
|
87
|
+
- vagrant-winrm-syncedfolders.gemspec
|
88
|
+
homepage: https://github.com/Cimpress-MCP/vagrant-winrm-syncedfolders
|
89
|
+
licenses:
|
90
|
+
- Apache 2.0
|
91
|
+
metadata: {}
|
92
|
+
post_install_message:
|
93
|
+
rdoc_options: []
|
94
|
+
require_paths:
|
95
|
+
- lib
|
96
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - ">="
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0'
|
106
|
+
requirements: []
|
107
|
+
rubyforge_project:
|
108
|
+
rubygems_version: 2.2.3
|
109
|
+
signing_key:
|
110
|
+
specification_version: 4
|
111
|
+
summary: Use WinRM synced folders for Windows guests using the WinRM communcator
|
112
|
+
test_files: []
|