vagrant-unbundled 2.3.3.0 → 2.3.6.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/.gitignore +3 -0
- data/CHANGELOG.md +42 -0
- data/Gemfile.lock +32 -32
- data/Makefile +53 -9
- data/contrib/bash/completion.sh +15 -0
- data/go.mod +1 -1
- data/go.sum +2 -10
- data/lib/vagrant/action/builtin/box_add.rb +16 -6
- data/lib/vagrant/environment.rb +1 -1
- data/lib/vagrant/errors.rb +8 -0
- data/lib/vagrant/plugin/v2/config.rb +0 -5
- data/lib/vagrant/shared_helpers.rb +21 -0
- data/lib/vagrant/util/file_mutex.rb +47 -0
- data/lib/vagrant/util/platform.rb +8 -2
- data/lib/vagrant/util.rb +1 -0
- data/lib/vagrant.rb +1 -0
- data/pkg/vagrant-unbundled-2.3.3.0.gem +0 -0
- data/plugins/commands/box/command/outdated.rb +1 -1
- data/plugins/commands/serve/command.rb +22 -24
- data/plugins/commands/serve/constants.rb +8 -0
- data/plugins/communicators/ssh/communicator.rb +11 -20
- data/plugins/hosts/arch/host.rb +1 -1
- data/plugins/kernel_v2/config/vm.rb +0 -9
- data/plugins/providers/docker/action.rb +1 -2
- data/plugins/providers/docker/driver.rb +17 -1
- data/plugins/providers/hyperv/driver.rb +6 -1
- data/plugins/providers/hyperv/scripts/set_enhanced_session_transport_type.ps1 +11 -2
- data/plugins/providers/hyperv/scripts/utils/VagrantVM/VagrantVM.psm1 +15 -0
- data/plugins/providers/virtualbox/action/check_virtualbox.rb +0 -6
- data/plugins/providers/virtualbox/action/network.rb +15 -0
- data/plugins/providers/virtualbox/driver/base.rb +47 -1
- data/plugins/providers/virtualbox/driver/version_7_0.rb +24 -7
- data/plugins/provisioners/ansible/cap/guest/debian/ansible_install.rb +5 -1
- data/plugins/provisioners/ansible/cap/guest/posix/ansible_installed.rb +2 -2
- data/plugins/provisioners/ansible/provisioner/guest.rb +1 -1
- data/plugins/provisioners/ansible/provisioner/host.rb +3 -2
- data/plugins/synced_folders/rsync/helper.rb +3 -6
- data/templates/commands/init/Vagrantfile.erb +7 -0
- data/templates/locales/en.yml +12 -0
- data/tools.go +10 -0
- data/vagrant.gemspec +9 -9
- data/version.txt +1 -1
- metadata +24 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 56801a2f5c2faf956d305ef49f1513549a059133c9131e3a588d7c985e725d6d
|
4
|
+
data.tar.gz: f10390220e89207bd05dd07deef7c004d745338c985c8058d9faa34ed9cedc6f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b443c030b4db01b126dc84ac6478db69418c09177a41103683eb08a097b85c5346497bc3d3c4887a6a1c0c1b068194587a18a4c19c18d4e51b3393790dee45a3
|
7
|
+
data.tar.gz: 5dc9803a4af2fc545dc209382d8194651455ed300bcec8621f9672d69d36b9ed27ae9b97a0017afeb2991e65c784e3363ca8215de7e5479d497907d9ef143c8f
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,45 @@
|
|
1
|
+
## 2.3.6 (May 19, 2023)
|
2
|
+
|
3
|
+
BUG FIXES:
|
4
|
+
|
5
|
+
- command/serve: Isolate proto constants to file for auto-loading [GH-13165]
|
6
|
+
- core/util: Unlock file prior to deletion [GH-13159]
|
7
|
+
- provider/docker: Attempt using docker command for bridge ip [GH-13153]
|
8
|
+
- provider/virtualbox: Update preferred locale values for driver [GH-13160]
|
9
|
+
|
10
|
+
## 2.3.5 (May 15, 2023)
|
11
|
+
|
12
|
+
BUG FIXES:
|
13
|
+
|
14
|
+
- communicator/ssh: Use netssh builtin keep alive functionality [GH-13069]
|
15
|
+
- communicator/ssh: Update connection settings when using a password to connect ssh [GH-13052]
|
16
|
+
- core: Add a file mutex when downloading box files [GH-13057]
|
17
|
+
- guest/arch: Support differentiating between Artix and Arch Linux [GH-13055]
|
18
|
+
- host/windows: Get state of Windows feature "Microsoft-Hyper-V-Hypervisor" [GH-11933]
|
19
|
+
- provider/docker: Ignore inactive docker containers when assigning ports [GH-13146]
|
20
|
+
- provider/docker: Sync folders before preparing nfs settings [GH-13149]
|
21
|
+
- provider/virtualbox: De-duplicate machine port forward info [GH-13056]
|
22
|
+
- provider/virtualbox: Remove check for hyperv being enabled when verifying virtualbox is usable on windows [GH-13090]
|
23
|
+
- provider/virtualbox: Validate LANG value when possible [GH-13150]
|
24
|
+
- provider/hyperv: Check for hyper-v feature "EnhancedSessionTransportType" [GH-12280]
|
25
|
+
- provisioner/ansible: Fix installing Ansible provisioner with version and pip [GH-13054]
|
26
|
+
- synced_folders/rsync: allow rsync-auto to also ignore relative paths [GH-13066]
|
27
|
+
|
28
|
+
NOTE: Vagrant installer packages were updated to Ruby 3
|
29
|
+
|
30
|
+
## 2.3.4 (December 9, 2022)
|
31
|
+
|
32
|
+
IMPROVEMENTS:
|
33
|
+
|
34
|
+
- host/darwin: Isolate loading incompatible libraries to support EOL platforms [GH-13022]
|
35
|
+
- provider/virtualbox: Detect network type when not provided [GH-13024]
|
36
|
+
|
37
|
+
BUG FIXES:
|
38
|
+
|
39
|
+
- host/windows: Add fix for Powershell 7.3.0 [GH-13006]
|
40
|
+
- provider/virtualbox: Adjust hostnet DHCP configuration, ignore invalid devices [GH-13004]
|
41
|
+
- provisioner/ansible: Fix install package names on older debian (and derivatives) versions [GH-13017]
|
42
|
+
|
1
43
|
## 2.3.3 (November 15, 2022)
|
2
44
|
|
3
45
|
IMPROVEMENTS:
|
data/Gemfile.lock
CHANGED
@@ -12,7 +12,7 @@ GIT
|
|
12
12
|
PATH
|
13
13
|
remote: .
|
14
14
|
specs:
|
15
|
-
vagrant-unbundled (2.3.
|
15
|
+
vagrant-unbundled (2.3.6.0)
|
16
16
|
bcrypt_pbkdf (~> 1.1)
|
17
17
|
childprocess (~> 4.1.0)
|
18
18
|
ed25519 (~> 1.3.0)
|
@@ -20,24 +20,24 @@ PATH
|
|
20
20
|
googleapis-common-protos-types (~> 1.3)
|
21
21
|
grpc
|
22
22
|
hashicorp-checkpoint (~> 0.1.5)
|
23
|
-
i18n (~> 1.
|
23
|
+
i18n (~> 1.12)
|
24
24
|
ipaddr (>= 1.2.4)
|
25
|
-
listen (~> 3.
|
25
|
+
listen (~> 3.7)
|
26
26
|
log4r (~> 1.1.9, < 1.1.11)
|
27
27
|
mime-types (~> 3.3)
|
28
|
-
net-ftp (~> 0.
|
28
|
+
net-ftp (~> 0.2)
|
29
29
|
net-scp (~> 4.0)
|
30
30
|
net-sftp (~> 4.0)
|
31
31
|
net-ssh (~> 7.0)
|
32
32
|
rb-kqueue (~> 0.2.0)
|
33
33
|
rexml (~> 3.2)
|
34
|
-
rgl (~> 0.5.
|
35
|
-
rubyzip (~> 2.
|
34
|
+
rgl (~> 0.5.10)
|
35
|
+
rubyzip (~> 2.3.2)
|
36
36
|
vagrant_cloud (~> 3.0.5)
|
37
|
-
wdm (~> 0.1.
|
38
|
-
winrm (>= 2.3.
|
39
|
-
winrm-elevated (>= 1.2.
|
40
|
-
winrm-fs (>= 1.3.
|
37
|
+
wdm (~> 0.1.1)
|
38
|
+
winrm (>= 2.3.6, < 3.0)
|
39
|
+
winrm-elevated (>= 1.2.3, < 2.0)
|
40
|
+
winrm-fs (>= 1.3.5, < 2.0)
|
41
41
|
|
42
42
|
GEM
|
43
43
|
remote: https://rubygems.org/
|
@@ -45,19 +45,19 @@ GEM
|
|
45
45
|
bcrypt_pbkdf (1.1.0)
|
46
46
|
builder (3.2.4)
|
47
47
|
childprocess (4.1.0)
|
48
|
-
concurrent-ruby (1.
|
49
|
-
date (3.
|
48
|
+
concurrent-ruby (1.2.2)
|
49
|
+
date (3.3.3)
|
50
50
|
diff-lcs (1.5.0)
|
51
51
|
ed25519 (1.3.0)
|
52
|
-
erubi (1.
|
53
|
-
excon (0.
|
52
|
+
erubi (1.12.0)
|
53
|
+
excon (0.104.0)
|
54
54
|
fake_ftp (0.3.0)
|
55
|
-
ffi (1.
|
56
|
-
google-protobuf (3.
|
57
|
-
googleapis-common-protos-types (1.
|
58
|
-
google-protobuf (~> 3.
|
59
|
-
grpc (1.
|
60
|
-
google-protobuf (~> 3.
|
55
|
+
ffi (1.16.3)
|
56
|
+
google-protobuf (3.24.4)
|
57
|
+
googleapis-common-protos-types (1.9.0)
|
58
|
+
google-protobuf (~> 3.18)
|
59
|
+
grpc (1.58.0)
|
60
|
+
google-protobuf (~> 3.23)
|
61
61
|
googleapis-common-protos-types (~> 1.0)
|
62
62
|
grpc-tools (1.50.0)
|
63
63
|
gssapi (1.3.1)
|
@@ -67,10 +67,10 @@ GEM
|
|
67
67
|
rexml (~> 3.0)
|
68
68
|
hashicorp-checkpoint (0.1.5)
|
69
69
|
httpclient (2.8.3)
|
70
|
-
i18n (1.
|
70
|
+
i18n (1.14.1)
|
71
71
|
concurrent-ruby (~> 1.0)
|
72
|
-
ipaddr (1.2.
|
73
|
-
listen (3.
|
72
|
+
ipaddr (1.2.5)
|
73
|
+
listen (3.8.0)
|
74
74
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
75
75
|
rb-inotify (~> 0.9, >= 0.9.10)
|
76
76
|
little-plugger (1.1.4)
|
@@ -78,30 +78,30 @@ GEM
|
|
78
78
|
logging (2.3.1)
|
79
79
|
little-plugger (~> 1.1)
|
80
80
|
multi_json (~> 1.14)
|
81
|
-
mime-types (3.
|
81
|
+
mime-types (3.5.1)
|
82
82
|
mime-types-data (~> 3.2015)
|
83
|
-
mime-types-data (3.
|
83
|
+
mime-types-data (3.2023.1003)
|
84
84
|
multi_json (1.15.0)
|
85
85
|
net-ftp (0.2.0)
|
86
86
|
net-protocol
|
87
87
|
time
|
88
|
-
net-protocol (0.1
|
88
|
+
net-protocol (0.2.1)
|
89
89
|
timeout
|
90
90
|
net-scp (4.0.0)
|
91
91
|
net-ssh (>= 2.6.5, < 8.0.0)
|
92
92
|
net-sftp (4.0.0)
|
93
93
|
net-ssh (>= 5.0.0, < 8.0.0)
|
94
|
-
net-ssh (7.0
|
94
|
+
net-ssh (7.2.0)
|
95
95
|
nori (2.6.0)
|
96
|
-
pairing_heap (
|
96
|
+
pairing_heap (3.0.1)
|
97
97
|
rake (13.0.6)
|
98
98
|
rb-fsevent (0.11.2)
|
99
99
|
rb-inotify (0.10.1)
|
100
100
|
ffi (~> 1.0)
|
101
101
|
rb-kqueue (0.2.8)
|
102
102
|
ffi (>= 0.5.0)
|
103
|
-
rexml (3.2.
|
104
|
-
rgl (0.5.
|
103
|
+
rexml (3.2.6)
|
104
|
+
rgl (0.5.10)
|
105
105
|
pairing_heap (>= 0.3.0)
|
106
106
|
rexml (~> 3.2, >= 3.2.4)
|
107
107
|
stream (~> 0.5.3)
|
@@ -125,9 +125,9 @@ GEM
|
|
125
125
|
rubyzip (2.3.2)
|
126
126
|
stream (0.5.5)
|
127
127
|
thor (0.18.1)
|
128
|
-
time (0.2.
|
128
|
+
time (0.2.2)
|
129
129
|
date
|
130
|
-
timeout (0.
|
130
|
+
timeout (0.4.0)
|
131
131
|
vagrant_cloud (3.0.5)
|
132
132
|
excon (~> 0.73)
|
133
133
|
log4r (~> 1.1.10)
|
data/Makefile
CHANGED
@@ -10,31 +10,75 @@ CGO_ENABLED?=0
|
|
10
10
|
.PHONY: bin
|
11
11
|
bin: # bin creates the binaries for Vagrant for the current platform
|
12
12
|
@test -s "thirdparty/proto/api-common-protos/.git" || { echo "git submodules not initialized, run 'git submodule update --init --recursive' and try again"; exit 1; }
|
13
|
-
CGO_ENABLED=$(CGO_ENABLED) go build -ldflags $(GOLDFLAGS) -gcflags="$(GCFLAGS)" -tags assetsembedded -o ./vagrant ./cmd/vagrant
|
13
|
+
CGO_ENABLED=$(CGO_ENABLED) go build -ldflags $(GOLDFLAGS) -gcflags="$(GCFLAGS)" -tags assetsembedded -o ./bin/vagrant-go ./cmd/vagrant
|
14
14
|
|
15
15
|
.PHONY: debug
|
16
16
|
debug: # debug creates an executable with optimizations off, suitable for debugger attachment
|
17
17
|
GCFLAGS="all=-N -l" $(MAKE) bin
|
18
18
|
|
19
|
+
.PHONY: all
|
20
|
+
all:
|
21
|
+
$(MAKE) bin/windows
|
22
|
+
$(MAKE) bin/linux
|
23
|
+
$(MAKE) bin/darwin
|
24
|
+
|
19
25
|
.PHONY: bin/windows
|
20
|
-
bin/windows:
|
21
|
-
|
22
|
-
|
26
|
+
bin/windows:
|
27
|
+
$(MAKE) bin/windows-amd64
|
28
|
+
$(MAKE) bin/windows-386
|
29
|
+
|
30
|
+
.PHONY: bin/windows-amd64
|
31
|
+
bin/windows-amd64: # create windows binaries
|
32
|
+
@test -s "thirdparty/proto/api-common-protos/.git" || { echo "git submodules not initialized, run 'git submodule update --init --recursive' and try again"; exit 1; }
|
33
|
+
GOOS=windows GOARCH=amd64 CGO_ENABLED=$(CGO_ENABLED) go build -ldflags $(GOLDFLAGS) -tags assetsembedded -o ./bin/vagrant-go_windows_amd64.exe ./cmd/vagrant
|
34
|
+
|
35
|
+
.PHONY: bin/windows-386
|
36
|
+
bin/windows-386: # create windows binaries
|
37
|
+
@test -s "thirdparty/proto/api-common-protos/.git" || { echo "git submodules not initialized, run 'git submodule update --init --recursive' and try again"; exit 1; }
|
38
|
+
GOOS=windows GOARCH=386 CGO_ENABLED=$(CGO_ENABLED) go build -ldflags $(GOLDFLAGS) -tags assetsembedded -o ./bin/vagrant-go_windows_386.exe ./cmd/vagrant
|
23
39
|
|
24
40
|
.PHONY: bin/linux
|
25
|
-
bin/linux:
|
41
|
+
bin/linux:
|
42
|
+
$(MAKE) bin/linux-amd64
|
43
|
+
$(MAKE) bin/linux-386
|
44
|
+
|
45
|
+
.PHONY: bin/linux-amd64
|
46
|
+
bin/linux-amd64: # create Linux binaries
|
26
47
|
@test -s "thirdparty/proto/api-common-protos/.git" || { echo "git submodules not initialized, run 'git submodule update --init --recursive' and try again"; exit 1; }
|
27
|
-
GOOS=linux GOARCH=amd64 $(
|
48
|
+
GOOS=linux GOARCH=amd64 CGO_ENABLED=$(CGO_ENABLED) go build -ldflags $(GOLDFLAGS) -gcflags="$(GCFLAGS)" -tags assetsembedded -o ./bin/vagrant-go_linux_amd64 ./cmd/vagrant
|
28
49
|
|
29
50
|
.PHONY: bin/linux-386
|
30
51
|
bin/linux-386: # create Linux binaries
|
31
52
|
@test -s "thirdparty/proto/api-common-protos/.git" || { echo "git submodules not initialized, run 'git submodule update --init --recursive' and try again"; exit 1; }
|
32
|
-
GOOS=linux GOARCH=386 $(
|
53
|
+
GOOS=linux GOARCH=386 CGO_ENABLED=$(CGO_ENABLED) go build -ldflags $(GOLDFLAGS) -gcflags="$(GCFLAGS)" -tags assetsembedded -o ./bin/vagrant-go_linux_386 ./cmd/vagrant
|
33
54
|
|
34
55
|
.PHONY: bin/darwin
|
35
|
-
bin/darwin:
|
56
|
+
bin/darwin:
|
57
|
+
$(MAKE) bin/darwin-amd64
|
58
|
+
$(MAKE) bin/darwin-arm64
|
59
|
+
$(MAKE) bin/darwin-universal
|
60
|
+
|
61
|
+
.PHONY: bin/darwin-amd64
|
62
|
+
bin/darwin-amd64: # create Darwin binaries
|
63
|
+
@test -s "thirdparty/proto/api-common-protos/.git" || { echo "git submodules not initialized, run 'git submodule update --init --recursive' and try again"; exit 1; }
|
64
|
+
GOOS=darwin GOARCH=amd64 CGO_ENABLED=$(CGO_ENABLED) go build -ldflags $(GOLDFLAGS) -gcflags="$(GCFLAGS)" -tags assetsembedded -o ./bin/vagrant-go_darwin_amd64 ./cmd/vagrant
|
65
|
+
|
66
|
+
.PHONY: bin/darwin-arm64
|
67
|
+
bin/darwin-arm64: # create Darwin binaries
|
36
68
|
@test -s "thirdparty/proto/api-common-protos/.git" || { echo "git submodules not initialized, run 'git submodule update --init --recursive' and try again"; exit 1; }
|
37
|
-
GOOS=darwin GOARCH=
|
69
|
+
GOOS=darwin GOARCH=arm64 CGO_ENABLED=$(CGO_ENABLED) go build -ldflags $(GOLDFLAGS) -gcflags="$(GCFLAGS)" -tags assetsembedded -o ./bin/vagrant-go_darwin_arm64 ./cmd/vagrant
|
70
|
+
|
71
|
+
.PHONY: bin/darwin-universal
|
72
|
+
bin/darwin-universal:
|
73
|
+
@test -s "thirdparty/proto/api-common-protos/.git" || { echo "git submodules not initialized, run 'git submodule update --init --recursive' and try again"; exit 1; }
|
74
|
+
GOOS=darwin GOARCH=arm64 CGO_ENABLED=$(CGO_ENABLED) go build -ldflags $(GOLDFLAGS) -gcflags="$(GCFLAGS)" -tags assetsembedded -o ./bin/.vagrant-go_darwin_arm64 ./cmd/vagrant
|
75
|
+
GOOS=darwin GOARCH=amd64 CGO_ENABLED=$(CGO_ENABLED) go build -ldflags $(GOLDFLAGS) -gcflags="$(GCFLAGS)" -tags assetsembedded -o ./bin/.vagrant-go_darwin_amd64 ./cmd/vagrant
|
76
|
+
go run github.com/randall77/makefat ./bin/vagrant-go_darwin_universal ./bin/.vagrant-go_darwin_arm64 ./bin/.vagrant-go_darwin_amd64
|
77
|
+
rm -f ./bin/.vagrant-go_darwin*
|
78
|
+
|
79
|
+
.PHONY: clean
|
80
|
+
clean:
|
81
|
+
rm -f ./bin/vagrant-go* ./bin/.vagrant-go_darwin*
|
38
82
|
|
39
83
|
.PHONY: test
|
40
84
|
test: # run tests
|
data/contrib/bash/completion.sh
CHANGED
@@ -153,6 +153,21 @@ _vagrant() {
|
|
153
153
|
COMPREPLY=($(compgen -W "${box_list}" -- ${cur}))
|
154
154
|
return 0
|
155
155
|
;;
|
156
|
+
"add")
|
157
|
+
local add_commands="\
|
158
|
+
--name \
|
159
|
+
--checksum \
|
160
|
+
--checksum-type \
|
161
|
+
-c --clean \
|
162
|
+
-f --force \
|
163
|
+
"
|
164
|
+
if [[ $cur == -* ]]; then
|
165
|
+
COMPREPLY=($(compgen -W "${add_commands}" -- ${cur}))
|
166
|
+
else
|
167
|
+
COMPREPLY=($(compgen -o default -- "${cur}"))
|
168
|
+
fi
|
169
|
+
return 0
|
170
|
+
;;
|
156
171
|
*)
|
157
172
|
;;
|
158
173
|
esac
|
data/go.mod
CHANGED
@@ -43,6 +43,7 @@ require (
|
|
43
43
|
github.com/oklog/ulid/v2 v2.0.2
|
44
44
|
github.com/pkg/errors v0.9.1
|
45
45
|
github.com/posener/complete v1.2.3
|
46
|
+
github.com/randall77/makefat v0.0.0-20210315173500-7ddd0e42c844
|
46
47
|
github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966
|
47
48
|
github.com/stretchr/testify v1.7.5
|
48
49
|
github.com/zclconf/go-cty v1.10.0
|
@@ -94,7 +95,6 @@ require (
|
|
94
95
|
github.com/go-git/gcfg v1.5.0 // indirect
|
95
96
|
github.com/go-git/go-billy/v5 v5.0.0 // indirect
|
96
97
|
github.com/go-test/deep v1.0.7 // indirect
|
97
|
-
github.com/gogo/googleapis v1.4.1 // indirect
|
98
98
|
github.com/gogo/protobuf v1.3.2 // indirect
|
99
99
|
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
100
100
|
github.com/golang/protobuf v1.5.2 // indirect
|
data/go.sum
CHANGED
@@ -209,8 +209,6 @@ github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M=
|
|
209
209
|
github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8=
|
210
210
|
github.com/gofrs/flock v0.8.0 h1:MSdYClljsF3PbENUUEx85nkWfJSGfzYI9yEBZOJz6CY=
|
211
211
|
github.com/gofrs/flock v0.8.0/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
|
212
|
-
github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0=
|
213
|
-
github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4=
|
214
212
|
github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
|
215
213
|
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
216
214
|
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
@@ -361,14 +359,6 @@ github.com/hashicorp/hcl/v2 v2.11.1 h1:yTyWcXcm9XB0TEkyU/JCRU6rYy4K+mgLtzn2wlrJb
|
|
361
359
|
github.com/hashicorp/hcl/v2 v2.11.1/go.mod h1:FwWsfWEjyV/CMj8s/gqAuiviY72rJ1/oayI9WftqcKg=
|
362
360
|
github.com/hashicorp/nomad/api v0.0.0-20200814140818-42de70466a9d h1:afuZ/KNbxwUgjEzq2NXO2bRKZgsIJQgFxgIRGETF0/A=
|
363
361
|
github.com/hashicorp/nomad/api v0.0.0-20200814140818-42de70466a9d/go.mod h1:DCi2k47yuUDzf2qWAK8E1RVmWgz/lc0jZQeEnICTxmY=
|
364
|
-
github.com/hashicorp/vagrant-plugin-sdk v0.0.0-20220913204040-793a2626f6f9 h1:wfdFsM/smge6K+RDgGLxWF4TcmAXZJis/IVUyT+G3JQ=
|
365
|
-
github.com/hashicorp/vagrant-plugin-sdk v0.0.0-20220913204040-793a2626f6f9/go.mod h1:zA5vDskG3gH306C+obL+yURiUiLMAlx52yqO8MC2r9w=
|
366
|
-
github.com/hashicorp/vagrant-plugin-sdk v0.0.0-20220919180525-50c632cd450d h1:TqCLroDhxzGMXE7LrgqDayOku2oRJ4vjROX7ghpzqsI=
|
367
|
-
github.com/hashicorp/vagrant-plugin-sdk v0.0.0-20220919180525-50c632cd450d/go.mod h1:zA5vDskG3gH306C+obL+yURiUiLMAlx52yqO8MC2r9w=
|
368
|
-
github.com/hashicorp/vagrant-plugin-sdk v0.0.0-20220919180735-d47bfe003e94 h1:CGq9dOg/kK0ihxx81H59xEHGfTvRs0ls8qCL3Bujdgo=
|
369
|
-
github.com/hashicorp/vagrant-plugin-sdk v0.0.0-20220919180735-d47bfe003e94/go.mod h1:zA5vDskG3gH306C+obL+yURiUiLMAlx52yqO8MC2r9w=
|
370
|
-
github.com/hashicorp/vagrant-plugin-sdk v0.0.0-20220928204300-c0e4b14e08c5 h1:xxwRPE6ISOz4CFFJlk3DmDD+4ZBt7iO9YiGwk4W/CYY=
|
371
|
-
github.com/hashicorp/vagrant-plugin-sdk v0.0.0-20220928204300-c0e4b14e08c5/go.mod h1:zA5vDskG3gH306C+obL+yURiUiLMAlx52yqO8MC2r9w=
|
372
362
|
github.com/hashicorp/vagrant-plugin-sdk v0.0.0-20220928204555-798e860a8593 h1:A75xYKrvyA/fNB6nSLBosbcrEmGTZSyMvuFHH7agscY=
|
373
363
|
github.com/hashicorp/vagrant-plugin-sdk v0.0.0-20220928204555-798e860a8593/go.mod h1:zA5vDskG3gH306C+obL+yURiUiLMAlx52yqO8MC2r9w=
|
374
364
|
github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
|
@@ -517,6 +507,8 @@ github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndr
|
|
517
507
|
github.com/posener/complete v1.2.3 h1:NP0eAhjcjImqslEwo/1hq7gpajME0fTLTezBKDqfXqo=
|
518
508
|
github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s=
|
519
509
|
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
510
|
+
github.com/randall77/makefat v0.0.0-20210315173500-7ddd0e42c844 h1:GranzK4hv1/pqTIhMTXt2X8MmMOuH3hMeUR0o9SP5yc=
|
511
|
+
github.com/randall77/makefat v0.0.0-20210315173500-7ddd0e42c844/go.mod h1:T1TLSfyWVBRXVGzWd0o9BI4kfoO9InEgfQe4NV3mLz8=
|
520
512
|
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
|
521
513
|
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
522
514
|
github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik=
|
@@ -6,6 +6,7 @@ require "uri"
|
|
6
6
|
require "vagrant/box_metadata"
|
7
7
|
require "vagrant/util/downloader"
|
8
8
|
require "vagrant/util/file_checksum"
|
9
|
+
require "vagrant/util/file_mutex"
|
9
10
|
require "vagrant/util/platform"
|
10
11
|
|
11
12
|
module Vagrant
|
@@ -479,12 +480,21 @@ module Vagrant
|
|
479
480
|
end
|
480
481
|
|
481
482
|
begin
|
482
|
-
d.
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
483
|
+
mutex_path = d.destination + ".lock"
|
484
|
+
Util::FileMutex.new(mutex_path).with_lock do
|
485
|
+
begin
|
486
|
+
d.download!
|
487
|
+
rescue Errors::DownloaderInterrupted
|
488
|
+
# The downloader was interrupted, so just return, because that
|
489
|
+
# means we were interrupted as well.
|
490
|
+
@download_interrupted = true
|
491
|
+
env[:ui].info(I18n.t("vagrant.actions.box.download.interrupted"))
|
492
|
+
end
|
493
|
+
end
|
494
|
+
rescue Errors::VagrantLocked
|
495
|
+
raise Errors::DownloadAlreadyInProgress,
|
496
|
+
dest_path: d.destination,
|
497
|
+
lock_file_path: mutex_path
|
488
498
|
end
|
489
499
|
|
490
500
|
Pathname.new(d.destination)
|
data/lib/vagrant/environment.rb
CHANGED
data/lib/vagrant/errors.rb
CHANGED
@@ -376,6 +376,10 @@ module Vagrant
|
|
376
376
|
error_key(:dotfile_upgrade_json_error)
|
377
377
|
end
|
378
378
|
|
379
|
+
class DownloadAlreadyInProgress < VagrantError
|
380
|
+
error_key(:download_already_in_progress_error)
|
381
|
+
end
|
382
|
+
|
379
383
|
class DownloaderError < VagrantError
|
380
384
|
error_key(:downloader_error)
|
381
385
|
end
|
@@ -920,6 +924,10 @@ module Vagrant
|
|
920
924
|
error_key(:uploader_interrupted)
|
921
925
|
end
|
922
926
|
|
927
|
+
class VagrantLocked < VagrantError
|
928
|
+
error_key(:vagrant_locked)
|
929
|
+
end
|
930
|
+
|
923
931
|
class VagrantInterrupt < VagrantError
|
924
932
|
error_key(:interrupted)
|
925
933
|
end
|
@@ -15,11 +15,6 @@ module Vagrant
|
|
15
15
|
|
16
16
|
UNSET_VALUE = :__UNSET__VALUE__
|
17
17
|
|
18
|
-
if Vagrant.server_mode?
|
19
|
-
GENERAL_CONFIG_CLS = Hashicorp::Vagrant::Sdk::Vagrantfile::GeneralConfig
|
20
|
-
SYMBOL_PROTO = Hashicorp::Vagrant::Sdk::Args::Symbol
|
21
|
-
end
|
22
|
-
|
23
18
|
# This is called as a last-minute hook that allows the configuration
|
24
19
|
# object to finalize itself before it will be put into use. This is
|
25
20
|
# a useful place to do some defaults in the case the user didn't
|
@@ -235,6 +235,7 @@ module Vagrant
|
|
235
235
|
# @return [true]
|
236
236
|
def self.enable_server_mode!
|
237
237
|
if !server_mode?
|
238
|
+
load_vagrant_proto!
|
238
239
|
SERVER_MODE_CALLBACKS.each(&:call)
|
239
240
|
Util::HCLogOutputter.new("hclog")
|
240
241
|
Log4r::Outputter["hclog"].formatter = Util::HCLogFormatter.new
|
@@ -257,6 +258,26 @@ module Vagrant
|
|
257
258
|
@_server_mode = true
|
258
259
|
end
|
259
260
|
|
261
|
+
# Load the vagrant proto messages
|
262
|
+
def self.load_vagrant_proto!
|
263
|
+
return if @_vagrant_proto_loaded
|
264
|
+
# Update the load path so our protos can be located
|
265
|
+
$LOAD_PATH << Vagrant.source_root.join("lib/vagrant/protobufs").to_s
|
266
|
+
$LOAD_PATH << Vagrant.source_root.join("lib/vagrant/protobufs/proto").to_s
|
267
|
+
$LOAD_PATH << Vagrant.source_root.join("lib/vagrant/protobufs/proto/vagrant_plugin_sdk").to_s
|
268
|
+
|
269
|
+
# Load our protos so they are available
|
270
|
+
require 'vagrant/protobufs/proto/vagrant_server/server_pb'
|
271
|
+
require 'vagrant/protobufs/proto/vagrant_server/server_services_pb'
|
272
|
+
require 'vagrant/protobufs/proto/ruby_vagrant/ruby-server_pb'
|
273
|
+
require 'vagrant/protobufs/proto/ruby_vagrant/ruby-server_services_pb'
|
274
|
+
require 'vagrant/protobufs/proto/vagrant_plugin_sdk/plugin_pb'
|
275
|
+
require 'vagrant/protobufs/proto/vagrant_plugin_sdk/plugin_services_pb'
|
276
|
+
require 'vagrant/protobufs/proto/plugin/grpc_broker_pb'
|
277
|
+
require 'vagrant/protobufs/proto/plugin/grpc_broker_services_pb'
|
278
|
+
@_vagrant_proto_loaded = true
|
279
|
+
end
|
280
|
+
|
260
281
|
SERVER_MODE_CALLBACKS = [
|
261
282
|
->{ Vagrant::Box.prepend(Vagrant::Box::Remote) },
|
262
283
|
->{ Vagrant::BoxCollection.prepend(Vagrant::BoxCollection::Remote) },
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Vagrant
|
2
|
+
module Util
|
3
|
+
# Utility to provide a simple mutex via file lock
|
4
|
+
class FileMutex
|
5
|
+
# Create a new FileMutex instance
|
6
|
+
#
|
7
|
+
# @param mutex_path [String] path for file
|
8
|
+
def initialize(mutex_path)
|
9
|
+
@mutex_path = mutex_path
|
10
|
+
end
|
11
|
+
|
12
|
+
# Execute provided block within lock and unlock
|
13
|
+
# when completed
|
14
|
+
def with_lock(&block)
|
15
|
+
lock
|
16
|
+
begin
|
17
|
+
block.call
|
18
|
+
rescue => e
|
19
|
+
raise e
|
20
|
+
ensure
|
21
|
+
unlock
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Attempt to acquire the lock
|
26
|
+
def lock
|
27
|
+
if lock_file.flock(File::LOCK_EX|File::LOCK_NB) === false
|
28
|
+
raise Errors::VagrantLocked, lock_file_path: @mutex_path
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# Unlock the file
|
33
|
+
def unlock
|
34
|
+
lock_file.flock(File::LOCK_UN)
|
35
|
+
lock_file.close
|
36
|
+
File.delete(@mutex_path) if File.file?(@mutex_path)
|
37
|
+
end
|
38
|
+
|
39
|
+
protected
|
40
|
+
|
41
|
+
def lock_file
|
42
|
+
return @lock_file if @lock_file && !@lock_file.closed?
|
43
|
+
@lock_file = File.open(@mutex_path, "w+")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -139,14 +139,20 @@ module Vagrant
|
|
139
139
|
return @_windows_hyperv_enabled if defined?(@_windows_hyperv_enabled)
|
140
140
|
|
141
141
|
@_windows_hyperv_enabled = -> {
|
142
|
-
|
143
|
-
|
142
|
+
check_commands = Array.new.tap do |c|
|
143
|
+
c << "(Get-WindowsOptionalFeature -FeatureName Microsoft-Hyper-V-Hypervisor -Online).State"
|
144
|
+
c << "(Get-WindowsFeature -FeatureName Microsoft-Hyper-V-Hypervisor).State"
|
145
|
+
end
|
146
|
+
check_commands.each do |ps_cmd|
|
144
147
|
begin
|
145
148
|
output = Vagrant::Util::PowerShell.execute_cmd(ps_cmd)
|
146
149
|
return true if output == "Enabled"
|
147
150
|
rescue Errors::PowerShellInvalidVersion
|
148
151
|
logger.warn("Invalid PowerShell version detected during Hyper-V enable check")
|
149
152
|
return false
|
153
|
+
rescue Errors::PowerShellError
|
154
|
+
logger.warn("Powershell command not found or error on execution of command")
|
155
|
+
return false
|
150
156
|
end
|
151
157
|
end
|
152
158
|
return false
|
data/lib/vagrant/util.rb
CHANGED
@@ -20,6 +20,7 @@ module Vagrant
|
|
20
20
|
autoload :Experimental, 'vagrant/util/experimental'
|
21
21
|
autoload :FileChecksum, 'vagrant/util/file_checksum'
|
22
22
|
autoload :FileMode, 'vagrant/util/file_mode'
|
23
|
+
autoload :FileMutex, 'vagrant/util/file_mutex'
|
23
24
|
autoload :GuestHosts, 'vagrant/util/guest_hosts'
|
24
25
|
autoload :GuestInspection, 'vagrant/util/guest_inspection'
|
25
26
|
autoload :HashWithIndifferentAccess, 'vagrant/util/hash_with_indifferent_access'
|
data/lib/vagrant.rb
CHANGED
Binary file
|
@@ -16,7 +16,7 @@ module VagrantPlugins
|
|
16
16
|
o.banner = "Usage: vagrant box outdated [options]"
|
17
17
|
o.separator ""
|
18
18
|
o.separator "Checks if there is a new version available for the box"
|
19
|
-
o.separator "that
|
19
|
+
o.separator "that you are using. If you pass in the --global flag,"
|
20
20
|
o.separator "all boxes will be checked for updates."
|
21
21
|
o.separator ""
|
22
22
|
o.separator "Options:"
|
@@ -1,39 +1,37 @@
|
|
1
|
-
$LOAD_PATH << Vagrant.source_root.join("lib/vagrant/protobufs").to_s
|
2
|
-
$LOAD_PATH << Vagrant.source_root.join("lib/vagrant/protobufs/proto").to_s
|
3
|
-
$LOAD_PATH << Vagrant.source_root.join("lib/vagrant/protobufs/proto/vagrant_plugin_sdk").to_s
|
4
|
-
|
5
|
-
require 'vagrant/protobufs/proto/vagrant_server/server_pb'
|
6
|
-
require 'vagrant/protobufs/proto/vagrant_server/server_services_pb'
|
7
|
-
require 'vagrant/protobufs/proto/ruby_vagrant/ruby-server_pb'
|
8
|
-
require 'vagrant/protobufs/proto/ruby_vagrant/ruby-server_services_pb'
|
9
|
-
require 'vagrant/protobufs/proto/vagrant_plugin_sdk/plugin_pb'
|
10
|
-
require 'vagrant/protobufs/proto/vagrant_plugin_sdk/plugin_services_pb'
|
11
|
-
require 'vagrant/protobufs/proto/plugin/grpc_broker_pb'
|
12
|
-
require 'vagrant/protobufs/proto/plugin/grpc_broker_services_pb'
|
13
|
-
|
14
1
|
require "optparse"
|
15
|
-
require 'grpc'
|
16
|
-
require 'grpc/health/checker'
|
17
|
-
require 'grpc/health/v1/health_services_pb'
|
18
2
|
|
19
3
|
module VagrantPlugins
|
20
4
|
module CommandServe
|
21
|
-
# Simple constant aliases to reduce namespace typing
|
22
|
-
SDK = Hashicorp::Vagrant::Sdk
|
23
|
-
SRV = Hashicorp::Vagrant
|
24
|
-
Empty = ::Google::Protobuf::Empty
|
25
|
-
|
26
5
|
autoload :Broker, Vagrant.source_root.join("plugins/commands/serve/broker").to_s
|
27
6
|
autoload :Client, Vagrant.source_root.join("plugins/commands/serve/client").to_s
|
28
7
|
autoload :Mappers, Vagrant.source_root.join("plugins/commands/serve/mappers").to_s
|
29
8
|
autoload :Service, Vagrant.source_root.join("plugins/commands/serve/service").to_s
|
30
9
|
autoload :Type, Vagrant.source_root.join("plugins/commands/serve/type").to_s
|
31
10
|
autoload :Util, Vagrant.source_root.join("plugins/commands/serve/util").to_s
|
11
|
+
autoload :SDK, Vagrant.source_root.join("plugins/commands/serve/constants").to_s
|
12
|
+
autoload :SRV, Vagrant.source_root.join("plugins/commands/serve/constants").to_s
|
13
|
+
autoload :Empty, Vagrant.source_root.join("plugins/commands/serve/constants").to_s
|
32
14
|
|
33
15
|
class << self
|
34
16
|
attr_accessor :broker
|
35
17
|
attr_accessor :server
|
36
18
|
attr_reader :cache
|
19
|
+
|
20
|
+
# Loads the required dependencies for this command. This is isolated
|
21
|
+
# into a method so that the dependencies can be loaded just in time when
|
22
|
+
# the command is actually executed.
|
23
|
+
def load_dependencies!
|
24
|
+
return if @dependencies_loaded
|
25
|
+
require 'grpc'
|
26
|
+
require 'grpc/health/checker'
|
27
|
+
require 'grpc/health/v1/health_services_pb'
|
28
|
+
|
29
|
+
# Add conversion patches
|
30
|
+
require Vagrant.source_root.join("plugins/commands/serve/util/direct_conversions.rb").to_s
|
31
|
+
|
32
|
+
# Mark dependencies as loaded
|
33
|
+
@dependencies_loaded = true
|
34
|
+
end
|
37
35
|
end
|
38
36
|
@cache = Util::Cacher.new
|
39
37
|
|
@@ -49,6 +47,9 @@ module VagrantPlugins
|
|
49
47
|
end
|
50
48
|
|
51
49
|
def execute
|
50
|
+
# Load dependencies before we start
|
51
|
+
CommandServe.load_dependencies!
|
52
|
+
|
52
53
|
options = {
|
53
54
|
bind: DEFAULT_BIND,
|
54
55
|
min_port: DEFAULT_PORT_RANGE.first,
|
@@ -138,6 +139,3 @@ module VagrantPlugins
|
|
138
139
|
end
|
139
140
|
end
|
140
141
|
end
|
141
|
-
|
142
|
-
# Load in our conversions down here so all the autoload stuff is in place
|
143
|
-
require Vagrant.source_root.join("plugins/commands/serve/util/direct_conversions.rb").to_s
|