Example #1
0
File: kvm.py Project: m3z/ToMaTo
	def configure(self, properties):
		if "template" in properties:
			fault.check(self.state != State.STARTED, "Cannot change template of running device: %s" % self.name)
		Device.configure(self, properties)
		if "template" in properties:
			self.setTemplate(properties["template"])
			if self.state == State.PREPARED:
				qm.useTemplate(self.host, self.getVmid(), self.getTemplate())
		self.save()
Example #2
0
	def _prepareDev(self):
		#assign host
		if not self.host:
			self.host = self.hostOptions().best()
			fault.check(self.host, "No matching host found")
			self.save()		
		host = self.host
		
		self._assignTemplate()
		
		self._assignBridges()
		
		if not self.getVmid():
			self.host.takeId("vmid", self.setVmid)
			fault.check(self.getVmid(), "No free vmid")
		vmid = self.getVmid()
		
		state = qm.getState(host, vmid)
		if state == State.STARTED:
			qm.stop(host, vmid)
			state = qm.getState(host, vmid)
		if state == State.PREPARED:
			qm.destroy(host, vmid)
			state = qm.getState(host, vmid)
		assert state == State.CREATED
		
		#nothing happened until here
		
		qm.create(host, vmid)
		try:
			qm.useTemplate(host, vmid, self.getTemplate())
			self._configureVm()
			for iface in self.interfaceSetAll():
				qm.addInterface(host, vmid, iface.name)
			self.state = State.PREPARED
			self.save()
		except:
			try:
				qm.destroy(host, vmid)
			except:
				pass
			raise
Example #3
0
	def _useTemplate(self):
		qm.useTemplate(self.host, self.getVmid(), self.getTemplate())