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:
commit
01ace81c32
199 changed files with 34999 additions and 11154 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue