Example #1
0
	def _startDev(self):
		host = self.host
		vmid = self.id
		state = repy.getState(host, vmid)
		if not self.getVncPort():
			self.host.takeId("port", self.setVncPort)
		if state == State.CREATED:
			self._prepareDev()
			state = repy.getState(host, vmid)
		for iface in self.interfaceSetAll():
			bridge = self.getBridge(iface)
			assert bridge, "Interface has no bridge %s" % iface
			ifaceutil.bridgeCreate(self.host, bridge)
			ifaceutil.ifup(self.host, bridge)
		try: 
			if state == State.PREPARED:
				ifaces = [iface.name for iface in self.interfaceSetAll()]
				repy.start(host, vmid, ifaces, self.getArgs())
			for iface in self.interfaceSetAll():
				repy.waitForInterface(self.host, self.id, iface.name)
				ifaceutil.ifup(self.host, self.interfaceDevice(iface))
				self.connectToBridge(iface, self.getBridge(iface))
			self._startVnc()
			self.state = State.STARTED
			self.save()
		except:
			try:
				repy.stop(host, vmid)
			except:
				pass
			raise
Example #2
0
	def _createBridges(self):
		for iface in self.interfaceSetAll():
			if iface.isConnected():
				bridge = self.getBridge(iface)
				assert bridge, "Interface has no bridge %s" % iface
				ifaceutil.bridgeCreate(self.host, bridge)
				ifaceutil.ifup(self.host, bridge)
Example #3
0
File: openvz.py Project: m3z/ToMaTo
	def _startDev(self):
		host = self.host
		vmid = self.getVmid()
		state = vzctl.getState(host, vmid)
		if state == State.CREATED:
			self._prepareDev()
			state = vzctl.getState(host, vmid)
		for iface in self.interfaceSetAll():
			bridge = self.getBridge(iface)
			assert bridge, "Interface has no bridge %s" % iface
			ifaceutil.bridgeCreate(self.host, bridge)
			ifaceutil.ifup(self.host, bridge)
		try: 
			if state == State.PREPARED:
				vzctl.start(host, vmid)
			for iface in self.interfaceSetAll():
				assert util.waitFor(lambda: ifaceutil.interfaceExists(host, self.interfaceDevice(iface)))
				self.connectToBridge(iface, self.getBridge(iface))
				iface.upcast()._configureNetwork()
			self._startVnc()
			self.state = State.STARTED
			self.save()
		except:
			try:
				vzctl.stop(host, vmid)
			except:
				pass
			raise
Example #4
0
	def _startDev(self):
		host = self.host
		vmid = self.vmid
		state = qm.getState(host, vmid)
		if not self.getVncPort():
			self.host.takeId("port", self.setVncPort)
		if state == State.CREATED:
			self._prepareDev()
			state = qm.getState(host, vmid)
		for iface in self.interfaceSetAll():
			iface_id = int(re.match("eth(\d+)", iface.name).group(1))
			# qm automatically connects ethN to vmbrN
			# if this bridge does not exist, kvm start fails
			ifaceutil.bridgeCreate(host, "vmbr%d" % iface_id)
		try: 
			if state == State.PREPARED:
				qm.start(host, vmid)
			for iface in self.interfaceSetAll():
				qm.waitForInterface(host, vmid, iface.name)
				self.connectToBridge(iface, self.getBridge(iface))
			self._startVnc()
			self.state = State.STARTED
			self.save()
		except:
			try:
				qm.stop(host, vmid)
			except:
				pass
			raise
Example #5
0
	def getBridge(self, connection, create=True):
		bridge_id = connection.getBridgeId()
		assert bridge_id
		name = "gbr_%d" % bridge_id
		if create:
			host = connection.getHost()
			ifaceutil.bridgeCreate(host, name)
		return name
Example #6
0
	def connectToBridge(self):
		dev = self.device.upcast()
		bridge = dev.getBridge(self)
		if self.isConnected():
			if not ifaceutil.bridgeExists(dev.host, bridge):
				ifaceutil.bridgeCreate(dev.host, bridge)
			ifaceutil.bridgeConnect(dev.host, bridge, self.interfaceName())
			ifaceutil.ifup(dev.host, self.interfaceName())
Example #7
0
	def getBridge(self, connection, assign=True, create=True):
		assert connection.getHost(), "Interface is not prepared: %s" % connection.interface
		for enb in self.used_network.externalnetworkbridge_set.all():
			if enb.host == connection.getHost():
				if create:
					ifaceutil.bridgeCreate(enb.host, enb.bridge)
				return enb.bridge
		assert False, "No external network bridge %s(%s) on host %s" % (self.getNetworkType(), self.getNetworkGroup(), connection.interface.device.host)
Example #8
0
	def _startVm(self):
		for iface in self.interfaceSetAll():
			iface_id = int(re.match("eth(\d+)", iface.name).group(1))
			# qm automatically connects ethN to vmbrN
			# if this bridge does not exist, kvm start fails
			if not ifaceutil.interfaceExists(self.host, "vmbr%d" % iface_id):
				ifaceutil.bridgeCreate(self.host, "vmbr%d" % iface_id)
		qm.start(self.host, self.getVmid())
		for iface in self.interfaceSetAll():
			qm.waitForInterface(self.host, self.getVmid(), iface.name)
Example #9
0
	def connectToBridge(self, iface, bridge):
		ifaceutil.bridgeCreate(self.host, bridge)
		ifaceutil.bridgeConnect(self.host, bridge, self.interfaceDevice(iface))
		ifaceutil.ifup(self.host, bridge)