コード例 #1
0
	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
コード例 #2
0
 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
コード例 #3
0
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})
コード例 #4
0
 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
コード例 #5
0
 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
コード例 #6
0
ファイル: urlHandlers.py プロジェクト: cargious/ocf
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,
							},
						)
コード例 #7
0
 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
コード例 #8
0
    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