def libvirt_networks(libvirt_client)
libvirt_networks = []
active = libvirt_client.list_networks
inactive = libvirt_client.list_defined_networks
active.concat(inactive).each do |network_name|
libvirt_network = libvirt_client.lookup_network_by_name(
network_name
)
xml = Nokogiri::XML(libvirt_network.xml_desc)
ip = xml.xpath('/network/ip/@address').first
ip = ip.value if ip
netmask = xml.xpath('/network/ip/@netmask').first
netmask = netmask.value if netmask
dhcp_enabled = if xml.at_xpath('//network/ip/dhcp')
true
else
false
end
domain_name = xml.at_xpath('/network/domain/@name')
domain_name = domain_name.value if domain_name
network_address = (network_address(ip, netmask) if ip && netmask)
libvirt_networks << {
name: network_name,
ip_address: ip,
netmask: netmask,
network_address: network_address,
dhcp_enabled: dhcp_enabled,
bridge_name: libvirt_network.bridge_name,
domain_name: domain_name,
created: true,
active: libvirt_network.active?,
autostart: libvirt_network.autostart?,
libvirt_network: libvirt_network
}
end
libvirt_networks
end