Merge "Add multiple engine workers"
This commit is contained in:
commit
3d9f2b2245
|
@ -158,6 +158,11 @@ function configure_murano {
|
||||||
|
|
||||||
# Configure Murano API URL
|
# Configure Murano API URL
|
||||||
iniset $MURANO_CONF_FILE murano url "http://127.0.0.1:8082"
|
iniset $MURANO_CONF_FILE murano url "http://127.0.0.1:8082"
|
||||||
|
|
||||||
|
# Configure the number of engine workers
|
||||||
|
if [[ -n "$MURANO_ENGINE_WORKERS" ]]; then
|
||||||
|
iniset $MURANO_CONF_FILE engine workers $MURANO_ENGINE_WORKERS
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# install_murano_apps() - Install Murano apps from repository murano-apps, if required
|
# install_murano_apps() - Install Murano apps from repository murano-apps, if required
|
||||||
|
|
|
@ -28,6 +28,7 @@ else:
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
from oslo_concurrency import processutils
|
||||||
from oslo_log import log as logging
|
from oslo_log import log as logging
|
||||||
from oslo_service import service
|
from oslo_service import service
|
||||||
|
|
||||||
|
@ -49,9 +50,11 @@ def main():
|
||||||
config.parse_args()
|
config.parse_args()
|
||||||
|
|
||||||
logging.setup(CONF, 'murano')
|
logging.setup(CONF, 'murano')
|
||||||
launcher = service.ServiceLauncher(CONF)
|
workers = CONF.engine.workers
|
||||||
launcher.launch_service(engine.EngineService())
|
if not workers:
|
||||||
|
workers = processutils.get_worker_count()
|
||||||
|
launcher = service.launch(CONF,
|
||||||
|
engine.EngineService(), workers=workers)
|
||||||
launcher.wait()
|
launcher.wait()
|
||||||
except RuntimeError as e:
|
except RuntimeError as e:
|
||||||
sys.stderr.write("ERROR: %s\n" % e)
|
sys.stderr.write("ERROR: %s\n" % e)
|
||||||
|
|
|
@ -199,6 +199,8 @@ engine_opts = [
|
||||||
cfg.IntOpt('agent_timeout', default=3600,
|
cfg.IntOpt('agent_timeout', default=3600,
|
||||||
help=_('Time for waiting for a response from murano agent '
|
help=_('Time for waiting for a response from murano agent '
|
||||||
'during the deployment')),
|
'during the deployment')),
|
||||||
|
cfg.IntOpt('workers',
|
||||||
|
help=_('Number of workers'))
|
||||||
]
|
]
|
||||||
|
|
||||||
# TODO(sjmc7): move into engine opts?
|
# TODO(sjmc7): move into engine opts?
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
# Copyright (c) 2016 NEC Corporation. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
import mock
|
||||||
|
|
||||||
|
from oslo_concurrency import processutils
|
||||||
|
from oslo_config import cfg
|
||||||
|
from oslo_log import log as logging
|
||||||
|
|
||||||
|
from murano.cmd import engine
|
||||||
|
from murano.common import config
|
||||||
|
from murano.tests.unit import base
|
||||||
|
|
||||||
|
CONF = cfg.CONF
|
||||||
|
|
||||||
|
|
||||||
|
class TestEngineWorkers(base.MuranoTestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(TestEngineWorkers, self).setUp()
|
||||||
|
|
||||||
|
@mock.patch.object(config, 'parse_args')
|
||||||
|
@mock.patch.object(logging, 'setup')
|
||||||
|
@mock.patch('oslo_service.service.launch')
|
||||||
|
def test_workers_default(self, launch, setup, parse_args):
|
||||||
|
engine.main()
|
||||||
|
launch.assert_called_once_with(mock.ANY, mock.ANY,
|
||||||
|
workers=processutils.get_worker_count())
|
||||||
|
|
||||||
|
@mock.patch.object(config, 'parse_args')
|
||||||
|
@mock.patch.object(logging, 'setup')
|
||||||
|
@mock.patch('oslo_service.service.launch')
|
||||||
|
def test_workers_good_setting(self, launch, setup, parse_args):
|
||||||
|
self.override_config("workers", 8, "engine")
|
||||||
|
engine.main()
|
||||||
|
launch.assert_called_once_with(mock.ANY, mock.ANY, workers=8)
|
||||||
|
|
||||||
|
@mock.patch.object(config, 'parse_args')
|
||||||
|
@mock.patch.object(logging, 'setup')
|
||||||
|
@mock.patch('oslo_service.service.launch')
|
||||||
|
def test_workers_zero_setting(self, launch, setup, parse_args):
|
||||||
|
self.override_config("workers", 0, "engine")
|
||||||
|
engine.main()
|
||||||
|
launch.assert_called_once_with(mock.ANY, mock.ANY,
|
||||||
|
workers=processutils.get_worker_count())
|
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
features:
|
||||||
|
- Add multiple engine workers
|
||||||
|
issues:
|
||||||
|
- Enabling multiple workers might break workflows under BSD and Windows systems
|
||||||
|
|
Loading…
Reference in New Issue