vagrant-docker-networks-manager 1.1.0 → 1.2.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/CHANGELOG.md +13 -0
- data/lib/vagrant-docker-networks-manager/VERSION +1 -1
- data/lib/vagrant-docker-networks-manager/action.rb +23 -16
- data/lib/vagrant-docker-networks-manager/command.rb +342 -271
- data/lib/vagrant-docker-networks-manager/config.rb +85 -60
- data/lib/vagrant-docker-networks-manager/helpers.rb +16 -13
- data/lib/vagrant-docker-networks-manager/network_builder.rb +63 -14
- data/lib/vagrant-docker-networks-manager/util.rb +17 -0
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6d5a48a335e256e279964831b52c2afe001b19e123fe2dd3d7697c3730f7e443
|
|
4
|
+
data.tar.gz: 2446d67c42582a72d99069b77c6217622ea44a543ecf732176eda26b04230040
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d09f4737e381492fd6b79067b8683ed788bdfa1e12e03b29106ce233e29ef061e3eda01272365da578a1140190089c8d8e9a1f2dca56c21e1f90d14f4fee8a44
|
|
7
|
+
data.tar.gz: de4e532b638f0da54869a2555e3e27cb0a56e163a87581457c011d1051c3555763358e03cffc60b7b05a18e9c37d90cc1d1f46185941f38dc8edcb3ecd5cc53d
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.2.0](https://github.com/julienpoirou/vagrant-docker-networks-manager/compare/v1.1.0...v1.2.0) (2026-07-05)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Fonctionnalités ✨
|
|
7
|
+
|
|
8
|
+
* Improve plugin quality and publish RubyDoc ([25f1767](https://github.com/julienpoirou/vagrant-docker-networks-manager/commit/25f17676c62a19c663664c3dbf4a9b97757d466c))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Corrections 🐛
|
|
12
|
+
|
|
13
|
+
* Stub container_network_mode in command specs to unbreak CI ([422491e](https://github.com/julienpoirou/vagrant-docker-networks-manager/commit/422491e699139292a1a2edac976d9fb93314f7c5))
|
|
14
|
+
* Wire the workflow_dispatch tag input and make Publish release-safe ([05a1d46](https://github.com/julienpoirou/vagrant-docker-networks-manager/commit/05a1d46f3c6dd3132e2a64dfde13dcab9a3310ca))
|
|
15
|
+
|
|
3
16
|
## [1.1.0](https://github.com/julienpoirou/vagrant-docker-networks-manager/compare/v1.0.7...v1.1.0) (2026-03-11)
|
|
4
17
|
|
|
5
18
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
1.
|
|
1
|
+
1.2.0
|
|
@@ -12,6 +12,7 @@ require_relative "version"
|
|
|
12
12
|
|
|
13
13
|
module VagrantDockerNetworksManager
|
|
14
14
|
class ActionUp
|
|
15
|
+
# Vagrant middleware entry point that ensures the configured Docker network exists.
|
|
15
16
|
def initialize(app, _env); @app = app; end
|
|
16
17
|
|
|
17
18
|
def call(env)
|
|
@@ -21,7 +22,7 @@ module VagrantDockerNetworksManager
|
|
|
21
22
|
ui = env[:ui]
|
|
22
23
|
|
|
23
24
|
unless Util.docker_available?
|
|
24
|
-
UiHelpers.error(ui, "#{UiHelpers.e(:error)} #{I18n.t('errors.docker_unavailable')}")
|
|
25
|
+
UiHelpers.error(ui, "#{UiHelpers.e(:error)} #{I18n.t('vdnm.errors.docker_unavailable')}")
|
|
25
26
|
return @app.call(env)
|
|
26
27
|
end
|
|
27
28
|
|
|
@@ -31,15 +32,15 @@ module VagrantDockerNetworksManager
|
|
|
31
32
|
if Util.docker_network_exists?(name)
|
|
32
33
|
if owned_by_this_machine?(name, mid)
|
|
33
34
|
write_marker(env, name, cfg)
|
|
34
|
-
UiHelpers.say(ui, "#{UiHelpers.e(:success)} #{I18n.t('messages.network_exists_adopted', name: name)}")
|
|
35
|
+
UiHelpers.say(ui, "#{UiHelpers.e(:success)} #{I18n.t('vdnm.messages.network_exists_adopted', name: name)}")
|
|
35
36
|
else
|
|
36
|
-
UiHelpers.say(ui, "#{UiHelpers.e(:info)} #{I18n.t('messages.network_exists', name: name)}")
|
|
37
|
+
UiHelpers.say(ui, "#{UiHelpers.e(:info)} #{I18n.t('vdnm.messages.network_exists', name: name)}")
|
|
37
38
|
end
|
|
38
39
|
else
|
|
39
40
|
subnet_label = cfg.network_subnet || "-"
|
|
40
41
|
|
|
41
42
|
if cfg.network_subnet && !VagrantDockerNetworksManager::Util.valid_subnet?(cfg.network_subnet)
|
|
42
|
-
UiHelpers.error(ui, "#{UiHelpers.e(:error)} #{I18n.t('errors.invalid_subnet')}")
|
|
43
|
+
UiHelpers.error(ui, "#{UiHelpers.e(:error)} #{I18n.t('vdnm.errors.invalid_subnet')}")
|
|
43
44
|
return @app.call(env)
|
|
44
45
|
end
|
|
45
46
|
|
|
@@ -48,19 +49,20 @@ module VagrantDockerNetworksManager
|
|
|
48
49
|
cfg.network_subnet,
|
|
49
50
|
ignore_network: name
|
|
50
51
|
)
|
|
51
|
-
UiHelpers.error(ui, "#{UiHelpers.e(:error)} #{I18n.t('errors.subnet_in_use')}")
|
|
52
|
+
UiHelpers.error(ui, "#{UiHelpers.e(:error)} #{I18n.t('vdnm.errors.subnet_in_use')}")
|
|
52
53
|
return @app.call(env)
|
|
53
54
|
end
|
|
54
55
|
|
|
55
|
-
UiHelpers.say(ui,
|
|
56
|
+
UiHelpers.say(ui,
|
|
57
|
+
"#{UiHelpers.e(:ongoing)} #{I18n.t('vdnm.log.create_network', name: name, subnet: subnet_label)}")
|
|
56
58
|
builder = NetworkBuilder.new(cfg, machine_id: mid)
|
|
57
59
|
args = builder.build_create_command_args
|
|
58
60
|
if Util.sh!(*args)
|
|
59
61
|
write_marker(env, name, cfg)
|
|
60
|
-
UiHelpers.say(ui, "#{UiHelpers.e(:success)} #{I18n.t('log.ok')}")
|
|
62
|
+
UiHelpers.say(ui, "#{UiHelpers.e(:success)} #{I18n.t('vdnm.log.ok')}")
|
|
61
63
|
else
|
|
62
64
|
rendered = args.shelljoin
|
|
63
|
-
UiHelpers.error(ui, "#{UiHelpers.e(:error)} #{I18n.t('messages.create_failed', cmd: rendered)}")
|
|
65
|
+
UiHelpers.error(ui, "#{UiHelpers.e(:error)} #{I18n.t('vdnm.messages.create_failed', cmd: rendered)}")
|
|
64
66
|
end
|
|
65
67
|
end
|
|
66
68
|
|
|
@@ -70,6 +72,8 @@ module VagrantDockerNetworksManager
|
|
|
70
72
|
private
|
|
71
73
|
|
|
72
74
|
def write_marker(env, name, cfg)
|
|
75
|
+
# The marker is a local fallback ownership record; Docker labels remain
|
|
76
|
+
# the cross-process/source-of-truth check when the network still exists.
|
|
73
77
|
m_id = env[:machine].id
|
|
74
78
|
dir = env[:machine].data_dir.join("docker-networks")
|
|
75
79
|
FileUtils.mkdir_p(dir)
|
|
@@ -103,6 +107,7 @@ module VagrantDockerNetworksManager
|
|
|
103
107
|
end
|
|
104
108
|
|
|
105
109
|
class ActionDestroy
|
|
110
|
+
# Vagrant middleware entry point that removes owned Docker networks on destroy.
|
|
106
111
|
def initialize(app, _env); @app = app; end
|
|
107
112
|
|
|
108
113
|
def call(env)
|
|
@@ -112,7 +117,7 @@ module VagrantDockerNetworksManager
|
|
|
112
117
|
ui = env[:ui]
|
|
113
118
|
|
|
114
119
|
unless Util.docker_available?
|
|
115
|
-
UiHelpers.error(ui, "#{UiHelpers.e(:error)} #{I18n.t('errors.docker_unavailable')}")
|
|
120
|
+
UiHelpers.error(ui, "#{UiHelpers.e(:error)} #{I18n.t('vdnm.errors.docker_unavailable')}")
|
|
116
121
|
return @app.call(env)
|
|
117
122
|
end
|
|
118
123
|
|
|
@@ -125,7 +130,7 @@ module VagrantDockerNetworksManager
|
|
|
125
130
|
end
|
|
126
131
|
|
|
127
132
|
if created_by_this_machine?(env, name) || owned_by_this_machine?(name, mid)
|
|
128
|
-
UiHelpers.say(ui, "#{UiHelpers.e(:broom)} #{I18n.t('messages.remove_network', name: name)}")
|
|
133
|
+
UiHelpers.say(ui, "#{UiHelpers.e(:broom)} #{I18n.t('vdnm.messages.remove_network', name: name)}")
|
|
129
134
|
|
|
130
135
|
if Util.docker_network_exists?(name)
|
|
131
136
|
out, _e, st = Open3.capture3("docker", "network", "inspect", name)
|
|
@@ -134,10 +139,10 @@ module VagrantDockerNetworksManager
|
|
|
134
139
|
info = JSON.parse(out).first
|
|
135
140
|
(info["Containers"] || {}).values.each do |c|
|
|
136
141
|
cn = c["Name"]
|
|
137
|
-
UiHelpers.say(ui, "#{UiHelpers.e(:ongoing)} #{I18n.t('log.disconnect_container', name: cn)}")
|
|
142
|
+
UiHelpers.say(ui, "#{UiHelpers.e(:ongoing)} #{I18n.t('vdnm.log.disconnect_container', name: cn)}")
|
|
138
143
|
Util.sh!("network", "disconnect", "--force", name, cn)
|
|
139
144
|
if ENV["VDNM_DESTROY_WITH_CONTAINERS"] == "1"
|
|
140
|
-
UiHelpers.say(ui, "#{UiHelpers.e(:ongoing)} #{I18n.t('log.remove_container', name: cn)}")
|
|
145
|
+
UiHelpers.say(ui, "#{UiHelpers.e(:ongoing)} #{I18n.t('vdnm.log.remove_container', name: cn)}")
|
|
141
146
|
Util.sh!("rm", "-f", cn)
|
|
142
147
|
end
|
|
143
148
|
end
|
|
@@ -148,16 +153,16 @@ module VagrantDockerNetworksManager
|
|
|
148
153
|
|
|
149
154
|
if Util.sh!("network", "rm", name)
|
|
150
155
|
delete_marker(env, name)
|
|
151
|
-
UiHelpers.say(ui, "#{UiHelpers.e(:success)} #{I18n.t('log.ok')}")
|
|
156
|
+
UiHelpers.say(ui, "#{UiHelpers.e(:success)} #{I18n.t('vdnm.log.ok')}")
|
|
152
157
|
else
|
|
153
|
-
UiHelpers.warn(ui, "#{UiHelpers.e(:warning)} #{I18n.t('errors.remove_failed')}")
|
|
158
|
+
UiHelpers.warn(ui, "#{UiHelpers.e(:warning)} #{I18n.t('vdnm.errors.remove_failed')}")
|
|
154
159
|
end
|
|
155
160
|
else
|
|
156
161
|
delete_marker(env, name)
|
|
157
|
-
UiHelpers.say(ui, "#{UiHelpers.e(:info)} #{I18n.t('messages.nothing_to_do')}")
|
|
162
|
+
UiHelpers.say(ui, "#{UiHelpers.e(:info)} #{I18n.t('vdnm.messages.nothing_to_do')}")
|
|
158
163
|
end
|
|
159
164
|
else
|
|
160
|
-
UiHelpers.say(ui, "#{UiHelpers.e(:broom)} #{I18n.t('messages.nothing_to_do')}")
|
|
165
|
+
UiHelpers.say(ui, "#{UiHelpers.e(:broom)} #{I18n.t('vdnm.messages.nothing_to_do')}")
|
|
161
166
|
end
|
|
162
167
|
|
|
163
168
|
@app.call(env)
|
|
@@ -170,6 +175,8 @@ module VagrantDockerNetworksManager
|
|
|
170
175
|
end
|
|
171
176
|
|
|
172
177
|
def created_by_this_machine?(env, name)
|
|
178
|
+
# Trust the marker only for this machine id to avoid removing a network
|
|
179
|
+
# created or adopted by another Vagrant environment.
|
|
173
180
|
marker = marker_path(env, name)
|
|
174
181
|
return false unless File.exist?(marker)
|
|
175
182
|
j = JSON.parse(File.read(marker)) rescue {}
|