Просмотр исходного кода

Merge pull request #217 from Dany9966/worker-count-configopt

Add `worker_count` config option to Coriolis services
Gabriel 4 лет назад
Родитель
Сommit
07e26b1f46

+ 10 - 0
coriolis/cmd/api.py

@@ -3,17 +3,27 @@
 
 import sys
 
+from oslo_concurrency import processutils
 from oslo_config import cfg
 
 from coriolis import service
 from coriolis import utils
 
+api_opts = [
+    cfg.IntOpt('worker_count',
+               min=1, default=processutils.get_worker_count(),
+               help='Number of processes in which the service will be running')
+]
+
 CONF = cfg.CONF
+CONF.register_opts(api_opts, 'api')
 
 
 def main():
     worker_count, args = service.get_worker_count_from_args(sys.argv)
     CONF(args[1:], project='coriolis', version="1.0.0")
+    if not worker_count:
+        worker_count = CONF.api.worker_count
     utils.setup_logging()
 
     server = service.WSGIService(

+ 10 - 0
coriolis/cmd/conductor.py

@@ -3,6 +3,7 @@
 
 import sys
 
+from oslo_concurrency import processutils
 from oslo_config import cfg
 
 from coriolis import constants
@@ -10,12 +11,21 @@ from coriolis.conductor.rpc import server as rpc_server
 from coriolis import service
 from coriolis import utils
 
+conductor_opts = [
+    cfg.IntOpt('worker_count',
+               min=1, default=processutils.get_worker_count(),
+               help='Number of processes in which the service will be running')
+]
+
 CONF = cfg.CONF
+CONF.register_opts(conductor_opts, 'conductor')
 
 
 def main():
     worker_count, args = service.get_worker_count_from_args(sys.argv)
     CONF(args[1:], project='coriolis', version="1.0.0")
+    if not worker_count:
+        worker_count = CONF.conductor.worker_count
     utils.setup_logging()
     service.check_locks_dir_empty()
 

+ 8 - 1
coriolis/cmd/minion_manager.py

@@ -10,7 +10,14 @@ from coriolis import service
 from coriolis import utils
 from coriolis.minion_manager.rpc import server as rpc_server
 
+minion_manager_opts = [
+    cfg.IntOpt('worker_count',
+               min=1, default=1,
+               help='Number of processes in which the service will be running')
+]
+
 CONF = cfg.CONF
+CONF.register_opts(minion_manager_opts, 'minion_manager')
 
 
 def main():
@@ -21,7 +28,7 @@ def main():
     server = service.MessagingService(
         constants.MINION_MANAGER_MAIN_MESSAGING_TOPIC,
         [rpc_server.MinionManagerServerEndpoint()],
-        rpc_server.VERSION, worker_count=1)
+        rpc_server.VERSION, worker_count=CONF.minion_manager.worker_count)
     launcher = service.service.launch(
         CONF, server, workers=server.get_workers_count())
     launcher.wait()

+ 8 - 1
coriolis/cmd/scheduler.py

@@ -10,7 +10,14 @@ from coriolis import service
 from coriolis import utils
 from coriolis.scheduler.rpc import server as rpc_server
 
+scheduler_opts = [
+    cfg.IntOpt('worker_count',
+               min=1, default=1,
+               help='Number of processes in which the service will be running')
+]
+
 CONF = cfg.CONF
+CONF.register_opts(scheduler_opts, 'scheduler')
 
 
 def main():
@@ -21,7 +28,7 @@ def main():
     server = service.MessagingService(
         constants.SCHEDULER_MAIN_MESSAGING_TOPIC,
         [rpc_server.SchedulerServerEndpoint()],
-        rpc_server.VERSION, worker_count=1)
+        rpc_server.VERSION, worker_count=CONF.scheduler.worker_count)
     launcher = service.service.launch(
         CONF, server, workers=server.get_workers_count())
     launcher.wait()

+ 10 - 0
coriolis/cmd/worker.py

@@ -3,6 +3,7 @@
 
 import sys
 
+from oslo_concurrency import processutils
 from oslo_config import cfg
 
 from coriolis import constants
@@ -10,12 +11,21 @@ from coriolis import service
 from coriolis import utils
 from coriolis.worker.rpc import server as rpc_server
 
+worker_opts = [
+    cfg.IntOpt('worker_count',
+               min=1, default=processutils.get_worker_count(),
+               help='Number of processes in which the service will be running')
+]
+
 CONF = cfg.CONF
+CONF.register_opts(worker_opts, 'worker')
 
 
 def main():
     worker_count, args = service.get_worker_count_from_args(sys.argv)
     CONF(args[1:], project='coriolis', version="1.0.0")
+    if not worker_count:
+        worker_count = CONF.worker.worker_count
     utils.setup_logging()
 
     server = service.MessagingService(

+ 0 - 1
coriolis/service.py

@@ -51,7 +51,6 @@ def get_worker_count_from_args(argv):
         return count
     parser.add_argument(
         '--worker-process-count', metavar='N', type=_check_positive_worker_count,
-        default=processutils.get_worker_count(),
         help="Number of worker processes for this service. Defaults to the "
              "number of logical CPU cores on the system.")
     args, unknown_args = parser.parse_known_args(args=argv)