1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2025-07-31 12:41:08 +00:00

Merge remote-tracking branch 'retspen/master' into merge

Conflicts:
	instances/templates/instance.html
	instances/urls.py
	instances/views.py
This commit is contained in:
Ing. Jan KRCMAR 2018-08-21 09:50:29 +02:00
commit 01ace81c32
199 changed files with 34999 additions and 11154 deletions

View file

@ -24,6 +24,7 @@ from vrtManager.util import randomPasswd
from libvirt import libvirtError, VIR_DOMAIN_XML_SECURE
from logs.views import addlogmsg
from django.conf import settings
from django.contrib import messages
@login_required
@ -46,7 +47,7 @@ def instances(request):
error_messages = []
all_host_vms = {}
all_user_vms = {}
computes = Compute.objects.all()
computes = Compute.objects.all().order_by("name")
def get_userinstances_info(instance):
info = {}
@ -72,18 +73,18 @@ def instances(request):
if check_uuid.uuid != info['uuid']:
check_uuid.save()
all_host_vms[comp_info["id"],
comp_info["name"],
comp_info["status"],
comp_info["cpu"],
comp_info["mem_size"],
comp_info["mem_perc"]][vm]['is_template'] = check_uuid.is_template
all_host_vms[comp_info["id"],
comp_info["name"],
comp_info["status"],
comp_info["cpu"],
comp_info["mem_size"],
comp_info["mem_perc"]][vm]['userinstances'] = get_userinstances_info(check_uuid)
all_host_vms[comp["id"],
comp["name"],
comp["status"],
comp["cpu"],
comp["mem_size"],
comp["mem_perc"]][vm]['is_template'] = check_uuid.is_template
all_host_vms[comp["id"],
comp["name"],
comp["status"],
comp["cpu"],
comp["mem_size"],
comp["mem_perc"]][vm]['userinstances'] = get_userinstances_info(check_uuid)
except Instance.DoesNotExist:
check_uuid = Instance(compute_id=comp["id"], name=vm, uuid=info['uuid'])
check_uuid.save()
@ -192,6 +193,8 @@ def instances(request):
error_messages.append(lib_err)
addlogmsg(request.user.username, instance.name, lib_err.message)
view_style = settings.VIEW_INSTANCES_LIST_STYLE
return render(request, 'instances.html', locals())
@ -203,7 +206,7 @@ def instance(request, compute_id, vname):
"""
error_messages = []
messages = []
#messages = []
compute = get_object_or_404(Compute, pk=compute_id)
computes = Compute.objects.all().order_by('name')
computes_count = computes.count()
@ -213,14 +216,14 @@ def instance(request, compute_id, vname):
console_types = settings.QEMU_CONSOLE_TYPES
console_listen_addresses = settings.QEMU_CONSOLE_LISTEN_ADDRESSES
try:
userinstace = UserInstance.objects.get(instance__compute_id=compute_id,
userinstance = UserInstance.objects.get(instance__compute_id=compute_id,
instance__name=vname,
user__id=request.user.id)
except UserInstance.DoesNotExist:
userinstace = None
userinstance = None
if not request.user.is_superuser:
if not userinstace:
if not userinstance:
return HttpResponseRedirect(reverse('index'))
def show_clone_disk(disks, vname=''):
@ -325,7 +328,7 @@ def instance(request, compute_id, vname):
compute.password,
compute.type,
vname)
compute_networks = sorted(conn.get_networks())
status = conn.get_status()
autostart = conn.get_autostart()
vcpu = conn.get_vcpu()
@ -367,6 +370,8 @@ def instance(request, compute_id, vname):
default_cache = settings.INSTANCE_VOLUME_DEFAULT_CACHE
default_format = settings.INSTANCE_VOLUME_DEFAULT_FORMAT
formats = conn.get_image_formats()
busses = conn.get_busses()
default_bus = settings.INSTANCE_VOLUME_DEFAULT_BUS
show_access_root_password = settings.SHOW_ACCESS_ROOT_PASSWORD
@ -410,7 +415,7 @@ def instance(request, compute_id, vname):
addlogmsg(request.user.username, instance.name, msg)
return HttpResponseRedirect(request.get_full_path() + '#powerforce')
if 'delete' in request.POST and (request.user.is_superuser or userinstace.is_delete):
if 'delete' in request.POST and (request.user.is_superuser or userinstance.is_delete):
if conn.get_status() == 1:
conn.force_shutdown()
if request.POST.get('delete_disk', ''):
@ -449,7 +454,7 @@ def instance(request, compute_id, vname):
addlogmsg(request.user.username, instance.name, msg)
if result['return'] == 'success':
messages.append(msg)
messages.success(request, msg)
else:
error_messages.append(msg)
else:
@ -471,14 +476,14 @@ def instance(request, compute_id, vname):
addlogmsg(request.user.username, instance.name, msg)
if result['return'] == 'success':
messages.append(msg)
messages.success(request, msg)
else:
error_messages.append(msg)
else:
msg = _("Please shutdow down your instance and then try again")
error_messages.append(msg)
if 'resize' in request.POST and (request.user.is_superuser or request.user.is_staff or userinstace.is_change):
if 'resize' in request.POST and (request.user.is_superuser or request.user.is_staff or userinstance.is_change):
new_vcpu = request.POST.get('vcpu', '')
new_cur_vcpu = request.POST.get('cur_vcpu', '')
new_memory = request.POST.get('memory', '')
@ -511,14 +516,13 @@ def instance(request, compute_id, vname):
addlogmsg(request.user.username, instance.name, msg)
return HttpResponseRedirect(request.get_full_path() + '#resize')
if 'addvolume' in request.POST and (request.user.is_superuser or userinstace.is_change):
if 'addvolume' in request.POST and (request.user.is_superuser or userinstance.is_change):
connCreate = wvmCreate(compute.hostname,
compute.login,
compute.password,
compute.type)
storage = request.POST.get('storage', '')
name = request.POST.get('name', '')
extension = request.POST.get('extension', '')
format = request.POST.get('format', '')
size = request.POST.get('size', 0)
meta_prealloc = request.POST.get('meta_prealloc', False)
@ -526,7 +530,7 @@ def instance(request, compute_id, vname):
cache = request.POST.get('cache', '')
target = get_new_disk_dev(disks, bus)
path = connCreate.create_volume(storage, name, size, format, meta_prealloc, extension)
path = connCreate.create_volume(storage, name, size, format, meta_prealloc)
conn.attach_disk(path, target, subdriver=format, cache=cache, targetbus=bus)
msg = _('Attach new disk')
addlogmsg(request.user.username, instance.name, msg)
@ -567,7 +571,7 @@ def instance(request, compute_id, vname):
conn.snapshot_revert(snap_name)
msg = _("Successful revert snapshot: ")
msg += snap_name
messages.append(msg)
messages.success(request, msg)
msg = _("Revert snapshot")
addlogmsg(request.user.username, instance.name, msg)
@ -604,7 +608,7 @@ def instance(request, compute_id, vname):
addlogmsg(request.user.username, instance.name, msg)
return HttpResponseRedirect(request.get_full_path() + '#xmledit')
if request.user.is_superuser or userinstace.is_vnc:
if request.user.is_superuser or userinstance.is_vnc:
if 'set_console_passwd' in request.POST:
if request.POST.get('auto_pass', ''):
passwd = randomPasswd()
@ -688,6 +692,8 @@ def instance(request, compute_id, vname):
conn.change_network(network_data)
msg = _("Edit network")
addlogmsg(request.user.username, instance.name, msg)
msg = _("Network Devices are changed. Please reboot instance to activate.")
messages.success(request, msg)
return HttpResponseRedirect(request.get_full_path() + '#network')
if 'add_owner' in request.POST:
@ -922,6 +928,7 @@ def inst_graph(request, compute_id, vname):
response.write(data)
return response
def _get_dhcp_mac_address(vname):
dhcp_file = '/srv/webvirtcloud/dhcpd.conf'
mac = ''
@ -936,6 +943,7 @@ def _get_dhcp_mac_address(vname):
break
return mac
@login_required
def guess_mac_address(request, vname):
data = { 'vname': vname }
@ -945,6 +953,7 @@ def guess_mac_address(request, vname):
data['mac'] = mac
return HttpResponse(json.dumps(data))
def _get_random_mac_address():
mac = '52:54:00:%02x:%02x:%02x' % (
random.randint(0x00, 0xff),
@ -953,12 +962,14 @@ def _get_random_mac_address():
)
return mac
@login_required
def random_mac_address(request):
data = {}
data['mac'] = _get_random_mac_address()
return HttpResponse(json.dumps(data))
@login_required
def guess_clone_name(request):
dhcp_file = '/srv/webvirtcloud/dhcpd.conf'
@ -975,6 +986,7 @@ def guess_clone_name(request):
return HttpResponse(json.dumps({'name': hostname}))
return HttpResponse(json.dumps({}))
@login_required
def check_instance(request, vname):
check_instance = Instance.objects.filter(name=vname)
@ -983,6 +995,7 @@ def check_instance(request, vname):
data['exists'] = True
return HttpResponse(json.dumps(data))
def sshkeys(request, vname):
"""
:param request:
@ -1004,6 +1017,7 @@ def sshkeys(request, vname):
response = json.dumps(instance_keys)
return HttpResponse(response)
def delete_instance(instance, delete_disk=False):
compute = instance.compute
instance_name = instance.name