Merge "Add attribute type for heat resources"
This commit is contained in:
commit
910d40ba7b
@ -47,9 +47,9 @@ class Schema(constr.Schema):
|
||||
)
|
||||
|
||||
TYPES = (
|
||||
STRING, MAP, LIST,
|
||||
STRING, MAP, LIST, INTEGER
|
||||
) = (
|
||||
'String', 'Map', 'List',
|
||||
'String', 'Map', 'List', 'Integer'
|
||||
)
|
||||
|
||||
def __init__(self, description=None,
|
||||
@ -185,6 +185,11 @@ class Attributes(collections.Mapping):
|
||||
LOG.warn(_("Attribute %(name)s is not of type %(att_type)s"),
|
||||
{'name': attrib.name,
|
||||
'att_type': attrib.schema.MAP})
|
||||
elif attrib.schema.type == attrib.schema.INTEGER:
|
||||
if not isinstance(value, int):
|
||||
LOG.warn(_("Attribute %(name)s is not of type %(att_type)s"),
|
||||
{'name': attrib.name,
|
||||
'att_type': attrib.schema.INTEGER})
|
||||
|
||||
def __getitem__(self, key):
|
||||
if key not in self:
|
||||
|
@ -116,16 +116,19 @@ class AutoScalingResourceGroup(aws_asg.AutoScalingGroup):
|
||||
_("A map of resource names to the specified attribute of each "
|
||||
"individual resource. "
|
||||
"Requires heat_template_version: 2014-10-16 or higher."),
|
||||
support_status=support.SupportStatus(version='2014.2')
|
||||
support_status=support.SupportStatus(version='2014.2'),
|
||||
type=attributes.Schema.MAP
|
||||
),
|
||||
OUTPUTS_LIST: attributes.Schema(
|
||||
_("A list of the specified attribute of each individual resource. "
|
||||
"Requires heat_template_version: 2014-10-16 or higher."),
|
||||
support_status=support.SupportStatus(version='2014.2')
|
||||
support_status=support.SupportStatus(version='2014.2'),
|
||||
type=attributes.Schema.LIST
|
||||
),
|
||||
CURRENT_SIZE: attributes.Schema(
|
||||
_("The current size of AutoscalingResourceGroup."),
|
||||
support_status=support.SupportStatus(version='2015.1')
|
||||
support_status=support.SupportStatus(version='2015.1'),
|
||||
type=attributes.Schema.INTEGER
|
||||
),
|
||||
}
|
||||
update_policy_schema = {}
|
||||
|
@ -63,7 +63,8 @@ class Restarter(signal_responder.SignalResponder):
|
||||
|
||||
attributes_schema = {
|
||||
ALARM_URL: attributes.Schema(
|
||||
_("A signed url to handle the alarm (Heat extension).")
|
||||
_("A signed url to handle the alarm (Heat extension)."),
|
||||
type=attributes.Schema.STRING
|
||||
),
|
||||
}
|
||||
|
||||
|
@ -103,7 +103,8 @@ class InstanceGroup(stack_resource.StackResource):
|
||||
attributes_schema = {
|
||||
INSTANCE_LIST: attributes.Schema(
|
||||
_("A comma-delimited list of server ip addresses. "
|
||||
"(Heat extension).")
|
||||
"(Heat extension)."),
|
||||
type=attributes.Schema.STRING
|
||||
),
|
||||
}
|
||||
rolling_update_schema = {
|
||||
|
@ -154,7 +154,8 @@ class RandomString(resource.Resource):
|
||||
VALUE: attributes.Schema(
|
||||
_('The random string generated by this resource. This value is '
|
||||
'also available by referencing the resource.'),
|
||||
cache_mode=attributes.Schema.CACHE_NONE
|
||||
cache_mode=attributes.Schema.CACHE_NONE,
|
||||
type=attributes.Schema.STRING
|
||||
),
|
||||
}
|
||||
|
||||
|
@ -88,10 +88,12 @@ class RemoteStack(resource.Resource):
|
||||
|
||||
attributes_schema = {
|
||||
NAME_ATTR: attributes.Schema(
|
||||
_('Name of the stack.')
|
||||
_('Name of the stack.'),
|
||||
type=attributes.Schema.STRING
|
||||
),
|
||||
OUTPUTS: attributes.Schema(
|
||||
_('A dict of key-value pairs output from the stack.')
|
||||
_('A dict of key-value pairs output from the stack.'),
|
||||
type=attributes.Schema.MAP
|
||||
),
|
||||
}
|
||||
|
||||
|
@ -172,13 +172,15 @@ class ResourceGroup(stack_resource.StackResource):
|
||||
|
||||
attributes_schema = {
|
||||
REFS: attributes.Schema(
|
||||
_("A list of resource IDs for the resources in the group")
|
||||
_("A list of resource IDs for the resources in the group"),
|
||||
type=attributes.Schema.LIST
|
||||
),
|
||||
ATTR_ATTRIBUTES: attributes.Schema(
|
||||
_("A map of resource names to the specified attribute of each "
|
||||
"individual resource. "
|
||||
"Requires heat_template_version: 2014-10-16."),
|
||||
support_status=support.SupportStatus(version='2014.2')
|
||||
support_status=support.SupportStatus(version='2014.2'),
|
||||
type=attributes.Schema.MAP
|
||||
),
|
||||
}
|
||||
|
||||
|
@ -100,7 +100,8 @@ class AutoScalingPolicy(signal_responder.SignalResponder,
|
||||
|
||||
attributes_schema = {
|
||||
ALARM_URL: attributes.Schema(
|
||||
_("A signed url to handle the alarm.")
|
||||
_("A signed url to handle the alarm."),
|
||||
type=attributes.Schema.STRING
|
||||
),
|
||||
SIGNAL_URL: attributes.Schema(
|
||||
_("A url to handle the alarm using native API."),
|
||||
|
@ -150,7 +150,8 @@ class SoftwareConfig(resource.Resource):
|
||||
|
||||
attributes_schema = {
|
||||
CONFIG_ATTR: attributes.Schema(
|
||||
_("The config value of the software config.")
|
||||
_("The config value of the software config."),
|
||||
type=attributes.Schema.STRING
|
||||
),
|
||||
}
|
||||
|
||||
|
@ -166,13 +166,16 @@ class SoftwareDeployment(signal_responder.SignalResponder):
|
||||
|
||||
attributes_schema = {
|
||||
STDOUT: attributes.Schema(
|
||||
_("Captured stdout from the configuration execution.")
|
||||
_("Captured stdout from the configuration execution."),
|
||||
type=attributes.Schema.STRING
|
||||
),
|
||||
STDERR: attributes.Schema(
|
||||
_("Captured stderr from the configuration execution.")
|
||||
_("Captured stderr from the configuration execution."),
|
||||
type=attributes.Schema.STRING
|
||||
),
|
||||
STATUS_CODE: attributes.Schema(
|
||||
_("Returned status code from the configuration execution")
|
||||
_("Returned status code from the configuration execution"),
|
||||
type=attributes.Schema.STRING
|
||||
),
|
||||
}
|
||||
|
||||
@ -623,15 +626,18 @@ class SoftwareDeploymentGroup(resource_group.ResourceGroup):
|
||||
attributes_schema = {
|
||||
STDOUTS: attributes.Schema(
|
||||
_("A map of Nova names and captured stdouts from the "
|
||||
"configuration execution to each server.")
|
||||
"configuration execution to each server."),
|
||||
type=attributes.Schema.MAP
|
||||
),
|
||||
STDERRS: attributes.Schema(
|
||||
_("A map of Nova names and captured stderrs from the "
|
||||
"configuration execution to each server.")
|
||||
"configuration execution to each server."),
|
||||
type=attributes.Schema.MAP
|
||||
),
|
||||
STATUS_CODES: attributes.Schema(
|
||||
_("A map of Nova names and returned status code from the "
|
||||
"configuration execution")
|
||||
"configuration execution"),
|
||||
type=attributes.Schema.MAP
|
||||
),
|
||||
}
|
||||
|
||||
|
@ -71,11 +71,13 @@ class SwiftSignalHandle(resource.Resource):
|
||||
_('Tokens are not needed for Swift TempURLs. This attribute is '
|
||||
'being kept for compatibility with the '
|
||||
'OS::Heat::WaitConditionHandle resource'),
|
||||
cache_mode=attributes.Schema.CACHE_NONE
|
||||
cache_mode=attributes.Schema.CACHE_NONE,
|
||||
type=attributes.Schema.STRING
|
||||
),
|
||||
ENDPOINT: attributes.Schema(
|
||||
_('Endpoint/url which can be used for signalling handle'),
|
||||
cache_mode=attributes.Schema.CACHE_NONE
|
||||
cache_mode=attributes.Schema.CACHE_NONE,
|
||||
type=attributes.Schema.STRING
|
||||
),
|
||||
CURL_CLI: attributes.Schema(
|
||||
_('Convenience attribute, provides curl CLI command '
|
||||
@ -84,7 +86,8 @@ class SwiftSignalHandle(resource.Resource):
|
||||
'--data-binary \'{"status": "SUCCESS"}\' '
|
||||
', or signal failure by adding '
|
||||
'--data-binary \'{"status": "FAILURE"}\''),
|
||||
cache_mode=attributes.Schema.CACHE_NONE
|
||||
cache_mode=attributes.Schema.CACHE_NONE,
|
||||
type=attributes.Schema.STRING
|
||||
),
|
||||
}
|
||||
|
||||
@ -177,7 +180,8 @@ class SwiftSignal(resource.Resource):
|
||||
|
||||
attributes_schema = {
|
||||
DATA: attributes.Schema(
|
||||
_('JSON data that was uploaded via the SwiftSignalHandle.')
|
||||
_('JSON data that was uploaded via the SwiftSignalHandle.'),
|
||||
type=attributes.Schema.STRING
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -74,9 +74,10 @@ class HeatWaitCondition(resource.Resource):
|
||||
|
||||
attributes_schema = {
|
||||
DATA: attributes.Schema(
|
||||
_('JSON serialized dict containing data associated with wait '
|
||||
_('JSON string containing data associated with wait '
|
||||
'condition signals sent to the handle.'),
|
||||
cache_mode=attributes.Schema.CACHE_NONE
|
||||
cache_mode=attributes.Schema.CACHE_NONE,
|
||||
type=attributes.Schema.STRING
|
||||
),
|
||||
}
|
||||
|
||||
|
@ -44,11 +44,13 @@ class HeatWaitConditionHandle(wc_base.BaseWaitConditionHandle):
|
||||
attributes_schema = {
|
||||
TOKEN: attributes.Schema(
|
||||
_('Token for stack-user which can be used for signalling handle'),
|
||||
cache_mode=attributes.Schema.CACHE_NONE
|
||||
cache_mode=attributes.Schema.CACHE_NONE,
|
||||
type=attributes.Schema.STRING
|
||||
),
|
||||
ENDPOINT: attributes.Schema(
|
||||
_('Endpoint/url which can be used for signalling handle'),
|
||||
cache_mode=attributes.Schema.CACHE_NONE
|
||||
cache_mode=attributes.Schema.CACHE_NONE,
|
||||
type=attributes.Schema.STRING
|
||||
),
|
||||
CURL_CLI: attributes.Schema(
|
||||
_('Convenience attribute, provides curl CLI command '
|
||||
@ -57,7 +59,8 @@ class HeatWaitConditionHandle(wc_base.BaseWaitConditionHandle):
|
||||
'--data-binary \'{"status": "SUCCESS"}\' '
|
||||
', or signal failure by adding '
|
||||
'--data-binary \'{"status": "FAILURE"}\''),
|
||||
cache_mode=attributes.Schema.CACHE_NONE
|
||||
cache_mode=attributes.Schema.CACHE_NONE,
|
||||
type=attributes.Schema.STRING
|
||||
),
|
||||
}
|
||||
|
||||
|
@ -195,6 +195,10 @@ class AttributesTypeTest(common.HeatTestCase):
|
||||
('map_type',
|
||||
dict(a_type=attributes.Schema.MAP,
|
||||
value={},
|
||||
invalid_value='invalid_value')),
|
||||
('integer_type',
|
||||
dict(a_type=attributes.Schema.INTEGER,
|
||||
value=1,
|
||||
invalid_value='invalid_value'))
|
||||
]
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user