From 843555a9d55e2119385e37db7ecc45a361cf6a10 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 7 Apr 2024 17:42:39 +0200 Subject: [PATCH] Adding Network and Small corrections --- app.py | 123 ++++++++++++++++++- functions/__pycache__/fdisks.cpython-311.pyc | Bin 5938 -> 6656 bytes functions/__pycache__/fedit.cpython-311.pyc | Bin 5598 -> 5598 bytes functions/__pycache__/flxc.cpython-311.pyc | Bin 3639 -> 4629 bytes functions/__pycache__/fnet.cpython-311.pyc | Bin 0 -> 4294 bytes functions/__pycache__/fvm.cpython-311.pyc | Bin 3603 -> 3910 bytes functions/fdisks.py | 6 +- functions/fedit.py.ori | 99 +++++++++++++++ functions/flxc.py | 18 +++ functions/fnet.py | 70 +++++++++++ functions/fvm.py | 8 ++ templates/createnet.html | 36 ++++++ templates/edit_lxc.html | 36 ++++++ templates/menu.html | 3 + templates/network.html | 51 ++++++++ templates/network.html.ori | 56 +++++++++ templates/state.html | 6 +- templates/terminal.html | 4 +- 18 files changed, 507 insertions(+), 9 deletions(-) create mode 100644 functions/__pycache__/fnet.cpython-311.pyc create mode 100644 functions/fedit.py.ori create mode 100644 functions/fnet.py create mode 100644 templates/createnet.html create mode 100644 templates/edit_lxc.html create mode 100644 templates/network.html create mode 100644 templates/network.html.ori diff --git a/app.py b/app.py index fe4402b..6365409 100644 --- a/app.py +++ b/app.py @@ -18,6 +18,7 @@ from functions.fbackup import * from functions.fpool import * from functions.fedit import * from functions.fdisks import * +from functions.fnet import * app = Flask(__name__,static_url_path='',static_folder='static',template_folder='templates') @@ -183,6 +184,65 @@ def delvol(): flash('Error on deleting '+volume_name+':'+str(e), category='danger') return redirect(url_for('get_pool')) +############################ +## NETWORK ## +############################ +@app.route('/network',methods=['GET']) +@login_required +def network(): + net_hard_int,net_tree,net_na = list_network_VM() + return render_template('network.html', net_hard_int =net_hard_int, net_tree=net_tree, net_na=net_na) + +@app.route('/createnet',methods=['GET']) +@login_required +def createnet(): + return render_template('createnet.html') + +@app.route('/delnet',methods=['POST']) +@login_required +def delnet(): + net_name = request.form['net_del'] + net_int = get_int(net_name) + try: + delete_network(net_name,net_int) + flash(net_name+' deleted', category='success') + except Exception as e: + flash('Error on deleting '+net_name+':'+str(e), category='danger') + return redirect(url_for('network')) + +@app.route('/createint',methods=['POST']) +@login_required +def createint(): + net_name = request.form['net_name'] + net_int = request.form['net_int'] + ip_int = request.form['ip_int'] + mask_int = request.form['mask_int'] + min_dhcp = request.form['min_dhcp'] + max_dhcp = request.form['max_dhcp'] + nb_ip = diff_net(min_dhcp,max_dhcp) + try: + create_network(net_name,net_int) + except Exception as e: + flash('Error creating '+net_name+':'+str(e), category='danger') + delete_network(net_name,net_int) + return redirect(url_for('network')) + try: + cmd="ifconfig "+str(net_int)+" "+str(ip_int)+" netmask "+str(mask_int)+" up" + subprocess.call(cmd, shell=True) + except Exception as e: + flash('Error starting '+net_name+':'+str(e), category='danger') + delete_network(net_name,net_int) + return redirect(url_for('network')) + try: + cmd2="dnsmasq --interface="+str(net_int)+" --bind-interfaces --dhcp-range "+str(min_dhcp)+","+str(max_dhcp)+" --dhcp-lease-max="+str(nb_ip)+" --dhcp-authoritative --pid-file=/run/dhypecp_"+net_int+".pid" + subprocess.call(cmd2, shell=True) + except Exception as e: + flash("Error on DHCP for "+net_name,category='danger') + delete_network(net_name,net_int) + return redirect(url_for('network')) + flash(net_name+' had been created', category='success') + return redirect(url_for('network')) + ############################ ## DISKS ## ############################ @@ -196,6 +256,7 @@ def editdisks(): actual_size = request.form['actual_size'] new_size = request.form['new_size'] vm_name = request.form['vm_name'] + is_active(vm_name) try: resize_disk(disk_file,actual_size,new_size,vm_name,disk_id) flash(disk_name+' had been resized to '+str(new_size)+'G', category='success') @@ -210,6 +271,7 @@ def adddisk(): vm_name = request.form['vm_name'] disk_size = request.form['disk_size'] disk_id = request.form['disk_id'] + is_active(vm_name) try: create_attached_disk(vm_name,disk_name,disk_size,disk_id) flash(disk_name+' had been created and attached', category='success') @@ -223,6 +285,7 @@ def detachdisk(): diskfile = request.form['diskfile'] disk_name = os.path.basename(diskfile) vm_name = request.form['vm_name'] + is_active(vm_name) try: detach_disk(vm_name,diskfile) flash(disk_name+' had been dettached', category='success') @@ -291,6 +354,7 @@ def ter_connect(): @login_required def consolevm(): vm_name = request.form['vm_name'] + is_active(vm_name) try: socket_connect(vm_name) return render_template('vnc.html') @@ -334,13 +398,62 @@ def deluser(): ## EDIT ## ############################ +@app.route('/editlxc',methods=['POST']) +@login_required +def editlxc(): + lxc_name = request.form['edit'] + vcpu, mem, mem_max, swap_max = get_lxc_ressources(lxc_name) + return render_template('edit_lxc.html', lxc_name=str(lxc_name), max_Mermory=str(' '.join(mem_max)),max_vCPU=str(' '.join(vcpu)), max_swap=str(' '.join(swap_max)), actual_ram=str(' '.join(mem))) + +#TEST +@app.route('/editressourceslxc',methods=['POST']) +@login_required +def editressourceslxc(): + lxc_name = str(request.form['lxc_name']) + vcpu, mem, mem_max, swap_max = get_lxc_ressources(lxc_name) + new_max_swap = request.form['new_max_swap'] + new_max_mem = request.form['new_max_mem'] + new_mem = request.form['new_mem'] + new_cpu = request.form['new_cpu'] + if new_max_swap != ' '.join(swap_max): + try: + lxc_item = 'lxc.cgroup2.memory.swap.max' + set_lxc_ressources(lxc_name,lxc_item,new_max_swap) + except Exception as e: + flash('Error editing Swap for '+lxc_name+': '+str(e), category='danger') + if new_max_mem != ' '.join(mem_max): + try: + lxc_item = 'lxc.cgroup2.memory.max' + set_lxc_ressources(lxc_name,lxc_item,new_max_mem) + except Exception as e: + flash('Error editing Max Memory for '+lxc_name+': '+str(e), category='danger') + if new_mem != ' '.join(mem): + try: + lxc_item = 'lxc.cgroup2.memory.high' + set_lxc_ressources(lxc_name,lxc_item,new_mem) + except Exception as e: + flash('Error editing Memory for '+lxc_name+': '+str(e), category='danger') + if new_cpu != ' '.join(vcpu): + try: + lxc_item = 'lxc.cgroup2.cpuset.cpus' + set_lxc_ressources(lxc_name,lxc_item,new_cpu) + except Exception as e: + flash('Error editing CPU for '+lxc_name+': '+str(e), category='danger') + return redirect(url_for('state')) + +## + @app.route('/editvm',methods=['POST']) @login_required def edit(): vm_name = request.form['edit'] state, maxmem, mem, cpus, cput = get_info_vm(vm_name) -#Memory in MB - return render_template('edit.html', vm_name=vm_name, max_Mermory=conn.getInfo()[1],max_vCPU= conn.getMaxVcpus(None),actual_vCPU=cpus, actual_ram=int(mem/1024),screen_64=get_screenshot(vm_name).decode('ASCII'),actual_autostart=get_autostart(vm_name),disks=get_disks_info(vm_name)) + try: + screen_64=get_screenshot(vm_name).decode('ASCII') + except: + #Green screen + screen_64="/9j/4AAQSkZJRgABAQEAeAB4AAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAMABAADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDLooor8XP4DCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA/9k=" + return render_template('edit.html', vm_name=vm_name, max_Mermory=conn.getInfo()[1],max_vCPU= conn.getMaxVcpus(None),actual_vCPU=cpus, actual_ram=int(mem/1024),screen_64=screen_64,actual_autostart=get_autostart(vm_name),disks=get_disks_info(vm_name)) @app.route('/editressources',methods=['POST']) @@ -574,9 +687,11 @@ def create_VM(): return redirect(url_for('state')) opt = " --disk path="+virtuo_path+virtuo_file+",device=cdrom" ostype = 'windows' - creationcmd='--name '+str(nom)+' --ram '+str(ram)+' --disk path='+str(disk_path)+str(nom)+'.qcow2,bus=virtio,format=qcow2 --vcpus '+str(cpu)+' --os-type '+str(ostype)+' --os-variant '+str(ose)+' --network network:bridged --graphics vnc,listen=0.0.0.0 --noautoconsole --console pty,target_type=serial '+opt+' --cdrom '+str(iso)+' --force --debug ' +# creationcmd='--name '+str(nom)+' --ram '+str(ram)+' --disk path='+str(disk_path)+str(nom)+'.qcow2,bus=virtio,format=qcow2 --vcpus '+str(cpu)+' --os-type '+str(ostype)+' --os-variant '+str(ose)+' --network network:bridged --graphics vnc,listen=0.0.0.0 --noautoconsole --console pty,target_type=serial '+opt+' --cdrom '+str(iso)+' --force --debug ' + creationcmd='--name '+str(nom)+' --ram '+str(ram)+' --disk path='+str(disk_path)+str(nom)+'.qcow2,bus=virtio,format=qcow2 --vcpus '+str(cpu)+' --os-type '+str(ostype)+' --os-variant '+str(ose)+' --network network:'+str(net)+' --graphics vnc,listen=0.0.0.0 --noautoconsole --console pty,target_type=serial '+opt+' --cdrom '+str(iso)+' --force --debug ' else: - creationcmd='--name '+str(nom)+' --ram '+str(ram)+' --disk path='+str(disk_path)+str(nom)+'.qcow2,size='+str(disk)+',bus=virtio --vcpus '+str(cpu)+' --os-type '+str(ostype)+' --os-variant '+str(ose)+' --network network:bridged --graphics vnc,listen=0.0.0.0 --noautoconsole --console pty,target_type=serial '+opt+' --cdrom '+str(iso)+' --force --debug ' +# creationcmd='--name '+str(nom)+' --ram '+str(ram)+' --disk path='+str(disk_path)+str(nom)+'.qcow2,size='+str(disk)+',bus=virtio --vcpus '+str(cpu)+' --os-type '+str(ostype)+' --os-variant '+str(ose)+' --network network:bridged --graphics vnc,listen=0.0.0.0 --noautoconsole --console pty,target_type=serial '+opt+' --cdrom '+str(iso)+' --force --debug ' + creationcmd='--name '+str(nom)+' --ram '+str(ram)+' --disk path='+str(disk_path)+str(nom)+'.qcow2,size='+str(disk)+',bus=virtio --vcpus '+str(cpu)+' --os-type '+str(ostype)+' --os-variant '+str(ose)+' --network network:'+str(net)+' --graphics vnc,listen=0.0.0.0 --noautoconsole --console pty,target_type=serial '+opt+' --cdrom '+str(iso)+' --force --debug ' try: os.system('virt-install '+creationcmd+' ') flash(str(nom)+' created', category='success') diff --git a/functions/__pycache__/fdisks.cpython-311.pyc b/functions/__pycache__/fdisks.cpython-311.pyc index d6511f020c01f3d12873c9ae6bb5339a43c261fd..d418a197ac29b3196a367a0c1a2138cd9812ff63 100644 GIT binary patch delta 2287 zcmbVN%Wo4$7@ytsz8u?mIB{?&#BqphC&UgFsI72l(>!Qs5?TlpI5ZgVI(Fhmm|X`* zH?@n9dZ|$8N^K-mCb!pIfXN|Acu)QeFMjdG|u-#RunE{Ark{q6Uf zZ@!uR=I0-R`J;|+>~GrUiOP`Y&xaI3Un2c7?bWyF_Tv`S0+E%W zQENnyXux$=Vl?V5k}MickTsFhSR(UZiR+wZ`J8fjHBJ(~rV;vd{z@*|Ij4zAkEfp#=)=Mw+NKZ_It?yB_^-JDQZ3*88K8l}I$9-tc7833b$a(o2HFp{lhZRV10r zL?db5^ zaw_ZFn`oBkYbY@nRx()}l|7Jj)b~+ETW<^sSN0D}l8}m07ZMIZ4N$^;8oNo=xSK%0 zj-g?UZbi-D$fEpSCX<}WWR|llZ{L_BrD14ABPT|&98u*9vorV=FmPB_$d@i*%-_) z1T%oR6yONb61t_eKX;DE$H=1`B>a#^+oJu6IPh2;C@dDmU`Y(-4{bZTH^ri(ui!5_ z2J?Y3ZFLC0xA&A;@-8C)4)yxWd`%Tl-(Xp+sSf1oEw|QGn34CFU5Md74c^QJH}-8F zDbfc@^npk8fv1A)iQs-LxHo-8!CMl%`TjD^Fye0({?@5H`R$Zx3REFKv9q)DLTTGA z9i^5b69dl}$~O2E42Pewv~4&)Q06!X_m>Uv_M5Sd>B3?@R^)Dda7+d<<#%ldTh()Jp864s9pM_&R$-Gghak) z>wUxe-;<|LNG;8oUi%-JG`2>~yv8+c0;oA4p|dDpo5SOzW;{V)*GX=p5+@u07iSnc z-{ae*eR{&-vCiM83|5KD$)tX}W52LVc?|00npfZGaO)2{#MwPAFmE`12U1Q0oC0_k zV1|HURkBxBa3(4%ieZToD#pWLW)v0US%@-ksHh)v4)2F+h|dDdn=#RpqyXK(C0us8 zugFBcKpy2-Ix x4im-zfLt(a4#)MRtH+umBH1BQ?&=$^`0+lfy^LxwMRkE*gCGNHGvE%A;U7}^7yAGJ delta 1385 zcmbVL-D@0G6rbtt%-q>*HpzZucedGNnzY0XOuteUG_1yG+r+p@X&%&I?K(3_w$5g^ zcV<%@Ca{ViN}yfD8x zzjN;Sn7O}OJM_ig$fefS5CiM?0z30WWHq9Mp9}&G!1MQ4EW?~*G}eOm=CXEdS`70! z_^&o&vn++iR|cynWk_z;>KnNt2B@H`9{0 zrPF$;suWAJvWoSBrOV2Ud|EA^IVju0Uf*c2N2ac@4bGg?4a4Sruf21jh|M{~na z{s>TG)=}SQBiF=F^B40jI(TDn<*n7+^_+`_?_^!{;twNhldpW2{~ltmu1%kC(Ft;` zGj$S$e?`(yNLuc9QSZ;Fx7N2VhCl53pzHnarS1)e4Rovrh4;qZ8GC#D-SOJ^Z;|A( z=tg$cA9EuEwd^|DQ=fH_a#?lJffZ=;^v!V>9sM@xqRF*m6&F=#6Y@u@V^ZBB5~eA@ z!yq;)K*vAL9p1_MC+>@j+bYddO({AY6&K5qN^B?KQmik)TLRf1?-2xA1MH<(+7qd# zoW6RhZqSRiad z+K-Pw!W4cUaEqd`ZWiq=ipGZ_jz<89me{@9jy)>jetQ6PtAeC;dA>ZaldeQ2ljZOz z%^ahkP&i7#(M%o=J8uu7%qMES|Ge?B;i7@d zhg`JpMqp)hHF7=TqTEf>MbCXRc<0RBp?gCvnpm53T;y!3g)Am-^&W?kc#6WqugwPi zS^W9PbSlkGkcCt?Hx2tJ* delta 21 bcmcboeNUTbIWI340}$N0_bYWH&m~a+Pqqi8 diff --git a/functions/__pycache__/flxc.cpython-311.pyc b/functions/__pycache__/flxc.cpython-311.pyc index f4952af4d7fec62d91c13a6c0c9b466d2cd27ba0..95e550621f2dc223ea19c9168a6198d2950b987f 100644 GIT binary patch delta 835 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 literal 0 HcmV?d00001 diff --git a/functions/__pycache__/fvm.cpython-311.pyc b/functions/__pycache__/fvm.cpython-311.pyc index 961b4716b6e7e858be66fb6027e611d1c859ecee..f9de3bac73e89ec1143708e0797dc53c511be026 100644 GIT binary patch delta 606 zcmYjP&ubG=5Pt7%U-n0`ZLzhnHk7ofO>+>j78N`wp?WC6gTX_4iKV+~quJduyGbpI zMu~Xx5Z*Nh^&)}?HUEPb{{h|qzYsb|EWgn!UQ1hDwq-h^%1Y@E%_E-WL^(cVcx(9oh?p8`ms2Kt$X|-yt3?&)DW||V z+hh)_visU5JK!LZTGAkeSDa}E!M)ag`S9kp=f){;!z(z{XcQV) z(w|;sAH^k2-4=a0hk{Jo={w@3p&J!W3e)A{Qjg5V|FoWC=lT@IVUD z%p(Mv?i(!yi-c&elAf%WRL4fR*NU9rz=tIwoguS~Ce|G{j379KB6=YynE$(_9!9}_ zt?j`%jIL1nwd%;+KpKw)pHj~(m(Qs0R)MdoiS&YX6&V+ab%aXH4ytL7pQp)Vqvbnp zz2UoXlG6VRX&rZ`E@ezs)F`ud!HQEmfnRUz{uy=>6N%11A^|A_w0|-eP+KUgE&H@} a9U;Amu&*B3XD3fcZVuT$Gp^p*yT1YFbBn0} delta 386 zcmX>mH(7>vIWI340}x0X{zwU!$ScX{Fj3usl_{7(lWSwqE5^y4%(GcVf$}_)HCcKY zMJI1(QD>C^@&z_OX31il{FO;SBe^Iwu_W~tOG##K>MhpdoYd5UTO66ij>#pNWvMHf zZ?Tu<#^)vGrcSP4Q(;vF>J{0%kd2ASLkh?&VgeE`SwSor5Q_~+XtEc9s3KV)af_ok zqqHO?zdWx<9wep!A{0Rq>?x_mB}Ms_MM{%jb4amj1H}|Jb8#+UVw9b{nmd(Id9omn zGNayPQyxWDYoMgw=4hU7Mq7xXrFki-X_ + { net_name } + + + + + """ + 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 diff --git a/functions/fvm.py b/functions/fvm.py index 0e56109..f4ee8f3 100644 --- a/functions/fvm.py +++ b/functions/fvm.py @@ -9,6 +9,14 @@ def get_vm_activ(): activ_vm.append(dom.name()) return activ_vm +#Set a VM as active +def is_active(vm_name): + dom = conn.lookupByName(vm_name) + try: + dom.resume() + except: + pass + def get_vm_inactiv(): inactiv_vm=conn.listDefinedDomains() return inactiv_vm diff --git a/templates/createnet.html b/templates/createnet.html new file mode 100644 index 0000000..9ed50e2 --- /dev/null +++ b/templates/createnet.html @@ -0,0 +1,36 @@ +{% extends 'layout.html' %} +{% block content %} +{% include 'menu.html' %} +
+
+
+
+
+ - Build Network +
+
+ +
+ +
+ +
+ +
+ +
+ DHCP Configuration + +
+ +
+ +
+ +
+
+
+
+
+ +{% endblock %} diff --git a/templates/edit_lxc.html b/templates/edit_lxc.html new file mode 100644 index 0000000..dd39a64 --- /dev/null +++ b/templates/edit_lxc.html @@ -0,0 +1,36 @@ +{% extends 'layout.html' %} +{% block content %} +{% include 'menu.html' %} +
+
+
+ Ressources of {{ lxc_name }} +
+
+
+
+ vCPU : {{ max_vCPU }}

+ Memory: {{ actual_ram }}

+ Max Memory: {{ max_Mermory }}

+ Swap: {{ max_swap }}

+
+ +
+
+ +
CPU :

+
Memory :

+
Max Memory :

+
Swap :

+

+ +
+
+
+ +
+
+
+
+ +{% endblock %} diff --git a/templates/menu.html b/templates/menu.html index 98d9d12..0211781 100644 --- a/templates/menu.html +++ b/templates/menu.html @@ -22,6 +22,9 @@ +
diff --git a/templates/network.html b/templates/network.html new file mode 100644 index 0000000..f1de0d4 --- /dev/null +++ b/templates/network.html @@ -0,0 +1,51 @@ +{% extends 'layout.html' %} +{% block content %} +{% include 'menu.html' %} +
+ Add Network


+
+Physical Interfaces: +
+
+
    +
  • + {% for pint in net_hard_int %} + {{ pint }}
    + {% endfor %} +
  • +
+
+
+

+
+Virtual Interfaces: +
+
+
    + {% for noac in net_na %} +
  • + {{ noac }} Not active
    +
  • + {% endfor %} + {% for item in net_tree %} +
  • + {{ item[0] }} +
    + + +

    +
      + {% for sub_item in item[1] %} +
    • + {{ sub_item }} +
    • + {% endfor %} +
    +
  • + {% endfor %} +
+
+
+
+
+{% endblock %} diff --git a/templates/network.html.ori b/templates/network.html.ori new file mode 100644 index 0000000..4ba5f5c --- /dev/null +++ b/templates/network.html.ori @@ -0,0 +1,56 @@ +{% extends 'layout.html' %} +{% block content %} +{% include 'menu.html' %} + +
+
+
+ {% for pint in net_hard_int %} + {{ pint }}
+ {% endfor %} +
+
+
+
+
+graph TD +{% for item in net_tree %} +root[Root] --- {{ item[0] }}[{{ item[0] }}] +{% for sub_item in item[1] %} +{{ item[0] }}[{{ item[0] }}] --- {{ sub_item }}[{{ sub_item }}] +{% endfor %} +{% endfor %} +
+
+
+
+ +{% endblock %} diff --git a/templates/state.html b/templates/state.html index 31c71a9..25cd887 100644 --- a/templates/state.html +++ b/templates/state.html @@ -20,6 +20,8 @@
+
+ {{act_lxc[1]}} @@ -42,6 +44,7 @@
+
- @@ -99,7 +102,8 @@
-
+
+ {% if inact_vm[1] == 1 %}
diff --git a/templates/terminal.html b/templates/terminal.html index 891912a..77d4aba 100644 --- a/templates/terminal.html +++ b/templates/terminal.html @@ -1,8 +1,8 @@ {% extends 'layout.html' %} {% block content %} {% include 'menu.html' %} -
- +
Full screen
+
{% endblock %}