Example #1
0
File: main.py Project: OpenVZ/vcmmd
    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')
Example #2
0
File: host.py Project: OpenVZ/vcmmd
 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_)
Example #3
0
File: base.py Project: OpenVZ/vcmmd
    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)