diff --git a/rally/plugins/__init__.py b/rally/plugins/__init__.py index e69de29b..85522980 100644 --- a/rally/plugins/__init__.py +++ b/rally/plugins/__init__.py @@ -0,0 +1,43 @@ +# Copyright 2015: Mirantis Inc. +# 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 os + +import decorator + +from rally.common.plugin import discover + + +PLUGINS_LOADED = False + + +def load(): + global PLUGINS_LOADED + + if not PLUGINS_LOADED: + discover.import_modules_from_package("rally.deployment.engines") + discover.import_modules_from_package("rally.deployment.serverprovider") + discover.import_modules_from_package("rally.plugins") + + discover.load_plugins("/opt/rally/plugins/") + discover.load_plugins(os.path.expanduser("~/.rally/plugins/")) + + PLUGINS_LOADED = True + + +@decorator.decorator +def ensure_plugins_are_loaded(f, *args, **kwargs): + load() + return f(*args, **kwargs) diff --git a/tests/unit/test.py b/tests/unit/test.py index 0bfe7f68..b91f30fe 100644 --- a/tests/unit/test.py +++ b/tests/unit/test.py @@ -21,6 +21,7 @@ from oslotest import base from oslotest import mockpatch from rally import db +from rally import plugins from tests.unit import fakes @@ -41,6 +42,7 @@ class TestCase(base.BaseTestCase): def setUp(self): super(TestCase, self).setUp() self.addCleanup(mock.patch.stopall) + plugins.load() def _test_atomic_action_timer(self, atomic_actions, name): action_duration = atomic_actions.get(name)