Adding Ceilometer Alarm API

- Adding basic alarm-api function wrappers
    - Adding Alarm class wrapper
    - Added Test Cases for the wrapper

DocImpact
Implements: blueprint ceilometer-alarm-api
Change-Id: I569b461e86197b77d13e7cbef27b0ac4bea03b82
Co-Authored-By: Sanjana Pai <sanjana@hitachi.co.in>
This commit is contained in:
Shubham Chitranshi
2015-08-13 14:54:02 +05:30
committed by sanjana
parent 09a37991f7
commit 7df3624c58
3 changed files with 220 additions and 0 deletions

View File

@@ -267,6 +267,41 @@ class Statistic(base.APIResourceWrapper):
'duration', 'duration_start', 'duration_end']
class Alarm(base.APIResourceWrapper):
"""Represents one Ceilometer alarm."""
_attrs = ['alarm_actions', 'ok_actions', 'name',
'timestamp', 'description', 'time_constraints',
'enabled', 'state_timestamp', 'alarm_id',
'state', 'insufficient_data_actions',
'repeat_actions', 'user_id', 'project_id',
'type', 'severity', 'threshold_rule', 'period', 'query',
'evaluation_periods', 'statistic', 'meter_name',
'threshold', 'comparison_operator', 'exclude_outliers']
def __init__(self, apiresource, ceilometer_usage=None):
super(Alarm, self).__init__(apiresource)
self._tenant = None
self._user = None
if ceilometer_usage and self.project_id:
self._tenant = ceilometer_usage.get_tenant(self.project_id)
if ceilometer_usage and self.user_id:
self._user = ceilometer_usage.get_user(self.user_id)
@property
def id(self):
return self.alarm_id
@property
def tenant(self):
return self._tenant
@property
def user(self):
return self._user
@memoized
def ceilometerclient(request):
"""Initialization of Ceilometer client."""
@@ -280,6 +315,35 @@ def ceilometerclient(request):
cacert=cacert)
def alarm_list(request, query=None, ceilometer_usage=None):
"""List alarms."""
alarms = ceilometerclient(request).alarms.list(q=query)
return [Alarm(alarm, ceilometer_usage) for alarm in alarms]
def alarm_get(request, alarm_id, ceilometer_usage=None):
"""Get an alarm."""
alarm = ceilometerclient(request).alarms.get(alarm_id)
return Alarm(alarm, ceilometer_usage)
def alarm_update(request, alarm_id, ceilometer_usage=None, **kwargs):
"""Update an alarm."""
alarm = ceilometerclient(request).alarms.update(alarm_id, **kwargs)
return Alarm(alarm, ceilometer_usage)
def alarm_delete(request, alarm_id):
"""Delete an alarm."""
ceilometerclient(request).alarms.delete(alarm_id)
def alarm_create(request, ceilometer_usage=None, **kwargs):
"""Create an alarm."""
alarm = ceilometerclient(request).alarms.create(**kwargs)
return Alarm(alarm, ceilometer_usage)
def resource_list(request, query=None, ceilometer_usage_object=None):
"""List the resources."""
resources = ceilometerclient(request).resources.list(q=query)