You are viewing a plain text version of this content. The canonical link for it is here.
Posted to tashi-commits@incubator.apache.org by mr...@apache.org on 2009/03/04 19:56:48 UTC

svn commit: r750128 - /incubator/tashi/trunk/src/tashi/nodemanager/vmcontrol/qemu.py

Author: mryan3
Date: Wed Mar  4 19:56:48 2009
New Revision: 750128

URL: http://svn.apache.org/viewvc?rev=750128&view=rev
Log:
Update of qemu backend to use instance objects instead of an old internal format.


Modified:
    incubator/tashi/trunk/src/tashi/nodemanager/vmcontrol/qemu.py

Modified: incubator/tashi/trunk/src/tashi/nodemanager/vmcontrol/qemu.py
URL: http://svn.apache.org/viewvc/incubator/tashi/trunk/src/tashi/nodemanager/vmcontrol/qemu.py?rev=750128&r1=750127&r2=750128&view=diff
==============================================================================
--- incubator/tashi/trunk/src/tashi/nodemanager/vmcontrol/qemu.py (original)
+++ incubator/tashi/trunk/src/tashi/nodemanager/vmcontrol/qemu.py Wed Mar  4 19:56:48 2009
@@ -259,15 +259,11 @@
 	def loadChildInfo(self, vmId):
 		child = self.anonClass(pid=vmId)
 		info = open(self.INFO_DIR + "/%d"%(child.pid), "r")
-		(image, macAddr, memory, cores, opts, pid, ptyFile) = cPickle.load(info)
+		(instance, pid, ptyFile) = cPickle.load(info)
 		info.close()
 		if (pid != child.pid):
 			raise Exception, "PID mismatch"
-		child.image = image
-		child.macAddr = macAddr
-		child.memory = memory
-		child.cores = cores
-		child.opts = opts
+		child.instance = instance
 		child.pid = pid
 		child.ptyFile = ptyFile
 		if ('monitorHistory' not in child.__dict__):
@@ -284,7 +280,7 @@
 	
 	def saveChildInfo(self, child):
 		info = open(self.INFO_DIR + "/%d"%(child.pid), "w")
-		cPickle.dump((child.image, child.macAddr, child.memory, child.cores, child.opts, child.pid, child.ptyFile), info)
+		cPickle.dump((child.instance, child.pid, child.ptyFile), info)
 		info.close()
 
 	def startVm(self, instance, source):
@@ -326,7 +322,7 @@
 			os.execl(self.QEMU_BIN, *cmd)
 			sys.exit(-1)
 		os.close(pipe_w)
-		child = self.anonClass(pid=pid, image=image, macAddr=macAddr, memory=memory, cores=cores, opts=opts, stderr=os.fdopen(pipe_r, 'r'), migratingOut = False, monitorHistory=[], errorBit = False, OSchild = True)
+		child = self.anonClass(pid=pid, instance=instance, stderr=os.fdopen(pipe_r, 'r'), migratingOut = False, monitorHistory=[], errorBit = False, OSchild = True)
 		child.ptyFile = None
 		child.vncPort = -1
 		self.saveChildInfo(child)
@@ -372,38 +368,6 @@
 		self.enterCommand(child, "quit", expectPrompt=False)
 		return vmId
 	
-	def instanceToOld(self, instance):
-		if (len(instance.disks) != 1):
-			raise NotImplementedError
-		if (len(instance.nics) != 1):
-			raise NotImplementedError
-		image = instance.disks[0].uri
-		macAddr = instance.nics[0].mac
-		memory = instance.memory
-		cores = instance.cores
-		if (instance.disks[0].persistent):
-			diskModel = "persistent"
-		else:
-			diskModel = "transient"
-		instanceId = instance.id
-		opts = instance.hints
-#		if (diskModel != "transient"):
-#			raise NotImplementedError
-		return (image, macAddr, memory, cores, diskModel, instanceId, opts)
-	
-	def oldToInstance(self, image, macAddr, memory, cores, diskModel, opts):
-		instance = self.anonClass()
-		instance.disks = [self.anonClass()]
-		instance.nics = [self.anonClass()]
-		instance.disks[0].uri = image
-		instance.nics[0].mac = macAddr
-		instance.memory = memory
-		instance.cores = cores
-		instance.disks[0].persistent = (diskModel == "persistent")
-		instance.id = -1
-		instance.hints = opts
-		return instance
-	
 	def instantiateVm(self, instance):
 		(vmId, cmd) = self.startVm(instance, None)
 		child = self.getChildFromPid(vmId)
@@ -415,7 +379,7 @@
 	def suspendVm(self, vmId, target, suspendCookie):
 		child = self.getChildFromPid(vmId)
 		info = self.dfs.open("%s.info" % (target), "w")
-		cPickle.dump((child.image, child.macAddr, child.memory, child.cores, child.opts, suspendCookie), info)
+		cPickle.dump((child.instance, suspendCookie), info)
 		info.close()
 		# XXX: Use fifo to improve performance
 		vmId = self.stopVm(vmId, "\"exec:gzip -c > /tmp/%s.dat\"" % (target), True)
@@ -426,12 +390,11 @@
 		# XXX: Read in and unzip directly (or use fifo)
 		self.dfs.copyFrom("%s.dat" % (source), "/tmp/%s.dat" % (source))
 		info = self.dfs.open("%s.info" % (source), "r")
-		(image, macAddr, memory, cores, opts, suspendCookie) = cPickle.load(info)
+		(instance, suspendCookie) = cPickle.load(info)
 		info.close()
 		tmpFile = self.genTmpFilename()
 		os.mkfifo(tmpFile)
 		zcat = subprocess.Popen(args=["/bin/bash", "-c", "zcat /tmp/%s.dat > %s" % (source, tmpFile)], executable="/bin/bash", close_fds=True)
-		instance = self.oldToInstance(image, macAddr, memory, cores, "transient", opts)
 		(vmId, cmd) = self.startVm(instance, "file://%s" % tmpFile)
 		zcat.wait()
 		os.unlink(tmpFile)