Merge branch 'stucki-create-bridge-if-missing' (PR #380)
This commit is contained in:
commit
86381bfeee
2 changed files with 25 additions and 6 deletions
|
@ -132,6 +132,20 @@ module Vagrant
|
||||||
ip += '/24'
|
ip += '/24'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if ! bridge_exists?(bridge_name)
|
||||||
|
if not bridge_ip
|
||||||
|
raise "Bridge is missing and no IP was specified!"
|
||||||
|
end
|
||||||
|
|
||||||
|
@logger.info "Creating the bridge #{bridge_name}"
|
||||||
|
cmd = [
|
||||||
|
'brctl',
|
||||||
|
'addbr',
|
||||||
|
bridge_name
|
||||||
|
]
|
||||||
|
@sudo_wrapper.run(*cmd)
|
||||||
|
end
|
||||||
|
|
||||||
if ! bridge_has_an_ip?(bridge_name)
|
if ! bridge_has_an_ip?(bridge_name)
|
||||||
if not bridge_ip
|
if not bridge_ip
|
||||||
raise "Bridge has no IP and none was specified!"
|
raise "Bridge has no IP and none was specified!"
|
||||||
|
@ -146,6 +160,7 @@ module Vagrant
|
||||||
bridge_name
|
bridge_name
|
||||||
]
|
]
|
||||||
@sudo_wrapper.run(*cmd)
|
@sudo_wrapper.run(*cmd)
|
||||||
|
@sudo_wrapper.run('ip', 'link', 'set', bridge_name, 'up')
|
||||||
end
|
end
|
||||||
|
|
||||||
cmd = [
|
cmd = [
|
||||||
|
@ -162,6 +177,12 @@ module Vagrant
|
||||||
`ip -4 addr show scope global #{bridge_name}` =~ /^\s+inet ([0-9.]+)\/[0-9]+\s+/
|
`ip -4 addr show scope global #{bridge_name}` =~ /^\s+inet ([0-9.]+)\/[0-9]+\s+/
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def bridge_exists?(bridge_name)
|
||||||
|
@logger.info "Checking whether bridge #{bridge_name} exists"
|
||||||
|
brctl_output = `ip link | egrep -q " #{bridge_name}:"`
|
||||||
|
$?.to_i == 0
|
||||||
|
end
|
||||||
|
|
||||||
def bridge_is_in_use?(bridge_name)
|
def bridge_is_in_use?(bridge_name)
|
||||||
# REFACTOR: This method is **VERY** hacky
|
# REFACTOR: This method is **VERY** hacky
|
||||||
@logger.info "Checking if bridge #{bridge_name} is in use"
|
@logger.info "Checking if bridge #{bridge_name} is in use"
|
||||||
|
@ -175,12 +196,10 @@ module Vagrant
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@logger.info "Checking whether bridge #{bridge_name} exists"
|
return unless bridge_exists?(bridge_name)
|
||||||
brctl_output = `ifconfig -a | grep -q #{bridge_name}`
|
|
||||||
return if $?.to_i != 0
|
|
||||||
|
|
||||||
@logger.info "Removing bridge #{bridge_name}"
|
@logger.info "Removing bridge #{bridge_name}"
|
||||||
@sudo_wrapper.run('ifconfig', bridge_name, 'down')
|
@sudo_wrapper.run('ip', 'link', 'set', bridge_name, 'down')
|
||||||
@sudo_wrapper.run('brctl', 'delbr', bridge_name)
|
@sudo_wrapper.run('brctl', 'delbr', bridge_name)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -100,8 +100,8 @@ Whitelist.add '<%= cmd_paths['tar'] %>', '--numeric-owner', '-cvzf', %r{/tmp/.*/
|
||||||
Whitelist.add '<%= cmd_paths['chown'] %>', /\A\d+:\d+\z/, %r{\A/tmp/.*/rootfs\.tar\.gz\z}
|
Whitelist.add '<%= cmd_paths['chown'] %>', /\A\d+:\d+\z/, %r{\A/tmp/.*/rootfs\.tar\.gz\z}
|
||||||
# - Private network script and commands
|
# - Private network script and commands
|
||||||
Whitelist.add '<%= cmd_paths['ip'] %>', 'addr', 'add', /(\d+|\.)+\/24/, 'dev', /.+/
|
Whitelist.add '<%= cmd_paths['ip'] %>', 'addr', 'add', /(\d+|\.)+\/24/, 'dev', /.+/
|
||||||
Whitelist.add '<%= cmd_paths['ifconfig'] %>', /.+/, 'down'
|
Whitelist.add '<%= cmd_paths['ip'] %>', 'link', 'set', /.+/, /(up|down)/
|
||||||
Whitelist.add '<%= cmd_paths['brctl'] %>', 'delbr', /.+/
|
Whitelist.add '<%= cmd_paths['brctl'] %>', /(addbr|delbr)/, /.+/
|
||||||
Whitelist.add_regex %r{<%= pipework_regex %>}, '**'
|
Whitelist.add_regex %r{<%= pipework_regex %>}, '**'
|
||||||
|
|
||||||
##
|
##
|
||||||
|
|
Loading…
Reference in a new issue