def vmstatus(request, mode): vmpath = request.REQUEST.get("vmpath", None) host = request.REQUEST.get("host", None) visinstance = VIServers.init() viservers = visinstance.get_servers() try: status = viservers[host].get_vm_by_path(vmpath).get_status() except IndexError: status = 'null' return render_to_response("vmware/status.django.html", {"status": status, "inprogress": status in IN_PROGRESS}, context_instance=RequestContext(request))
def vmcontrol(request, mode): vmpath = request.REQUEST.get("vmpath", None) host = request.REQUEST.get("host", None) action = request.GET.get("action", None) visinstance = VIServers.init() viservers = visinstance.get_servers() try: vm = viservers[host].get_vm_by_path(vmpath) except IndexError: return HttpResponse(json.dumps({"ok": 0, "error": _("No virtual machine with the ID %(vmid)s has been found")}) % {"vmid": vmid}, mimetype="application/json") status = vm.get_status() if status in IN_PROGRESS: return HttpResponse(json.dumps({"ok": 0, "error": _("Previous actions has not been yet completed %(status)s")}) % {"status": status}, mimetype="application/json") if action == "poweron": vm.power_on(sync_run=False) return HttpResponse(json.dumps({"ok": 1, "error": _("The virtual machine has been powered on")}), mimetype="application/json") vmtools = vm.get_tools_status() if vmtools != ToolsStatus.RUNNING and vmtools != ToolsStatus.RUNNING_OLD: if action == "poweroff": vm.power_off(sync_run=False) elif action == "reset": vm.reset(sync_run=False) elif action == "suspend": vm.suspend(sync_run=False) else: if action == "poweroff": vm.shutdown_guest() elif action == "reset": vm.reboot_guest() elif action == "suspend": vm.standby_guest() return HttpResponse(json.dumps({"ok": 1, "error": _("The command %(action)s has been sent to the virtual machine. It might take several minutes to complete") % {"action": action.upper()} }), mimetype="application/json")
def vminfo(request, mode): vmpath = request.REQUEST.get("vmpath", None) host = request.REQUEST.get("host", None) visinstance = VIServers.init() viservers = visinstance.get_servers() try: vm = viservers[host].get_vm_by_path(vmpath) except IndexError: vm = None prop = vm.get_properties() prop["vmtools"] = vm.get_tools_status() if request.method == "GET": return render_to_response("vmware/info.django.html", {"prop": prop}, context_instance=RequestContext(request)) else: return HttpResponse(json.dumps({"vmtools": bool(prop["vmtools"] == ToolsStatus.RUNNING or \ prop["vmtools"] == ToolsStatus.RUNNING_OLD)}), mimetype="application/json")
def vmlist(request, mode): vihost = request.GET.get("host", None) visinstance = VIServers.init() all_viservers = visinstance.get_servers() if vihost in all_viservers: viservers = {} viservers[vihost] = all_viservers[vihost] host = vihost else: viservers = all_viservers host = None hosts = {} for server in viservers: if not viservers[server] is None: vmlist_raw = viservers[server].get_registered_vms() vmlist = [] for vm in vmlist_raw: vm_data = RE_VM_PATH.search(vm).groupdict() vm_data["path"] = vm vmlist.append(vm_data) # Sorting by the VM name vmlist = sorted(vmlist, key=lambda x: x["name"]) hosts[server] = vmlist else: hosts[server] = None return render_to_response("vmware/vmlist.django.html", {"hosts": hosts, "one_host": host}, context_instance=RequestContext(request))