def call(env)
if env[:machine].provider_config.qemu_use_session
@app.call(env)
return
end
@@lock.synchronize do
configured_networks(env, @logger).each do |options|
next if options[:iface_type] != :private_network ||
options.fetch(:tunnel_type, nil)
@logger.debug "Searching for network with options #{options}"
@options = options
@available_networks = libvirt_networks(
env[:machine].provider.driver.connection.client
)
@interface_network = {
name: nil,
ip_address: nil,
netmask: @options[:netmask],
network_address: nil,
bridge_name: nil,
domain_name: nil,
ipv6_address: options[:ipv6_address] || nil,
ipv6_prefix: options[:ipv6_prefix] || nil,
created: false,
active: false,
autostart: options[:autostart] || false,
guest_ipv6: @options[:guest_ipv6] || 'yes',
libvirt_network: nil
}
if @options[:ip]
handle_ip_option(env)
elsif @options[:type].to_s == 'dhcp'
handle_dhcp_private_network(env)
elsif @options[:network_name]
handle_network_name_option(env)
else
raise Errors::CreateNetworkError, error_message: @options
end
autostart_network if @interface_network[:autostart]
activate_network unless @interface_network[:active]
end
end
@app.call(env)
end