Hype-2/functions/fnet.py

71 lines
2.0 KiB
Python

from app import *
import ipaddress
from xml.dom import minidom
def diff_net(min_dhcp,max_dhcp):
ip1 = ipaddress.IPv4Address(min_dhcp)
ip2 = ipaddress.IPv4Address(max_dhcp)
nb_ip = int(ip2) - int(ip1) + 1
return nb_ip
def get_int(net_name):
network = conn.networkLookupByName(net_name)
net_int = network.bridgeName()
return net_int
def create_vswitch_int(net_int):
cmd="ovs-vsctl add-br "+net_int
subprocess.call(cmd, shell=True)
def delete_network(net_name,net_int):
cmd = "ovs-vsctl del-br "+net_int
subprocess.call(cmd, shell=True)
network = conn.networkLookupByName(net_name) #Lapin
network.destroy()
network.undefine()
cmd2="kill $(cat /run/dhypecp_"+net_int+".pid)"
subprocess.call(cmd2, shell=True)
cmd3="rm -f /run/dhypecp_"+net_int+".pid"
subprocess.call(cmd3, shell=True)
def create_network(net_name,net_int):
create_vswitch_int(net_int)
xml = f"""
<network>
<name>{ net_name }</name>
<forward mode='bridge'/>
<bridge name='{ net_int }'/>
<virtualport type='openvswitch'/>
</network>
"""
conn.networkDefineXML(xml)
net_use = conn.networkLookupByName(net_name)
net_use.create()
net_use.setAutostart(True)
def list_network_VM():
net_tree = []
net_na = []
#Host Interfaces
net_hard_int = conn.listInterfaces()
#Virtual Interfaces
net_list = conn.listAllNetworks()
for net_name in net_list:
if net_name.isActive():
net_sub_tree=[]
net_sub_tree.append(net_name.name())
net_use = conn.networkLookupByName(net_name.name())
ports = net_use.listAllPorts()
net_ports = []
for port in ports:
raw_xml = port.XMLDesc()
net_xml = minidom.parseString(raw_xml)
net_element = net_xml.documentElement
net_VM = net_element.getElementsByTagName("name")[0]
net_ports.append(net_VM.firstChild.data)
net_sub_tree.append(net_ports)
net_tree.append(net_sub_tree)
else:
net_na.append(net_name.name())
return net_hard_int,net_tree,net_na