Merge "Fix resources allocation in documentation"

This commit is contained in:
Jenkins 2015-04-08 04:45:10 +00:00 committed by Gerrit Code Review
commit 2b43aeace0
9 changed files with 88 additions and 200 deletions

View File

@ -20,46 +20,7 @@ from heat.engine import support
class KeystoneGroup(role_assignments.KeystoneRoleAssignment):
'''
Heat Template Resource for Keystone Group.
heat_template_version: 2013-05-23
description: Sample Keystone Group template
parameters:
group_name:
type: string
description: Keystone group name
group_description:
type: string
description: Keystone group description
group_domain:
type: string
description: Keystone group domain name
group_role:
type: string
description: role
group_role_domain:
type: string
description: group role domain
group_role_project:
type: string
description: group role project
resources:
admin_group:
type: OS::Keystone::Group
properties:
name: {get_param: group_name}
domain: {get_param: group_domain}
description: {get_param: group_description}
roles:
- role: {get_param: group_role}
domain: {get_param: group_role_domain}
- role: {get_param: group_role}
project: {get_param: group_role_project}
'''
"""Heat Template Resource for Keystone Group."""
support_status = support.SupportStatus(
version='2015.1',

View File

@ -19,37 +19,7 @@ from heat.engine import support
class KeystoneProject(resource.Resource):
'''
Heat Template Resource for Keystone Project.
heat_template_version: 2013-05-23
description: Sample Keystone Project template
parameters:
project_name:
type: string
description: Keystone project name
project_description:
type: string
description: Keystone project description
project_enabled:
type: boolean
description: Keystone project is enabled or disabled
project_domain:
type: string
description: Keystone project domain name or id
resources:
admin_project:
type: OS::Keystone::Project
properties:
name: {get_param: project_name}
domain: {get_param: project_domain}
description: {get_param: project_description}
enabled: {get_param: project_enabled}
'''
"""Heat Template Resource for Keystone Project."""
support_status = support.SupportStatus(
version='2015.1',

View File

@ -18,22 +18,7 @@ from heat.engine import support
class KeystoneRole(resource.Resource):
'''
Heat Template Resource for Keystone Role.
heat_template_version: 2013-05-23
parameters:
role_name:
type: string
description: Keystone role name
resources:
sample_role:
type: OS::Keystone::Role
properties:
name: {get_param: role_name}
'''
"""Heat Template Resource for Keystone Role."""
support_status = support.SupportStatus(
version='2015.1',

View File

@ -20,66 +20,7 @@ from heat.engine import support
class KeystoneUser(role_assignments.KeystoneRoleAssignment):
'''
Heat Template Resource for Keystone User.
heat_template_version: 2013-05-23
description: Sample Keystone User template
parameters:
user_name:
type: string
description: Keystone user name
user_description:
type: string
description: Keystone user description
user_enabled:
type: boolean
description: Keystone user is enabled or disabled
user_domain:
type: string
description: Keystone user domain name
user_email:
type: string
description: Keystone user email address
user_password:
type: string
description: Keystone user password
user_default_project:
type: string
description: Keystone user default project id
user_groups:
type: comma_delimited_list
description: Keystone groups, where this user is part of
group_role:
type: string
description: role
group_role_domain:
type: string
description: group role domain
group_role_project:
type: string
description: group role project
resources:
admin_user:
type: OS::Keystone::User
properties:
name: {get_param: user_name}
domain: {get_param: user_domain}
description: {get_param: user_description}
enabled: {get_param: user_enabled}
email: {get_param: user_email}
password: {get_param: user_password}
default_project: {get_param: user_default_project}
groups: {get_param: user_groups}
roles:
- role: {get_param: group_role}
domain: {get_param: group_role_domain}
- role: {get_param: group_role}
project: {get_param: group_role_project}
'''
"""Heat Template Resource for Keystone User."""
support_status = support.SupportStatus(
version='2015.1',

View File

@ -29,7 +29,11 @@ LOG = logging.getLogger(__name__)
class CloudServer(server.Server):
"""Resource for Rackspace Cloud Servers."""
"""Resource for Rackspace Cloud Servers.
This resource overloads existent integrated OS::Nova::Server resource and
is used for Rackspace Cloud Servers.
"""
# Managed Cloud automation statuses
MC_STATUS_IN_PROGRESS = 'In Progress'

View File

@ -17,24 +17,27 @@ import itertools
from docutils import core
from docutils import nodes
import pydoc
import six
from sphinx.util import compat
from heat.common.i18n import _
from heat.engine import attributes
from heat.engine import environment
from heat.engine import plugin_manager
from heat.engine import properties
from heat.engine import resources
from heat.engine import support
_CODE_NAMES = {'2014.1': 'Icehouse',
'2014.2': 'Juno',
'2015.1': 'Kilo'}
global_env = environment.Environment({}, user_env=False)
all_resources = {}
class resourcepages(nodes.General, nodes.Element):
class integratedrespages(nodes.General, nodes.Element):
pass
class contribresourcepages(nodes.General, nodes.Element):
pass
@ -45,33 +48,38 @@ class ResourcePages(compat.Directive):
final_argument_whitespace = False
option_spec = {}
def path(self):
return None
def run(self):
prefix = self.arguments and self.arguments.pop() or None
content = []
for resource_type, resource_class in _all_resources(prefix):
self.resource_type = resource_type
self.resource_class = resource_class
section = self._section(content, resource_type, '%s')
for resource_type, resource_classes in _filter_resources(prefix,
self.path()):
for resource_class in resource_classes:
self.resource_type = resource_type
self.resource_class = resource_class
section = self._section(content, resource_type, '%s')
self.props_schemata = properties.schemata(
self.resource_class.properties_schema)
self.attrs_schemata = attributes.schemata(
self.resource_class.attributes_schema)
self.props_schemata = properties.schemata(
self.resource_class.properties_schema)
self.attrs_schemata = attributes.schemata(
self.resource_class.attributes_schema)
self._status_str(resource_class.support_status, section)
self._status_str(resource_class.support_status, section)
cls_doc = pydoc.getdoc(resource_class)
if cls_doc:
# allow for rst in the class comments
cls_nodes = core.publish_doctree(cls_doc).children
section.extend(cls_nodes)
cls_doc = pydoc.getdoc(resource_class)
if cls_doc:
# allow for rst in the class comments
cls_nodes = core.publish_doctree(cls_doc).children
section.extend(cls_nodes)
self.contribute_properties(section)
self.contribute_attributes(section)
self.contribute_properties(section)
self.contribute_attributes(section)
self.contribute_hot_syntax(section)
self.contribute_yaml_syntax(section)
self.contribute_json_syntax(section)
self.contribute_hot_syntax(section)
self.contribute_yaml_syntax(section)
self.contribute_json_syntax(section)
return content
@ -323,18 +331,36 @@ Resources:
definition.append(def_para)
def _all_resources(prefix=None):
type_names = sorted(global_env.get_types())
if prefix is not None:
def prefix_match(name):
return name.startswith(prefix)
class IntegrateResourcePages(ResourcePages):
type_names = itertools.ifilter(prefix_match, type_names)
def path(self):
return 'heat.engine.resources'
def resource_type(name):
return name, global_env.get_class(name)
return itertools.imap(resource_type, type_names)
class ContribResourcePages(ResourcePages):
def path(self):
return 'heat.engine.plugins'
def _filter_resources(prefix=None, path=None):
def prefix_match(name):
return prefix is None or name.startswith(prefix)
def path_match(cls):
return path is None or cls.__module__.startswith(path)
filtered_resources = {}
for name in sorted(all_resources.keys()):
if prefix_match(name):
for cls in all_resources.get(name):
if path_match(cls):
if filtered_resources.get(name) is not None:
filtered_resources[name].append(cls)
else:
filtered_resources[name] = [cls]
return sorted(six.iteritems(filtered_resources))
def _load_all_resources():
@ -342,12 +368,20 @@ def _load_all_resources():
resource_mapping = plugin_manager.PluginMapping('resource')
res_plugin_mappings = resource_mapping.load_all(manager)
resources._register_resources(global_env, res_plugin_mappings)
environment.read_global_environment(global_env)
for mapping in res_plugin_mappings:
name, cls = mapping
if all_resources.get(name) is not None:
all_resources[name].append(cls)
else:
all_resources[name] = [cls]
def setup(app):
_load_all_resources()
app.add_node(resourcepages)
app.add_node(integratedrespages)
app.add_directive('resourcepages', ResourcePages)
app.add_directive('integratedrespages', IntegrateResourcePages)
app.add_node(contribresourcepages)
app.add_directive('contribrespages', ContribResourcePages)

View File

@ -13,4 +13,4 @@
CloudFormation Compatible Resource Types
----------------------------------------
.. resourcepages:: AWS::
.. integratedrespages:: AWS::

View File

@ -14,6 +14,11 @@
Contributed Heat Resource Types
===============================
.. rubric:: These resources are not enabled by default.
.. contribrespages:: OS::
Rackspace Cloud Resource Types
------------------------------
@ -31,7 +36,7 @@ properly. More information about them can be found in the
<https://github.com/openstack/heat/blob/master/contrib/rackspace/README.md>`_.
.. resourcepages:: Rackspace::
.. contribrespages:: Rackspace::
DockerInc Resource
@ -44,16 +49,4 @@ requires the `docker-py <https://pypi.python.org/pypi/docker-py>`_
package. You can find more information in the `DOCKER_README
<https://github.com/openstack/heat/blob/master/contrib/heat_docker/README.md>`_.
.. resourcepages:: DockerInc::
Nova Flavor Resource
--------------------
.. rubric:: This resource is not enabled by default.
This plugin enables dynamic creation of Nova flavors through Heat. You can
find more information in the `NOVA_FLAVOR_README
<https://github.com/openstack/heat/blob/master/contrib/nova_flavor
/README.md>`_.
.. resourcepages:: OS::Nova::Flavor
.. contribrespages:: DockerInc::

View File

@ -14,4 +14,4 @@
OpenStack Resource Types
------------------------
.. resourcepages:: OS::
.. integratedrespages:: OS::