def executeInfrastructureTasks(self): print("") print("Executing Infrastructure tasks") print(" ...Executing site tasks") # ESTO ES UNA CHAPUZA # para saber si hay que hacer un profiling completo o no, miro la infraestructura # si no tiene hosts es que toca. # entonces, lo miro antes de crear las tarea,s ya que al crear las tareas # se rcean loss hosts... waitingTime = self.myInfrastructure.getSiteWaitingtime() siteTasks = self.myInfrastructure.createInfrastructureTasks(self.infrastructureTasks) for task in siteTasks: ExecutionManager.submit(task) # =================================================================== # print ("desactivado el envio de tareas de profiling: ID: PERROLOCO") # =================================================================== self.infrastructureTasks.append(task) if waitingTime > 0: print("Waiting for profiling tasks to execute") print("this will take " + str(waitingTime) + " seconds to execute") ExecutionManager.waitForTermination(siteTasks, waitingTime=waitingTime) print("profiling tasks executed") for task in siteTasks: self.myInfrastructure.updateInfoAfterProfiling(task) task.status = "CLEAR" base.Session.add(task)
def profileApplication(self): goodHosts = self.myInfrastructure.getGoodHosts() appProfilingTasks = [ ExecutionManager.createProfilingTask(host, self.myApplication) for host in goodHosts for i in range(2) ] # appProfilingTasks = [self.myApplication.profile.createProfilingTask(host) for host in goodHosts] # DEBIG # ======================================================================= # profilingTask = appProfilingTasks[0] # profilingTask.gwID = "2217" # self.myApplication.updateInfoAfterProfiling(profilingTask) # ======================================================================= # submit the tasks to the Grid for profilingTask in appProfilingTasks: ExecutionManager.submit(profilingTask) base.Session.add(profilingTask) try: base.Session.commit() except: base.Session.rollback() print("Lost connection with database, not storing anything!") profilingTime = 10 * self.myApplication.maxProfilingTime print("Waiting for the app profiles to finish, waiting for " + str(profilingTime) + " seconds") ExecutionManager.waitForTermination(appProfilingTasks, waitingTime=profilingTime) for profilingTask in appProfilingTasks: self.myApplication.updateInfoAfterProfiling(profilingTask) try: base.Session.commit() except: print("Lost connection with database, trying to recover it") try: base.Session = scoped_session(sessionmaker(bind=base.engine)) for profilingTask in appProfilingTasks: base.Session.add(profilingTask) base.Session.commit() print("Worked, yeah") except: print("didn't work, not storing anything! Will probably crash soon LOL") base.Session.rollback() print("Lost connection with database, not storing anything!")