Class: VagrantPlugins::ProviderZone::SetupStrategies::DHCP
- Inherits:
-
Base
- Object
- Base
- VagrantPlugins::ProviderZone::SetupStrategies::DHCP
show all
- Defined in:
- lib/vagrant-zones/setup_strategies/dhcp.rb
Overview
DHCP strategy: relies on the host-side dhcpd serving the zone’s private etherstub. Waits for SSH to come up; the host’s dhcpd provides the reserved IP via Hosts.yml configuration. No in-guest configuration.
Instance Method Summary
collapse
Methods inherited from Base
#initialize
Instance Method Details
#control(uii, action) ⇒ Object
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# File 'lib/vagrant-zones/setup_strategies/dhcp.rb', line 53
def control(uii, action)
config = @machine.provider_config
case action
when /restart/
command = config.safe_restart || 'sudo shutdown -r'
@driver.ssh_run_command(uii, command)
when 'shutdown'
command = config.safe_shutdown || 'sudo init 0 || true'
@driver.ssh_run_command(uii, command)
else
uii.info(I18n.t('vagrant_zones.control_no_cmd'))
end
end
|
#get_ip_address(uii) ⇒ Object
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/vagrant-zones/setup_strategies/dhcp.rb', line 30
def get_ip_address(uii)
config = @machine.provider_config
uii.info(I18n.t('vagrant_zones.get_ip_address')) if config.debug
@machine.config.vm.networks.each do |(_adaptertype, opts)|
if opts[:dhcp4] && opts[:managed] && !opts[:ip].to_s.empty?
return opts[:ip].to_s.gsub("\t", '')
elsif (opts[:dhcp4] == false || opts[:dhcp4].nil?) && opts[:managed]
static = opts[:ip].to_s
return nil if static.empty?
return static.gsub("\t", '')
end
end
nil
end
|
#setup_network(uii) ⇒ Object
46
47
48
49
50
51
|
# File 'lib/vagrant-zones/setup_strategies/dhcp.rb', line 46
def setup_network(uii)
uii.info(I18n.t('vagrant_zones.chk_dhcp_addr')) if @machine.provider_config.debug
nil
end
|
#wait_for_boot(uii, metrics, interrupted) ⇒ Object
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/vagrant-zones/setup_strategies/dhcp.rb', line 12
def wait_for_boot(uii, metrics, interrupted)
config = @machine.provider_config
return if config.cloud_init_enabled
metrics ||= {}
metrics['instance_dhcp_ssh_time'] = Util::Timer.time do
@driver.retryable(on: Errors::TimeoutError, tries: 60) do
next if interrupted
loop do
break if interrupted
break if @machine.communicate.ready?
end
end
end
uii.info("#{I18n.t('vagrant_zones.dhcp_boot_ready')} in #{metrics['instance_dhcp_ssh_time']} Seconds")
end
|