Merge "Fix resources allocation in documentation"
This commit is contained in:
commit
2b43aeace0
@ -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',
|
||||
|
@ -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',
|
||||
|
@ -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',
|
||||
|
@ -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',
|
||||
|
@ -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'
|
||||
|
@ -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)
|
||||
|
@ -13,4 +13,4 @@
|
||||
|
||||
CloudFormation Compatible Resource Types
|
||||
----------------------------------------
|
||||
.. resourcepages:: AWS::
|
||||
.. integratedrespages:: AWS::
|
||||
|
@ -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::
|
||||
|
@ -14,4 +14,4 @@
|
||||
|
||||
OpenStack Resource Types
|
||||
------------------------
|
||||
.. resourcepages:: OS::
|
||||
.. integratedrespages:: OS::
|
||||
|
Loading…
x
Reference in New Issue
Block a user