Difference between revisions of "Ceilometer/blueprints/alarm-api"
< Ceilometer | blueprints
(→Updated) |
(→Updated) |
||
Line 119: | Line 119: | ||
== Updated == | == Updated == | ||
+ | |||
+ | === Data Structures === | ||
<nowiki> | <nowiki> | ||
− | |||
alarm_state = wtypes.Enum(wtypes.text, 'ok', 'alarm', 'insufficient_data') | alarm_state = wtypes.Enum(wtypes.text, 'ok', 'alarm', 'insufficient_data') | ||
+ | </nowiki> | ||
+ | <nowiki> | ||
class AlarmAction(_Base): | class AlarmAction(_Base): | ||
"""Action to take when alarm changes state. | """Action to take when alarm changes state. | ||
Line 133: | Line 136: | ||
url = wtypes.text | url = wtypes.text | ||
"The URL to visit when the alarm state is reached" | "The URL to visit when the alarm state is reached" | ||
+ | </nowiki> | ||
+ | <nowiki> | ||
class ThresholdRule(_Base): | class ThresholdRule(_Base): | ||
Line 153: | Line 158: | ||
evaluation_periods = int | evaluation_periods = int | ||
"The number of historical periods to evaluate the threshold" | "The number of historical periods to evaluate the threshold" | ||
+ | </nowiki> | ||
− | + | <nowiki> | |
class CombinationRule(_Base): | class CombinationRule(_Base): | ||
Line 162: | Line 168: | ||
alarm_ids = [wtypes.text] | alarm_ids = [wtypes.text] | ||
"List of alarm identifiers to combine" | "List of alarm identifiers to combine" | ||
+ | </nowiki> | ||
+ | <nowiki> | ||
class Alarm(_Base): | class Alarm(_Base): | ||
"""Representation of an alarm. | """Representation of an alarm. | ||
Line 190: | Line 198: | ||
combination_rule = CombinationRule | combination_rule = CombinationRule | ||
"If set, this alarm will be evaluated based on combining the settings of the specified alarms" | "If set, this alarm will be evaluated based on combining the settings of the specified alarms" | ||
+ | </nowiki> | ||
− | + | <nowiki> | |
class AlarmStatus(_Base): | class AlarmStatus(_Base): | ||
Line 208: | Line 217: | ||
state_timestamp = datetime.datetime | state_timestamp = datetime.datetime | ||
"The date of the last alarm state changed" | "The date of the last alarm state changed" | ||
− | |||
</nowiki> | </nowiki> |
Revision as of 13:54, 5 September 2013
Contents
Original
AlarmController
class AlarmController(rest.RestController): """Manages operations on a single alarm. """ @wsme_pecan.wsexpose(Alarm, wtypes.text) def get(self): """Return this alarm.""" @wsme.validate(Alarm) @wsme_pecan.wsexpose(Alarm, wtypes.text, body=Alarm) def put(self, data): """Modify this alarm.""" @wsme_pecan.wsexpose(None, wtypes.text, status_code=204) def delete(self): """Delete this alarm.""" # TODO(eglynn): add pagination marker to signature once overall # API support for pagination is finalized @wsme_pecan.wsexpose([AlarmChange], [Query]) def history(self, q=[]): """Assembles the alarm history requested. :param q: Filter rules for the changes to be described. """
AlarmsController
class AlarmsController(rest.RestController): """Manages operations on the alarms collection. """ @wsme.validate(Alarm) @wsme_pecan.wsexpose(Alarm, body=Alarm, status_code=201) def post(self, data): """Create a new alarm.""" @wsme_pecan.wsexpose([Alarm], [Query]) def get_all(self, q=[]): """Return all alarms, based on the query provided. :param q: Filter rules for the alarms to be returned. """
Alarm class
class Alarm(_Base): """Representation of an alarm. """ alarm_id = wtypes.text "The UUID of the alarm" name = wtypes.text "The name for the alarm" description = wtypes.text "The description of the alarm" meter_name = wtypes.text "The name of meter" project_id = wtypes.text "The ID of the project or tenant that owns the alarm" user_id = wtypes.text "The ID of the user who created the alarm" comparison_operator = wtypes.Enum(str, 'lt', 'le', 'eq', 'ne', 'ge', 'gt') "The comparison against the alarm threshold" threshold = float "The threshold of the alarm" statistic = wtypes.Enum(str, 'max', 'min', 'avg', 'sum', 'count') "The statistic to compare to the threshold" enabled = bool "This alarm is enabled?" evaluation_periods = int "The number of periods to evaluate the threshold" period = int "The time range in seconds over which to evaluate the threshold" timestamp = datetime.datetime "The date of the last alarm definition update" state = wtypes.Enum(str, 'ok', 'alarm', 'insufficient data') "The state offset the alarm" state_timestamp = datetime.datetime "The date of the last alarm state changed" ok_actions = [wtypes.text] "The actions to do when alarm state change to ok" alarm_actions = [wtypes.text] "The actions to do when alarm state change to alarm" insufficient_data_actions = [wtypes.text] "The actions to do when alarm state change to insufficient data" repeat_actions = bool "The actions should be re-triggered on each evaluation cycle" matching_metadata = {wtypes.text: wtypes.text} "The matching_metadata of the alarm"
Updated
Data Structures
alarm_state = wtypes.Enum(wtypes.text, 'ok', 'alarm', 'insufficient_data')
class AlarmAction(_Base): """Action to take when alarm changes state. """ state = alarm_state "The state for which the action applies." url = wtypes.text "The URL to visit when the alarm state is reached"
class ThresholdRule(_Base): query = [Query] "The query to find the data for computing statistics, including meter_name" period = int "The time range in seconds over which query" comparison_operator = wtypes.Enum(str, 'lt', 'le', 'eq', 'ne', 'ge', 'gt') "The comparison against the alarm threshold" threshold = float "The threshold of the alarm" statistic = wtypes.Enum(str, 'max', 'min', 'avg', 'sum', 'count') "The statistic to compare to the threshold" evaluation_periods = int "The number of historical periods to evaluate the threshold"
class CombinationRule(_Base): operator = wtypes.Enum(str, 'or', 'and') "How to combine the sub-alarms" alarm_ids = [wtypes.text] "List of alarm identifiers to combine"
class Alarm(_Base): """Representation of an alarm. """ alarm_id = wtypes.text "The UUID of the alarm" name = wtypes.text "The name for the alarm" description = wtypes.text "The description of the alarm" enabled = bool "This alarm is enabled?" actions = [AlarmAction] "The actions to take when the alarm state changes" repeat_actions = bool "The actions should be re-triggered on each evaluation cycle" threshold_rule = ThresholdRule "If set, this alarm will be evaluated based on the threshold specification" combination_rule = CombinationRule "If set, this alarm will be evaluated based on combining the settings of the specified alarms"
class AlarmStatus(_Base): timestamp = datetime.datetime "The date of the last alarm definition update" state = alarm_states "The state offset the alarm" project_id = wtypes.text "The ID of the project or tenant that owns the alarm" user_id = wtypes.text "The ID of the user who created the alarm" state_timestamp = datetime.datetime "The date of the last alarm state changed"