Adding Network info and edition
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,4 +1,5 @@
|
||||
from config import *
|
||||
from functions.fnet import *
|
||||
import base64
|
||||
import time
|
||||
import lxc
|
||||
@@ -65,7 +66,18 @@ def get_info_vm(vm_name):
|
||||
state, maxmem, mem, cpus, cput = dom.info()
|
||||
return state, maxmem, mem, cpus, cput
|
||||
|
||||
#Screenshot
|
||||
def attach_net(vm_name,net_name):
|
||||
dom = conn.lookupByName(vm_name)
|
||||
network_xml = f'<interface type="network"><source network="{net_name}"/><model type="virtio"/></interface>'
|
||||
dom.attachDeviceFlags(network_xml, libvirt.VIR_DOMAIN_AFFECT_CONFIG | libvirt.VIR_DOMAIN_AFFECT_LIVE)
|
||||
|
||||
def detach_net(vm_name, net_name, net_mac,net_int):
|
||||
dom = conn.lookupByName(vm_name)
|
||||
# network_xml = f'<interface type="network"><mac address="{net_mac}"/><source network="{net_name}"/><model type="virtio"/></interface>'
|
||||
network_xml = f'<interface type="bridge"><mac address="{net_mac}"/><source network="{net_name}" bridge="{net_int}"/></interface>'
|
||||
print(network_xml)
|
||||
dom.detachDeviceFlags(network_xml, libvirt.VIR_DOMAIN_AFFECT_CONFIG | libvirt.VIR_DOMAIN_AFFECT_LIVE)
|
||||
|
||||
def get_screenshot(vm_name):
|
||||
dom = conn.lookupByName(vm_name)
|
||||
stream = conn.newStream()
|
||||
@@ -83,8 +95,6 @@ def get_screenshot(vm_name):
|
||||
os.remove(file)
|
||||
return data
|
||||
|
||||
#Autostart
|
||||
|
||||
def get_autostart(vm_name):
|
||||
dom = conn.lookupByName(vm_name)
|
||||
return dom.autostart()
|
||||
@@ -97,3 +107,12 @@ def unset_autostart(vm_name):
|
||||
dom = conn.lookupByName(vm_name)
|
||||
dom.setAutostart(0)
|
||||
|
||||
"""
|
||||
def get_net_vm(vm_name):
|
||||
netws, nu2 = get_virt_int()
|
||||
vm_net_list=[]
|
||||
for net in netws:
|
||||
if vm_name in net[1][0]:
|
||||
vm_net_list.append(net[0][0][0])
|
||||
return vm_net_list
|
||||
"""
|
||||
|
||||
@@ -1,99 +0,0 @@
|
||||
from config import *
|
||||
import base64
|
||||
import time
|
||||
import lxc
|
||||
|
||||
def get_version():
|
||||
vlxc = lxc.version
|
||||
vlibvirt = str(libvirt.getVersion()/1000000) #1000000 * major + 1000 * minor + release
|
||||
vhype = hype_version
|
||||
return vlxc, vlibvirt, vhype
|
||||
|
||||
|
||||
def set_memory(vm_name,memory_new):
|
||||
dom = conn.lookupByName(vm_name)
|
||||
dom.shutdown()
|
||||
time.sleep(3)
|
||||
alive=0
|
||||
while alive < 5:
|
||||
if dom.isActive():
|
||||
time.sleep(3)
|
||||
alive+=1
|
||||
else:
|
||||
alive=6
|
||||
if dom.isActive():
|
||||
dom.destroy()
|
||||
dom.setMaxMemory(memory_new)
|
||||
dom.setMemoryFlags(memory_new)
|
||||
dom.create()
|
||||
time.sleep(3)
|
||||
alive=0
|
||||
while alive < 3:
|
||||
if dom.isActive():
|
||||
alive=4
|
||||
else:
|
||||
time.sleep(3)
|
||||
alive+=1
|
||||
|
||||
def set_vcpu(vm_name,vcpu_new):
|
||||
dom = conn.lookupByName(vm_name)
|
||||
dom.shutdown()
|
||||
time.sleep(3)
|
||||
alive=0
|
||||
while alive < 5:
|
||||
if dom.isActive():
|
||||
time.sleep(3)
|
||||
alive+=1
|
||||
else:
|
||||
alive=6
|
||||
if dom.isActive():
|
||||
dom.destroy()
|
||||
dom.setVcpusFlags(vcpu_new,libvirt.VIR_DOMAIN_AFFECT_CONFIG | libvirt.VIR_DOMAIN_VCPU_MAXIMUM)
|
||||
dom.setVcpusFlags(vcpu_new,libvirt.VIR_DOMAIN_AFFECT_CONFIG | libvirt.VIR_DOMAIN_VCPU_CURRENT)
|
||||
dom.create()
|
||||
time.sleep(3)
|
||||
alive=0
|
||||
while alive < 3:
|
||||
if dom.isActive():
|
||||
alive=4
|
||||
else:
|
||||
time.sleep(3)
|
||||
alive+=1
|
||||
|
||||
def get_info_vm(vm_name):
|
||||
dom = conn.lookupByName(vm_name)
|
||||
state, maxmem, mem, cpus, cput = dom.info()
|
||||
return state, maxmem, mem, cpus, cput
|
||||
|
||||
#Screenshot
|
||||
def get_screenshot(vm_name):
|
||||
dom = conn.lookupByName(vm_name)
|
||||
stream = conn.newStream()
|
||||
imageType = dom.screenshot(stream,0)
|
||||
file = "tmp_screen_" + dom.name()
|
||||
fileHandler = open(file, 'wb')
|
||||
streamBytes = stream.recv(262120)
|
||||
while streamBytes != b'':
|
||||
fileHandler.write(streamBytes)
|
||||
streamBytes = stream.recv(262120)
|
||||
fileHandler.close()
|
||||
stream.finish()
|
||||
with open(file, "rb") as f:
|
||||
data = base64.b64encode(f.read())
|
||||
os.remove(file)
|
||||
return data
|
||||
|
||||
#Autostart
|
||||
|
||||
def get_autostart(vm_name):
|
||||
dom = conn.lookupByName(vm_name)
|
||||
return dom.autostart()
|
||||
|
||||
def set_autostart(vm_name):
|
||||
dom = conn.lookupByName(vm_name)
|
||||
dom.setAutostart(1)
|
||||
|
||||
def unset_autostart(vm_name):
|
||||
dom = conn.lookupByName(vm_name)
|
||||
dom.setAutostart(0)
|
||||
|
||||
@@ -2,6 +2,35 @@ from app import *
|
||||
import ipaddress
|
||||
from xml.dom import minidom
|
||||
|
||||
|
||||
def ip_fom_mac(vm_name,net_mac):
|
||||
dom=conn.lookupByName(vm_name)
|
||||
mac_ip=[]
|
||||
try:
|
||||
ifaces = dom.interfaceAddresses(libvirt.VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_AGENT)
|
||||
except:
|
||||
ifaces = None
|
||||
result="---.---.---.---"
|
||||
|
||||
if ifaces is None:
|
||||
result="---.---.---.---"
|
||||
else:
|
||||
for (name, val) in ifaces.items():
|
||||
if val['addrs']:
|
||||
for addr in val['addrs']:
|
||||
if addr['addr']:
|
||||
mac_ip.append([val['hwaddr'],addr['addr']])
|
||||
break
|
||||
else:
|
||||
result = "---.---.---.---"
|
||||
for int in mac_ip:
|
||||
if int[0] == net_mac:
|
||||
result=int[1]
|
||||
else:
|
||||
result = "---.---.---.---"
|
||||
return result
|
||||
|
||||
|
||||
def diff_net(min_dhcp,max_dhcp):
|
||||
ip1 = ipaddress.IPv4Address(min_dhcp)
|
||||
ip2 = ipaddress.IPv4Address(max_dhcp)
|
||||
@@ -43,28 +72,44 @@ def create_network(net_name,net_int):
|
||||
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
|
||||
def get_mac_net(vm_name,net_name):
|
||||
dom = conn.lookupByName(vm_name)
|
||||
raw_xml = dom.XMLDesc()
|
||||
net_xml = minidom.parseString(raw_xml)
|
||||
VM_mac = []
|
||||
for device in net_xml.getElementsByTagName('devices'):
|
||||
ifaces = device.getElementsByTagName('interface')
|
||||
for iface in ifaces:
|
||||
sources = iface.getElementsByTagName('source')
|
||||
for source in sources:
|
||||
if source.getAttribute('network') == net_name:
|
||||
mac = iface.getElementsByTagName('mac')
|
||||
target = iface.getElementsByTagName('target')
|
||||
ip = ip_fom_mac(vm_name,str(mac[0].getAttribute('address')))
|
||||
VM_mac.append([target[0].getAttribute('dev'),mac[0].getAttribute('address'),ip])
|
||||
return VM_mac
|
||||
|
||||
def get_virt_int():
|
||||
net_na = []
|
||||
out=[]
|
||||
for network in conn.listAllNetworks():
|
||||
if network.isActive():
|
||||
int_name=[]
|
||||
int_mac = conn.interfaceLookupByName(network.bridgeName())
|
||||
int_name.append([network.name(),network.bridgeName(),int_mac.MACString()])
|
||||
net_detail = conn.networkLookupByName(network.name())
|
||||
net_vms = net_detail.listAllPorts()
|
||||
vm_name=[]
|
||||
for vm in net_vms:
|
||||
net_VM_info = []
|
||||
raw_xml = vm.XMLDesc()
|
||||
net_xml = minidom.parseString(raw_xml)
|
||||
net_element = net_xml.documentElement
|
||||
net_VM = net_element.getElementsByTagName("name")[0]
|
||||
net_VM_info = [net_VM.firstChild.data,get_mac_net(net_VM.firstChild.data,network.name())]
|
||||
if net_VM_info not in vm_name:
|
||||
vm_name.append(net_VM_info)
|
||||
out.append([int_name,vm_name])
|
||||
else:
|
||||
net_na.append(network.name())
|
||||
return out, net_na
|
||||
|
||||
Reference in New Issue
Block a user