コード例 #1
0
    def processProvisioning(provisioning):
        for action in provisioning.action:
            vm = action.server.virtual_machines[0]
            try:
                dispatcher = ProvisioningDispatcher.__getProvisioningDispatcher(
                    vm.virtualization_type)
            except Exception as e:
                XmlRpcClient.sendAsyncProvisioningActionStatus(
                    action.id, "FAILED", str(e))
                ProvisioningDispatcher.logger.error(str(e))
                return

            try:
                #Acquire VM lock
                VmMutexStore.lock(vm)
                #Send async notification
                XmlRpcClient.sendAsyncProvisioningActionStatus(
                    action.id, "ONGOING", "")

                ProvisioningDispatcher.__dispatchAction(dispatcher, action, vm)
            except Exception as e:
                ProvisioningDispatcher.logger.error(str(e))
                raise e
            finally:
                #Release VM lock
                VmMutexStore.unlock(vm)
コード例 #2
0
	def stopVM(id,vm):
		try:
			#Just try to stop
			XendManager.stopDomain(vm)
	
			XenProvisioningDispatcher.logger.info("VM named "+vm.name+" has been stopped.")
			#Send async notification
			XmlRpcClient.sendAsyncProvisioningActionStatus(id,"SUCCESS","")
		except Exception as e:
			XenProvisioningDispatcher.logger.error(str(e))
			#Send async notification
			XmlRpcClient.sendAsyncProvisioningActionStatus(id,"FAILED",str(e))
			return
コード例 #3
0
    def createVMfromImage(id, vm):
        pathToMountPoint = ""
        XenProvisioningDispatcher.logger.info(
            "Initiating creation process for VM: " + vm.name +
            " under project: " + vm.project_id + " and slice: " + vm.slice_id)
        try:
            #Clone HD
            HdManager.clone(vm)
            XenProvisioningDispatcher.logger.debug("HD cloned successfully...")

            #Mount copy
            pathToMountPoint = HdManager.mount(vm)
            XenProvisioningDispatcher.logger.debug("Mounting at:" +
                                                   pathToMountPoint)
            XenProvisioningDispatcher.logger.debug(
                "HD mounted successfully...")

            #Configure VM OS
            VMConfigurator.configureVmDisk(vm, pathToMountPoint)

            #Umount copy
            HdManager.umount(vm, pathToMountPoint)
            XenProvisioningDispatcher.logger.debug(
                "HD unmounted successfully...")

            #Synthesize config file
            VMConfigurator.createVmConfigurationFile(vm)
            XenProvisioningDispatcher.logger.debug(
                "XEN configuration file created successfully...")

            XenProvisioningDispatcher.logger.info("Creation of VM " + vm.name +
                                                  " has been successful!!")
            #Send async notification
            XmlRpcClient.sendAsyncProvisioningActionStatus(id, "SUCCESS", "")
        except Exception as e:
            XenProvisioningDispatcher.logger.error(str(e))
            #Send async notification
            try:
                HdManager.umount(vm, pathToMountPoint)
            except:
                pass
            try:
                #Delete VM disc and conf file if the error is not due because
                #the VM already exists
                if not isinstance(e, VMalreadyExists):
                    XenProvisioningDispatcher.deleteVM(id, vm)
            except:
                pass
            XmlRpcClient.sendAsyncProvisioningActionStatus(
                id, "FAILED", str(e))
            return
コード例 #4
0
	def hardStopVM(vmid, vm):
		try:
			# First stop domain
			KVMManager.stopDomain(vm)	
			HdManager.stopHook(vm)	
		
			KVMProvisioningDispatcher.logger.info("VM named " + vm.name + " has been stopped.")
			# Send async notification
			XmlRpcClient.sendAsyncProvisioningActionStatus(vmid, "SUCCESS", "")
		except Exception as e:
			KVMProvisioningDispatcher.logger.error(str(e))
			# Send async notification
			XmlRpcClient.sendAsyncProvisioningActionStatus(vmid, "FAILED", str(e))
		return
コード例 #5
0
	def rebootVM(vmid, vm):
		try:
			# Just try to reboot
			HdManager.rebootHook(vm)
			KVMManager.rebootDomain(vm)
	
			KVMProvisioningDispatcher.logger.info("VM named " + vm.name + " has been rebooted.")
			# Send async notification
			XmlRpcClient.sendAsyncProvisioningActionStatus(vmid, "SUCCESS", "")
		except Exception as e:
			KVMProvisioningDispatcher.logger.error(str(e))
			# Send async notification
			XmlRpcClient.sendAsyncProvisioningActionStatus(vmid, "FAILED", str(e))
		return
コード例 #6
0
    def stopVM(id, vm):
        try:
            #Just try to stop
            XendManager.stopDomain(vm)

            XenProvisioningDispatcher.logger.info("VM named " + vm.name +
                                                  " has been stopped.")
            #Send async notification
            XmlRpcClient.sendAsyncProvisioningActionStatus(id, "SUCCESS", "")
        except Exception as e:
            XenProvisioningDispatcher.logger.error(str(e))
            #Send async notification
            XmlRpcClient.sendAsyncProvisioningActionStatus(
                id, "FAILED", str(e))
            return
コード例 #7
0
	def createVMfromImage(vmid, vm):
		KVMProvisioningDispatcher.logger.info("XXX createVMfromImage start")
		pathToMountPoint = ""	
		KVMProvisioningDispatcher.logger.info("Initiating creation process for VM: " + vm.name
											+ " under project: " + vm.project_id
											+ " and slice: " + vm.slice_id)
		try:
			# Clone HD
			HdManager.clone(vm)
			KVMProvisioningDispatcher.logger.debug("HD cloned successfully...")
			
			# Mount copy
			pathToMountPoint = HdManager.mount(vm)
			KVMProvisioningDispatcher.logger.debug("Mounting at: " + pathToMountPoint)
			KVMProvisioningDispatcher.logger.debug("HD mounted successfully...")
			
			# Configure VM OS
			VMConfigurator.configureVmDisk(vm, pathToMountPoint)

			# Umount copy
			HdManager.umount(vm, pathToMountPoint)
			KVMProvisioningDispatcher.logger.debug("HD unmounted successfully...")
	
			# Synthesize config file
			VMConfigurator.createVmConfigurationFile(vm)
			KVMProvisioningDispatcher.logger.debug("KVM configuration file created successfully...")
			
			KVMProvisioningDispatcher.logger.info("Creation of VM " + vm.name + " has been successful!!")
			# Send async notification
			XmlRpcClient.sendAsyncProvisioningActionStatus(vmid, "SUCCESS", "")
		except Exception as e:
			KVMProvisioningDispatcher.logger.error(str(e))
			KVMProvisioningDispatcher.logger.error(traceback.format_exc())
			# Send async notification
			try:
				HdManager.umount(vm, pathToMountPoint)
			except:
				pass
			try:
				# Delete VM disc and conf file if the error is not due because
				# the VM already exists
				if not isinstance(e, VMalreadyExists):
					KVMProvisioningDispatcher.deleteVM(vmid, vm)
			except:
				pass
			XmlRpcClient.sendAsyncProvisioningActionStatus(vmid, "FAILED", str(e))
		KVMProvisioningDispatcher.logger.info("XXX createVMfromImage end")
		return
コード例 #8
0
	def startVM(vmid, vm):
		KVMProvisioningDispatcher.logger.info("XXX startVM start")
		try:
			# Trigger	
			HdManager.startHook(vm)	
			KVMManager.startDomain(vm)
	
			KVMProvisioningDispatcher.logger.info("VM named " + vm.name + " has been started.")
			# Send async notification
			XmlRpcClient.sendAsyncProvisioningActionStatus(vmid, "SUCCESS", "")
		except Exception as e:
			KVMProvisioningDispatcher.logger.error(str(e))
			# Send async notification
			XmlRpcClient.sendAsyncProvisioningActionStatus(vmid, "FAILED", str(e))
		KVMProvisioningDispatcher.logger.info("XXX startVM end")
		return
コード例 #9
0
	def deleteVM(id,vm):
		try:
			try:
				#if it wasn't stopped, do it
				XendManager.stopDomain(vm)	
			except Exception as e:
				pass
			
			#Trigger Hd Deletion in Remote	
			HdManager.delete(vm)	

			#Send async notification
			XmlRpcClient.sendAsyncProvisioningActionStatus(id,"SUCCESS","")
		except Exception as e:
			XenProvisioningDispatcher.logger.error(str(e))
			#Send async notification
			XmlRpcClient.sendAsyncProvisioningActionStatus(id,"FAILED",str(e))
			return
コード例 #10
0
    def deleteVM(id, vm):
        try:
            try:
                #if it wasn't stopped, do it
                XendManager.stopDomain(vm)
            except Exception as e:
                pass

            #Trigger Hd Deletion in Remote
            HdManager.delete(vm)

            #Send async notification
            XmlRpcClient.sendAsyncProvisioningActionStatus(id, "SUCCESS", "")
        except Exception as e:
            XenProvisioningDispatcher.logger.error(str(e))
            #Send async notification
            XmlRpcClient.sendAsyncProvisioningActionStatus(
                id, "FAILED", str(e))
            return
コード例 #11
0
	def processProvisioning(provisioning):
		for action in provisioning.action:
			vm = action.server.virtual_machines[0]
			try:
				dispatcher = ProvisioningDispatcher.__getProvisioningDispatcher(vm.virtualization_type)	
			except Exception as e:
				XmlRpcClient.sendAsyncProvisioningActionStatus(action.id,"FAILED",str(e))
				ProvisioningDispatcher.logger.error(str(e))	
				return

			try:
				#Acquire VM lock
				VmMutexStore.lock(vm)
				#Send async notification
				XmlRpcClient.sendAsyncProvisioningActionStatus(action.id,"ONGOING","")
	
				ProvisioningDispatcher.__dispatchAction(dispatcher,action,vm)	
			except Exception as e:
				ProvisioningDispatcher.logger.error(str(e))
				raise e
			finally:
				#Release VM lock
				VmMutexStore.unlock(vm)