Esempio n. 1
0
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))
Esempio n. 2
0
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")
    
    
Esempio n. 3
0
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")
Esempio n. 4
0
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))