def run(self): # Redirect stdout and stderr to logger sys.stdout = LoggerWriter(self.logger, logging.INFO) sys.stderr = LoggerWriter(self.logger, logging.CRITICAL) self.logger.info('Started') cfg = VCMMDConfig() cfg.load(self.opts.config) lvl = cfg.get_choice('Logging.Level', choices=LOG_LEVELS) if lvl is not None: self.logger.setLevel(LOG_LEVELS[lvl]) ldmgr = LoadManager() rpcsrv = RPCServer(ldmgr) self.run_init_scripts() # threading.Event would fit better here, but it ignores signals. self.should_stop = False while not self.should_stop: time.sleep(1) rpcsrv.shutdown() ldmgr.shutdown() self.logger.info('Stopped')
def _mem_size_from_config(self, name, mem_total, default): cfg = VCMMDConfig() share = cfg.get_num('Host.%s.Share' % name, default=default[0], minimum=0.0, maximum=1.0) min_ = cfg.get_num('Host.%s.Min' % name, default=default[1], integer=True, minimum=0) max_ = cfg.get_num('Host.%s.Max' % name, default=default[2], integer=True, minimum=0) return clamp(int(mem_total * share), min_, max_)
def __init__(self): self.logger = logging.getLogger('vcmmd.ldmgr') self._registered_ves = {} # str -> VE self._registered_ves_lock = threading.Lock() self._host = Host() cfg = VCMMDConfig() thn = cfg.get_num('LoadManager.ThreadsNum', 5) self._req_queue = RQueue(maxsize=25) self._workers = [threading.Thread(target=self._worker_thread_fn) for _ in range(thn)] [w.start() for w in self._workers] # Load a policy policy_name = cfg.get_str('LoadManager.Policy', self.FALLBACK_POLICY) policy_name = self._load_alias(policy_name) self._load_policy(policy_name)