[docs] include required platforms of plugins

Change-Id: I16d105f3354a7429cbc4569923da980645292b4d
This commit is contained in:
Andrey Kurilin 2017-04-19 16:39:32 +03:00
parent 0734ea6b1e
commit 8cecf9f21d

View File

@ -20,6 +20,7 @@ import re
from rally.common.plugin import discover from rally.common.plugin import discover
from rally.common.plugin import plugin from rally.common.plugin import plugin
from rally.common import validation
from rally import plugins from rally import plugins
import utils import utils
@ -277,6 +278,30 @@ class PluginsReferenceDirective(rst.Directive):
raise Exception("Failed to display provided schema: %s" % raise Exception("Failed to display provided schema: %s" %
info["schema"]) info["schema"])
if issubclass(plugin_cls, validation.ValidatablePluginMixin):
validators = plugin_cls._meta_get("validators", default=[])
platforms = [kwargs for name, args, kwargs in validators
if name == "required_platform"]
if platforms:
section_obj.append(
utils.paragraph("**Requires platform(s)**:"))
section = ""
for p in platforms:
section += "* %s" % p["platform"]
admin_msg = "credentials for admin user"
user_msg = ("regular users (temporary users can be created"
" via the 'users' context if admin user is "
"specified for the platform)")
if p.get("admin", False) and p.get("users", False):
section += " with %s and %s." % (admin_msg, user_msg)
elif p.get("admin", False):
section += " with %s." % admin_msg
elif p.get("users", False):
section += " with %s." % user_msg
section += "\n"
section_obj.extend(utils.parse_text(section))
filename = info["module"].replace(".", "/") filename = info["module"].replace(".", "/")
ref = "https://github.com/openstack/rally/blob/master/%s.py" % filename ref = "https://github.com/openstack/rally/blob/master/%s.py" % filename
section_obj.extend(utils.parse_text("**Module**:\n`%s`__\n\n__ %s" section_obj.extend(utils.parse_text("**Module**:\n`%s`__\n\n__ %s"