Esempio n. 1
0
    def startManage(self):
        logger.info("----------------------------------")
        logger.info("Management cycle triggered")
        logger.info("Time: %s" % datetime.today().strftime("%Y-%m-%d %H:%M:%S"))

        # regular management
        self.reqBox.manage()
        self.siteBox.manage()
        self.intBox.manage()

        # scaling
        mReq = self.reqBox.getMachineTypeRequirement()
        logger.info("Current requirement: %s" % mReq)

        siteInfo = self.siteBox.siteInformation
        runningBySite = self.siteBox.runningMachinesCount

        # contains a list of all machine types merged
        runningOverall = summarize_dicts(list(runningBySite.values()))

        machStat = dict()
        for (key_, value_) in runningOverall.items():
            machStat[key_] = MachineStatus(mReq.get(key_, 0), value_)

        for key_ in mReq:
            if not key_ in machStat:
                machStat[key_] = MachineStatus(mReq.get(key_, 0), 0)

        decision = self.broker.decide(machStat, siteInfo.values())

        # Service machines may modify site decision(s).
        decision = self.siteBox.modServiceMachineDecision(decision)

        logger.info("Decision: %s" % decision)
        logger.debug(runningBySite)
        # make machine counts absolute, as they come in relative from the broker
        for (ksite, vmach) in decision.items():
            logger.debug("vmatch=%s" % vmach)
            for kmach in vmach:
                decision[ksite][kmach] += runningBySite[ksite].get(kmach, [])
                logger.debug("decision[ksite][kmach]=%s" % decision[ksite][kmach])
        logger.info("Absolute Decision: %s" % decision)

        self.siteBox.applyMachineDecision(decision)

        logger.info(self.mr.getMachineOverview())

        MachineRegistryLogger.dump(self.mr.machines)

        log = JsonLog()
        log.writeLog()

        self.manageIterations += 1

        lastIteration = False
        if self.maximumManageIterations is not None:
            lastIteration = self.maximumManageIterations <= self.manageIterations

        if self.autoRun is True and lastIteration is False:
            self.startManagementTimer()
Esempio n. 2
0
    def startManage(self):
        logger.info("----------------------------------")
        logger.info("Management cycle triggered")
        logger.info("Time: %s" % datetime.today().strftime("%Y-%m-%d %H:%M:%S"))

        # regular management
        self.reqBox.manage()
        self.siteBox.manage()
        self.intBox.manage()

        # scaling
        mReq = self.reqBox.getMachineTypeRequirement()
        logger.info("Current requirement: %s" % mReq)

        siteInfo = self.siteBox.siteInformation
        runningBySite = self.siteBox.runningMachinesCount

        # contains a list of all machine types merged
        runningOverall = summarize_dicts(list(runningBySite.values()))

        machStat = dict()
        for (key_, value_) in runningOverall.items():
            machStat[key_] = MachineStatus(mReq.get(key_, 0), value_)

        for key_ in mReq:
            if not key_ in machStat:
                machStat[key_] = MachineStatus(mReq.get(key_, 0), 0)

        decision = self.broker.decide(machStat, siteInfo.values())

        # Service machines may modify site decision(s).
        decision = self.siteBox.modServiceMachineDecision(decision)

        logger.info("Decision: %s" % decision)

        # make machine counts absolute, as they come in relative from the broker
        for (ksite, vmach) in decision.items():
            for kmach in vmach:
                decision[ksite][kmach] += runningBySite[ksite].get(kmach, [])
        logger.info("Absolute Decision: %s" % decision)

        self.siteBox.applyMachineDecision(decision)

        logger.info(self.mr.getMachineOverview())

        MachineRegistryLogger.dump(self.mr.machines)

        log = JsonLog()
        log.writeLog()

        self.manageIterations += 1

        lastIteration = False
        if self.maximumManageIterations is not None:
            lastIteration = self.maximumManageIterations <= self.manageIterations

        if self.autoRun is True and lastIteration is False:
            self.startManagementTimer()
Esempio n. 3
0
 def init(self):
     # self.exportMethod(self.setMachineTypeMaxInstances, "setMachineTypeMaxInstances")
     self.mr.machines = MachineRegistryLogger.load()
Esempio n. 4
0
 def init(self):
     # self.exportMethod(self.setMachineTypeMaxInstances, "setMachineTypeMaxInstances")
     self.mr.machines = MachineRegistryLogger.load()