
Rally supports plugins for everything. You can write plugin for scenario, context, runner, sla, reports and so on. Current implementation is designed via python module. To make Rally find those plugins, you need to specify the path for them. It is ok, but has places for improvement: 1) providing the path to plugin eche time you launch Rally or configure it via Rally config. This is a place which rally plugins as pything packages can improve. Rally plugins can be easily auto-discovered by the right entry-point. No redundant pathes anymore 2) managing dependency. Python module doesn't have dependencies, package has. It means that delivering rally plugins via python package allows you to manage your dependencies separately from Rally. Also it allows to specify rally releases for which it was designed. Change-Id: I60a946c26a96e4777552f43bd44a306766f3c275
46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
# 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.import_modules_by_entry_point()
|
|
|
|
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)
|