vagrant-helpers 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/vagrant-helpers.rb +42 -2
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a086365b1b3ec96fb79913620a58196486cdbb85
|
4
|
+
data.tar.gz: 005ee89cfa5976954a1ad95cb11d7e07fa14a06c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a99b2e9524140246b27c3da4ddbcc286eee27f665e43821580863ebdeb5fe59e072ae41630b6b2dbc840d097cad57302fe5561a1b5d4d56ec8186c8a271c39a2
|
7
|
+
data.tar.gz: 6ffd87fc0e9b2f7bf7bf6a291e6811d42b0d55f7e2a336118fea68dd7a8f023c9fbc5296a476b37162ea668dc5a5146ddcba91a3414a8aee3d0be8fd0d8a6876
|
data/lib/vagrant-helpers.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
require 'vagrant'
|
2
2
|
require 'yaml'
|
3
3
|
require 'dotenv'
|
4
|
+
require 'socket'
|
5
|
+
require 'ipaddr'
|
6
|
+
require 'ip'
|
4
7
|
|
5
8
|
|
6
9
|
module VagrantPlugins
|
@@ -90,12 +93,49 @@ module VagrantPlugins
|
|
90
93
|
end
|
91
94
|
end
|
92
95
|
|
96
|
+
def self.get_cidr_mask(mask)
|
97
|
+
Integer(32 - Math.log2((IPAddr.new(mask, Socket::AF_INET).to_i ^ 0xffffffff) + 1))
|
98
|
+
end
|
99
|
+
|
100
|
+
def self.get_host_networks
|
101
|
+
host_networks = []
|
102
|
+
|
103
|
+
Socket.getifaddrs.each do |ifaddr|
|
104
|
+
if ifaddr.addr.ipv4? && ifaddr.addr.ipv4_private?
|
105
|
+
machine_address = IP.new ifaddr.addr.ip_address
|
106
|
+
netmask = IP.new ifaddr.netmask.ip_address
|
107
|
+
network_address = machine_address & netmask
|
108
|
+
host_networks << IP.new("#{network_address}/#{get_cidr_mask ifaddr.netmask.ip_address}")
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
host_networks
|
113
|
+
end
|
114
|
+
|
115
|
+
def self.host_in_network?(network_addr)
|
116
|
+
get_host_networks.any? { |host_network| host_network.eql? network_addr }
|
117
|
+
end
|
118
|
+
|
93
119
|
def self.set_vm_public_networks(config, opts)
|
94
120
|
vm_public_networks = opts.fetch('vm', {}).fetch('network', {}).fetch('public', [])
|
95
121
|
|
122
|
+
network_list = []
|
123
|
+
|
96
124
|
vm_public_networks.each do |options|
|
97
|
-
|
98
|
-
|
125
|
+
if options.has_key? 'network'
|
126
|
+
network_addr = IP.new options.delete 'network'
|
127
|
+
if host_in_network? network_addr
|
128
|
+
network_list << options
|
129
|
+
break
|
130
|
+
end
|
131
|
+
else
|
132
|
+
network_list << options
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
network_list.each do |network_options|
|
137
|
+
options_sym_hash = ::Hash[network_options.map { |(k, v)| [k.to_sym, v] }]
|
138
|
+
config.vm.network :public_network, **options_sym_hash
|
99
139
|
end
|
100
140
|
end
|
101
141
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Pyatkin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dotenv
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 2.0.2
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: ruby-ip
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.9.3
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.9.3
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -71,7 +85,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
71
85
|
requirements:
|
72
86
|
- - ">="
|
73
87
|
- !ruby/object:Gem::Version
|
74
|
-
version: '2.
|
88
|
+
version: '2.1'
|
75
89
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
90
|
requirements:
|
77
91
|
- - ">="
|