def listResources(remoteHashValue, projectUUID = 'None', sliceUUID ='None'): logging.debug("Enter listResources") infoRspec = XmlHelper.getSimpleInformation() servers = VTDriver.getAllServers() baseVM = copy.deepcopy(infoRspec.response.information.resources.server[0].virtual_machine[0]) if not servers: logging.debug("No VTServers available") infoRspec.response.information.resources.server.pop() resourcesString = XmlHelper.craftXmlClass(infoRspec) localHashValue = str(hash(resourcesString)) else: for sIndex, server in enumerate(servers): if(sIndex == 0): baseServer = copy.deepcopy(infoRspec.response.information.resources.server[0]) if(sIndex != 0): newServer = copy.deepcopy(baseServer) infoRspec.response.information.resources.server.append(newServer) InformationDispatcher.__ServerModelToClass(server, infoRspec.response.information.resources.server[sIndex] ) if (projectUUID is not 'None'): vms = server.getVMs(projectId = projectUUID) else: vms = server.getVMs() if not vms: logging.debug("No VMs available") if infoRspec.response.information.resources.server[sIndex].virtual_machine: infoRspec.response.information.resources.server[sIndex].virtual_machine.pop() elif (sliceUUID is not 'None'): vms = vms.filter(sliceId = sliceUUID) if not vms: logging.error("No VMs available") infoRspec.response.information.resources.server[sIndex].virtual_machine.pop() for vIndex, vm in enumerate(vms): if (vIndex != 0): newVM = copy.deepcopy(baseVM) infoRspec.response.information.resources.server[sIndex].virtual_machine.append(newVM) InformationDispatcher.__VMmodelToClass(vm, infoRspec.response.information.resources.server[sIndex].virtual_machine[vIndex]) resourcesString = XmlHelper.craftXmlClass(infoRspec) localHashValue = str(hash(resourcesString)) try: rHashObject = resourcesHash.objects.get(projectUUID = projectUUID, sliceUUID = sliceUUID) rHashObject.hashValue = localHashValue rHashObject.save() except: rHashObject = resourcesHash(hashValue = localHashValue, projectUUID= projectUUID, sliceUUID = sliceUUID) rHashObject.save() if remoteHashValue == rHashObject.hashValue: return localHashValue, '' else: return localHashValue, resourcesString
def forceListActiveVMs(serverID='None', vmID='None'): print serverID if serverID != 'None': server = VTDriver.getServerById(serverID) vms = server.getVMs() else: if vmID != 'None': servers = VTDriver.getAllServers() vms = list() for server in servers: for vm in server.getVMs(): print vm.name, vm.id, int(vmID), type( vm.id), vm.id == int(vmID) vms = server.getVMs(id=int(vmID)) vmID = vms[0].getUUID() break if not vms: raise Exception("VM not Found") xmlrpc_server = xmlrpclib.Server(server.getAgentURL()) vms_info = xmlrpc_server.force_list_active_vms( server.getAgentPassword(), vmID) updated_vms = list() simple_actions = dict() for vm in vms: if vm.getUUID() in vms_info.keys(): vm.setState("running") vm.save() simple_actions[vm.getUUID()] = "running" else: if vm.getState() in [ 'deleting...', 'failed', 'on queue', 'unknown' ]: child = vm.getChildObject() server = vm.Server.get() #Action.objects.all().filter(objectUUID = vm.uuid).delete() server.deleteVM(vm) # Keep actions table up-to-date after each deletion vm_uuids = [vm.uuid for vm in VirtualMachine.objects.all()] Action.objects.all().exclude( objectUUID__in=vm_uuids).delete() simple_actions[vm.getUUID()] = "deleted" elif vm.getState() in [ 'running', "starting...", "stopping..." ]: vm.setState('stopped') vm.save() simple_actions[vm.getUUID()] = "stopped" else: continue return vms_info
def admin_servers(request): if (not request.user.is_superuser): return simple.direct_to_template(request, template = 'not_admin.html', extra_context = {'user':request.user}, ) servers = VTDriver.getAllServers() return simple.direct_to_template( request, template="servers/admin_servers.html", extra_context={"servers_ids": servers})
def forceListActiveVMs(serverID='None', vmID='None'): if serverID != 'None': server = VTDriver.getServerById(serverID) vtam_vms = server.getVMs() else: if vmID != 'None': servers = VTDriver.getAllServers() vtam_vms = list() for server in servers: vtam_vms = server.getVMs(id=int(vmID)) if vtam_vms: vmID = vtam_vms[0].getUUID() break if not vtam_vms: raise Exception("VM not found") xmlrpc_server = xmlrpclib.Server(server.getAgentURL()) # Handle safely the connection against the agent try: server_active_vms = xmlrpc_server.force_list_active_vms( server.getAgentPassword(), vmID) for vm in vtam_vms: if vm.getUUID() in server_active_vms.keys(): vm.setState("running") vm.save() else: # XXX: avoiding "on queue" and "unknown" states to avoid bad management #if vm.getState() in ['deleting...', 'failed', 'on queue', 'unknown']: if vm.getState() in ["deleting...", "failed"]: child = vm.getChildObject() server = vm.Server.get() #Action.objects.all().filter(objectUUID = vm.uuid).delete() server.deleteVM(vm) # Keep actions table up-to-date after each deletion vm_uuids = [ vm.uuid for vm in VirtualMachine.objects.all() ] Action.objects.all().exclude( objectUUID__in=vm_uuids).delete() elif vm.getState() in [ "running", "starting...", "stopping..." ]: vm.setState("stopped") vm.save() else: continue except: server_active_vms = dict() return server_active_vms
def forceListActiveVMs(serverID='None', vmID='None'): print serverID if serverID != 'None': server = VTDriver.getServerById(serverID) vms = server.getVMs() else: if vmID != 'None': servers = VTDriver.getAllServers() vms = list() for server in servers: for vm in server.getVMs(): print vm.name, vm.id, int(vmID), type(vm.id), vm.id==int(vmID) vms = server.getVMs(id=int(vmID)) vmID = vms[0].getUUID() break if not vms: raise Exception("VM not Found") xmlrpc_server = xmlrpclib.Server(server.getAgentURL()) vms_info = xmlrpc_server.force_list_active_vms(server.getAgentPassword(), vmID) updated_vms = list() simple_actions = dict() for vm in vms: if vm.getUUID() in vms_info.keys(): vm.setState("running") vm.save() simple_actions[vm.getUUID()] = "running" else: if vm.getState() in ['deleting...', 'failed', 'on queue', 'unknown']: child = vm.getChildObject() server = vm.Server.get() #Action.objects.all().filter(objectUUID = vm.uuid).delete() server.deleteVM(vm) # Keep actions table up-to-date after each deletion vm_uuids = [ vm.uuid for vm in VirtualMachine.objects.all() ] Action.objects.all().exclude(objectUUID__in = vm_uuids).delete() simple_actions[vm.getUUID()] = "deleted" elif vm.getState() in ['running', "starting...", "stopping..."] : vm.setState('stopped') vm.save() simple_actions[vm.getUUID()] = "stopped" else: continue return vms_info
def dashboard(request): ''' The dashboard view function ''' if (not request.user.is_superuser): return HttpResponseRedirect('/accounts/login') else: #Admin servers = VTDriver.getAllServers() return simple.direct_to_template(request, template = 'dashboard_admin.html', extra_context = { 'user': request.user, 'servers' : servers, }, )
def forceListActiveVMs(serverID='None', vmID='None'): if serverID != 'None': server = VTDriver.getServerById(serverID) vtam_vms = server.getVMs() else: if vmID != 'None': servers = VTDriver.getAllServers() vtam_vms = list() for server in servers: vtam_vms = server.getVMs(id=int(vmID)) if vtam_vms: vmID = vtam_vms[0].getUUID() break if not vtam_vms: raise Exception("VM not found") xmlrpc_server = xmlrpclib.Server(server.getAgentURL()) # Handle safely the connection against the agent try: server_active_vms = xmlrpc_server.force_list_active_vms(server.getAgentPassword(), vmID) for vm in vtam_vms: if vm.getUUID() in server_active_vms.keys(): vm.setState("running") vm.save() else: # XXX: avoiding "on queue" and "unknown" states to avoid bad management #if vm.getState() in ['deleting...', 'failed', 'on queue', 'unknown']: if vm.getState() in ["deleting...", "failed"]: child = vm.getChildObject() server = vm.Server.get() #Action.objects.all().filter(objectUUID = vm.uuid).delete() server.deleteVM(vm) # Keep actions table up-to-date after each deletion vm_uuids = [ vm.uuid for vm in VirtualMachine.objects.all() ] Action.objects.all().exclude(objectUUID__in = vm_uuids).delete() elif vm.getState() in ["running", "starting...", "stopping..."] : vm.setState("stopped") vm.save() else: continue except: server_active_vms = dict() return server_active_vms
def listResources(remoteHashValue, projectUUID='None', sliceUUID='None'): logging.debug("Enter listResources") infoRspec = XmlHelper.getSimpleInformation() servers = VTDriver.getAllServers() baseVM = copy.deepcopy(infoRspec.response.information.resources. server[0].virtual_machine[0]) if not servers: logging.debug("No VTServers available") infoRspec.response.information.resources.server.pop() resourcesString = XmlHelper.craftXmlClass(infoRspec) localHashValue = str(hash(resourcesString)) else: for sIndex, server in enumerate(servers): if (sIndex == 0): baseServer = copy.deepcopy( infoRspec.response.information.resources.server[0]) if (sIndex != 0): newServer = copy.deepcopy(baseServer) infoRspec.response.information.resources.server.append( newServer) InformationDispatcher.__ServerModelToClass( server, infoRspec.response.information.resources.server[sIndex]) if (projectUUID is not 'None'): vms = server.getVMs(projectId=projectUUID) else: vms = server.getVMs() if not vms: logging.debug("No VMs available") if infoRspec.response.information.resources.server[ sIndex].virtual_machine: infoRspec.response.information.resources.server[ sIndex].virtual_machine.pop() elif (sliceUUID is not 'None'): vms = vms.filter(sliceId=sliceUUID) if not vms: logging.error("No VMs available") infoRspec.response.information.resources.server[ sIndex].virtual_machine.pop() for vIndex, vm in enumerate(vms): if (vIndex != 0): newVM = copy.deepcopy(baseVM) infoRspec.response.information.resources.server[ sIndex].virtual_machine.append(newVM) InformationDispatcher.__VMmodelToClass( vm, infoRspec.response.information.resources. server[sIndex].virtual_machine[vIndex]) resourcesString = XmlHelper.craftXmlClass(infoRspec) localHashValue = str(hash(resourcesString)) try: rHashObject = resourcesHash.objects.get(projectUUID=projectUUID, sliceUUID=sliceUUID) rHashObject.hashValue = localHashValue rHashObject.save() except: rHashObject = resourcesHash(hashValue=localHashValue, projectUUID=projectUUID, sliceUUID=sliceUUID) rHashObject.save() if remoteHashValue == rHashObject.hashValue: return localHashValue, '' else: return localHashValue, resourcesString