Beispiel #1
0
		def instantiationFailed(reason):
			reason.trap(InstantiationError)

			failed=reason.value.value.keys()
			log.warn("Can't connect to", ", ".join(failed))

			# Delete failed nodes from cluster list
			running=self.getNodesList()
			for name in failed:
				running.remove(name)
			
			# Re-instanciate cluster without nodes in error
			d=XenCluster.getDeferInstance(running)
			d.addCallbacks(startRecover)
			return d
Beispiel #2
0
        def instantiationFailed(reason):
            reason.trap(InstantiationError)

            failed = reason.value.value.keys()
            log.warn("Can't connect to", ", ".join(failed))

            # Delete failed nodes from cluster list
            running = self.getNodesList()
            for name in failed:
                running.remove(name)

            # Re-instanciate cluster without nodes in error
            d = XenCluster.getDeferInstance(running)
            d.addCallbacks(startRecover)
            return d
Beispiel #3
0
 def getCluster(result):
     d = XenCluster.getDeferInstance(result)
     d.addCallback(doClusterUpdate)
     return d
Beispiel #4
0
		def getCluster(result):
			d=XenCluster.getDeferInstance(result)
			d.addCallback(doClusterUpdate)
			return d
Beispiel #5
0
			d=XenCluster.getDeferInstance(running)
			d.addCallbacks(startRecover)
			return d

		def startRecover(result):
			ds=list()
			for name in netFailed|diskFailed:
				bothFailed=name in netFailed and name in diskFailed
				d=threads.deferToThread(result.recover, name, self.status[name]['vms'], not bothFailed)
				d.addCallback(recoverSucceeded, name)
				ds.append(d)

			dl=defer.DeferredList(ds, consumeErrors=1)
			dl.addCallback(recoverEnded)
			return dl


		# Usecase #4: Start recovery of failed nodes
		if len(netFailed)>0 or len(diskFailed)>0:
			self.state=MasterService.ST_RECOVERY
			log.info("Starting recovery process...")

			d=XenCluster.getDeferInstance(self.getNodesList())
			d.addCallbacks(startRecover, instantiationFailed)
			d.addErrback(recoverFailed)
			d.addErrback(log.err)



# vim: ts=4:sw=4:ai
Beispiel #6
0
            d = XenCluster.getDeferInstance(running)
            d.addCallbacks(startRecover)
            return d

        def startRecover(result):
            ds = list()
            for name in netFailed | diskFailed:
                bothFailed = name in netFailed and name in diskFailed
                d = threads.deferToThread(result.recover, name,
                                          self.status[name]['vms'],
                                          not bothFailed)
                d.addCallback(recoverSucceeded, name)
                ds.append(d)

            dl = defer.DeferredList(ds, consumeErrors=1)
            dl.addCallback(recoverEnded)
            return dl

        # Usecase #4: Start recovery of failed nodes
        if len(netFailed) > 0 or len(diskFailed) > 0:
            self.state = MasterService.ST_RECOVERY
            log.info("Starting recovery process...")

            d = XenCluster.getDeferInstance(self.getNodesList())
            d.addCallbacks(startRecover, instantiationFailed)
            d.addErrback(recoverFailed)
            d.addErrback(log.err)


# vim: ts=4:sw=4:ai