Changes to support AlarmServiceView
This commit is contained in:
parent
a02d127218
commit
7e0c3edfdf
@ -54,11 +54,13 @@ def monclient(request, password=None):
|
||||
def alarm_list(request, marker=None, paginate=False):
|
||||
return monclient(request).alarms.list()
|
||||
|
||||
def alarm_list_by_service(request, service_name, marker=None, paginate=False):
|
||||
service_dim = {'service' : service_name}
|
||||
return monclient(request).alarms.list(dimensions=service_dim)
|
||||
|
||||
def alarm_delete(request, alarm_id):
|
||||
return monclient(request).alarms.delete(alarm_id=alarm_id)
|
||||
|
||||
|
||||
def alarm_get(request, alarm_id):
|
||||
return monclient(request).alarms.get(alarm_id=alarm_id)
|
||||
|
||||
|
@ -32,6 +32,7 @@ class NotificationType(object):
|
||||
return choice[1]
|
||||
return key
|
||||
|
||||
OVERCLOUD_SERVICES = ["Nova","Swift","Cinder","Glance","Neutron","MySQL","RabbitMQ","Monitoring"]
|
||||
|
||||
PHONE_VALIDATOR = validators.RegexValidator(
|
||||
regex=r"^\+[()0-9 ]{5,20}$",
|
||||
|
@ -41,7 +41,7 @@ def get_status(index):
|
||||
else:
|
||||
return "UNKNOWN: %d" % index
|
||||
|
||||
|
||||
# this one is not quite right
|
||||
def show_status(data):
|
||||
status = data
|
||||
img_tag = '<img src="%s" alt="%s"/>'
|
||||
@ -56,6 +56,38 @@ def show_status(data):
|
||||
return status
|
||||
|
||||
|
||||
def show_severity(data):
|
||||
severity = data['severity']
|
||||
state = data['state']
|
||||
img_tag = '<div><img src="%s" alt="%s"/> %s </div>'
|
||||
if state == 'ALARM' and severity == 'CRITICAL':
|
||||
return img_tag % (CRITICAL_ICON, severity, severity)
|
||||
if state == 'ALARM' and severity == 'HIGH':
|
||||
return img_tag % (CRITICAL_ICON, severity, severity)
|
||||
if state == 'ALARM' and severity == 'MEDIUM':
|
||||
return img_tag % (WARNING_ICON, severity, severity)
|
||||
if state == 'ALARM' and severity == 'LOW':
|
||||
return img_tag % (WARNING_ICON, severity, severity)
|
||||
if state == 'OK':
|
||||
return img_tag % (OK_ICON, state, state)
|
||||
if state == 'UNDETERMINED':
|
||||
return img_tag % (UNKNOWN_ICON, 'UNDETERMINED', 'UNDETERMINED')
|
||||
return ""
|
||||
|
||||
def show_service(data):
|
||||
if any(data['expression_data']['dimensions']):
|
||||
dimensions = data['expression_data']['dimensions']
|
||||
if 'service' in dimensions:
|
||||
return str(data['expression_data']['dimensions']['service'])
|
||||
return ""
|
||||
|
||||
def show_host(data):
|
||||
if any(data['expression_data']['dimensions']):
|
||||
dimensions = data['expression_data']['dimensions']
|
||||
if 'hostname' in dimensions:
|
||||
return str(data['expression_data']['dimensions']['hostname'])
|
||||
return ""
|
||||
|
||||
class ShowAlarmHistory(tables.LinkAction):
|
||||
name = 'history'
|
||||
verbose_name = _('Show History')
|
||||
@ -114,26 +146,26 @@ class CreateNotification(tables.LinkAction):
|
||||
|
||||
|
||||
class AlarmsTable(tables.DataTable):
|
||||
status = tables.Column('Status', verbose_name=_('Status'),
|
||||
status_choices={(show_status('OK'), True)},
|
||||
filters=[show_status, template.defaultfilters.safe])
|
||||
target = tables.Column('Host', verbose_name=_('Host'))
|
||||
name = tables.Column('Service', verbose_name=_('Service'))
|
||||
lastCheck = tables.Column('Last_Check', verbose_name=_('Last Check'))
|
||||
time = tables.Column('Duration', verbose_name=_('Duration'))
|
||||
detail = tables.Column('Status_Information',
|
||||
verbose_name=_('Status_Information'))
|
||||
|
||||
status = tables.Column(transform=show_severity, verbose_name=_('Status'),
|
||||
filters=[template.defaultfilters.safe])
|
||||
target = tables.Column('name', verbose_name=_('Name'),
|
||||
link=constants.URL_PREFIX + 'alarm_detail',
|
||||
link_classes=('ajax-modal',))
|
||||
host = tables.Column(transform=show_host, verbose_name=_('Host'))
|
||||
service = tables.Column(transform=show_service, verbose_name=_('Service'))
|
||||
state = tables.Column('state', verbose_name=_('State'))
|
||||
expression = tables.Column('expression', verbose_name=_('Expression'))
|
||||
enabled = tables.Column('actions_enabled', verbose_name=_('ActionsEnabled'))
|
||||
|
||||
def get_object_id(self, obj):
|
||||
return obj['Host'] + obj['Service']
|
||||
|
||||
return obj['id']
|
||||
|
||||
class Meta:
|
||||
name = "users"
|
||||
name = "alarmslist"
|
||||
verbose_name = _("Alarms for Nova in the UnderCloud")
|
||||
row_actions = (ShowAlarmHistory, ShowAlarmMeters,)
|
||||
status_columns = ['status']
|
||||
|
||||
|
||||
class RealAlarmsTable(tables.DataTable):
|
||||
state = tables.Column('state', verbose_name=_('State'))
|
||||
target = tables.Column('name', verbose_name=_('Name'),
|
||||
|
@ -174,20 +174,10 @@ class AlarmServiceView(tables.DataTableView):
|
||||
return super(AlarmServiceView, self).dispatch(*args, **kwargs)
|
||||
|
||||
def get_data(self):
|
||||
results = [{'Host': 'Compute1', 'Service': 'Nova',
|
||||
'Status': 'WARNING',
|
||||
'Status_Information': 'API Response Time'},
|
||||
{'Host': 'Compute2', 'Service': 'Nova',
|
||||
'Status': 'OK', 'Status_Information': 'System Health'},
|
||||
{'Host': 'Compute3', 'Service': 'Nova', 'Status': 'OK',
|
||||
'Status_Information': 'Database Access'},
|
||||
{'Host': 'Compute4', 'Service': 'Nova', 'Status': 'OK',
|
||||
'Status_Information': 'Network Latency'},
|
||||
{'Host': 'Compute5', 'Service': 'Nova', 'Status': 'OK',
|
||||
'Status_Information': 'Rabbit Health'},
|
||||
]
|
||||
|
||||
return results
|
||||
alarms_json = api.monitor.alarm_list_by_service(
|
||||
self.request,
|
||||
self.service)
|
||||
return alarms_json
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(AlarmServiceView, self).get_context_data(**kwargs)
|
||||
|
Loading…
x
Reference in New Issue
Block a user