Пример #1
0
    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)
Пример #2
0
    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!")