From aa82eb621661e86f9562b7a098cbc946c60c9d6a Mon Sep 17 00:00:00 2001 From: Michael Hanselmann <hansmi@google.com> Date: Fri, 22 Feb 2013 15:17:17 +0100 Subject: [PATCH] sphinx_ext: Factorize getting RAPI handlers The list of resources and handlers will also be used for generating a per-resource table. Signed-off-by: Michael Hanselmann <hansmi@google.com> Reviewed-by: Guido Trotter <ultrotter@google.com> --- lib/build/sphinx_ext.py | 64 ++++++++++++++++++++++++----------------- 1 file changed, 38 insertions(+), 26 deletions(-) diff --git a/lib/build/sphinx_ext.py b/lib/build/sphinx_ext.py index 93410fca6..b3ef049a7 100644 --- a/lib/build/sphinx_ext.py +++ b/lib/build/sphinx_ext.py @@ -492,6 +492,43 @@ def _DescribeHandlerAccess(handler, method): return "*(none)*" +class _RapiHandlersForDocsHelper(object): + @classmethod + def Build(cls): + """Returns dictionary of resource handlers. + + """ + resources = \ + rapi.connector.GetHandlers("[node_name]", "[instance_name]", + "[group_name]", "[network_name]", "[job_id]", + "[disk_index]", "[resource]", + translate=cls._TranslateResourceUri) + + return resources + + @classmethod + def _TranslateResourceUri(cls, *args): + """Translates a resource URI for use in documentation. + + @see: L{rapi.connector.GetHandlers} + + """ + return "".join(map(cls._UriPatternToString, args)) + + @staticmethod + def _UriPatternToString(value): + """Converts L{rapi.connector.UriPattern} to strings. + + """ + if isinstance(value, rapi.connector.UriPattern): + return value.content + else: + return value + + +_RAPI_RESOURCES_FOR_DOCS = _RapiHandlersForDocsHelper.Build() + + def _BuildRapiAccessTable(res): """Build a table with access permissions needed for all RAPI resources. @@ -523,13 +560,7 @@ class RapiAccessTable(s_compat.Directive): option_spec = {} def run(self): - resources = \ - rapi.connector.GetHandlers("[node_name]", "[instance_name]", - "[group_name]", "[network_name]", "[job_id]", - "[disk_index]", "[resource]", - translate=self._TranslateResourceUri) - - include_text = "\n".join(_BuildRapiAccessTable(resources)) + include_text = "\n".join(_BuildRapiAccessTable(_RAPI_RESOURCES_FOR_DOCS)) # Inject into state machine include_lines = docutils.statemachine.string2lines(include_text, _TAB_WIDTH, @@ -538,25 +569,6 @@ class RapiAccessTable(s_compat.Directive): return [] - @classmethod - def _TranslateResourceUri(cls, *args): - """Translates a resource URI for use in documentation. - - @see: L{rapi.connector.GetHandlers} - - """ - return "".join(map(cls._UriPatternToString, args)) - - @staticmethod - def _UriPatternToString(value): - """Converts L{rapi.connector.UriPattern} to strings. - - """ - if isinstance(value, rapi.connector.UriPattern): - return value.content - else: - return value - def setup(app): """Sphinx extension callback. -- GitLab