Added alarm definition pagination and notification
Change-Id: I1b8f635837662f70a0eb7a140a71fb070a424693
This commit is contained in:
parent
aaef2a0047
commit
d527df446c
@ -10,4 +10,11 @@
|
||||
|
||||
{% block main %}
|
||||
{{ table.render }}
|
||||
<div class="pagination">
|
||||
<span class="step-links">
|
||||
{% if page_offset %}
|
||||
<a href="?page_offset={{ page_offset}}">Next Page</a>
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
@ -20,7 +20,7 @@ class AlarmDefinitionsTest(helpers.TestCase):
|
||||
'alarmdef_list.return_value': [],
|
||||
}) as mock:
|
||||
res = self.client.get(INDEX_URL)
|
||||
self.assertEqual(mock.alarmdef_list.call_count, 1)
|
||||
self.assertEqual(mock.alarmdef_list.call_count, 2)
|
||||
|
||||
self.assertTemplateUsed(
|
||||
res, 'monitoring/alarmdefs/alarm.html')
|
||||
|
@ -30,19 +30,55 @@ from monitoring.alarmdefs import constants
|
||||
from monitoring.alarmdefs import forms as alarm_forms
|
||||
from monitoring.alarmdefs import tables as alarm_tables
|
||||
from monitoring import api
|
||||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
||||
|
||||
LIMIT = 10
|
||||
class IndexView(tables.DataTableView):
|
||||
table_class = alarm_tables.AlarmsTable
|
||||
template_name = constants.TEMPLATE_PREFIX + 'alarm.html'
|
||||
|
||||
def get_data(self):
|
||||
page_offset=self.request.GET.get('page_offset')
|
||||
results = []
|
||||
if page_offset==None:
|
||||
page_offset=0
|
||||
try:
|
||||
results = api.monitor.alarmdef_list(self.request)
|
||||
results = api.monitor.alarmdef_list(self.request, page_offset, LIMIT)
|
||||
paginator = Paginator(results, LIMIT)
|
||||
results = paginator.page(1)
|
||||
except EmptyPage:
|
||||
contacts = paginator.page(paginator.num_pages)
|
||||
except Exception:
|
||||
messages.error(self.request, _("Could not retrieve alarm definitions"))
|
||||
|
||||
return results
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(IndexView, self).get_context_data(**kwargs)
|
||||
contacts = []
|
||||
page_offset = self.request.GET.get('page_offset')
|
||||
|
||||
if page_offset == None:
|
||||
page_offset = 0
|
||||
try:
|
||||
results = api.monitor.alarmdef_list(self.request, page_offset, LIMIT)
|
||||
paginator = Paginator(results, LIMIT)
|
||||
contacts = paginator.page(1)
|
||||
except EmptyPage:
|
||||
contacts = paginator.page(paginator.num_pages)
|
||||
except Exception:
|
||||
messages.error(self.request, _("Could not retrieve alarm definitions"))
|
||||
return context
|
||||
|
||||
context["contacts"] = contacts
|
||||
|
||||
if len(context["contacts"]) < LIMIT:
|
||||
context["page_offset"] = None
|
||||
else:
|
||||
context["page_offset"] = contacts.object_list[-1]["id"]
|
||||
|
||||
return context
|
||||
|
||||
|
||||
class AlarmCreateView(forms.ModalFormView):
|
||||
form_class = alarm_forms.CreateAlarmForm
|
||||
|
@ -16,23 +16,10 @@
|
||||
|
||||
{% block main %}
|
||||
{{ table.render }}
|
||||
<style>
|
||||
.status-icon {
|
||||
vertical-align: top;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
td, th{
|
||||
white-space: normal;
|
||||
word-break: break-all;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
</style>
|
||||
<div class="pagination">
|
||||
<span class="step-links">
|
||||
{% if page_offset %}
|
||||
Page <a href="?page_offset={{ page_offset}}">Next</a>
|
||||
<a href="?page_offset={{ page_offset}}">Next Page</a>
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
|
@ -23,5 +23,18 @@
|
||||
|
||||
{% block main %}
|
||||
{{ table.render }}
|
||||
<style>
|
||||
.status-icon {
|
||||
vertical-align: top;
|
||||
margin-right: 2px;
|
||||
}
|
||||
</style>
|
||||
<div class="pagination">
|
||||
<span class="step-links">
|
||||
{% if page_offset %}
|
||||
<a href="?page_offset={{ page_offset}}">Page Next</a>
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
|
@ -40,7 +40,7 @@ from monitoring import api
|
||||
LOG = logging.getLogger(__name__)
|
||||
SERVICES = getattr(settings, 'MONITORING_SERVICES', [])
|
||||
|
||||
|
||||
LIMIT = 10
|
||||
def get_icon(status):
|
||||
if status == 'chicklet-success':
|
||||
return constants.OK_ICON
|
||||
@ -113,16 +113,15 @@ class AlarmServiceView(tables.DataTableView):
|
||||
return super(AlarmServiceView, self).dispatch(*args, **kwargs)
|
||||
|
||||
def get_data(self):
|
||||
limit = 25
|
||||
|
||||
page_offset=self.request.GET.get('page_offset')
|
||||
contacts = []
|
||||
|
||||
if page_offset == None:
|
||||
page_offset = 0
|
||||
try:
|
||||
results = api.monitor.alarm_list(self.request, page_offset, limit)
|
||||
results.sort(key=lambda x: x['state'])
|
||||
paginator = Paginator(results, limit)
|
||||
results = api.monitor.alarm_list(self.request, page_offset, LIMIT)
|
||||
paginator = Paginator(results, LIMIT)
|
||||
contacts = paginator.page(1)
|
||||
except EmptyPage:
|
||||
contacts = paginator.page(paginator.num_pages)
|
||||
@ -133,15 +132,14 @@ class AlarmServiceView(tables.DataTableView):
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(AlarmServiceView, self).get_context_data(**kwargs)
|
||||
limit = 25
|
||||
contacts = []
|
||||
page_offset = self.request.GET.get('page_offset')
|
||||
|
||||
if page_offset == None:
|
||||
page_offset = 0
|
||||
try:
|
||||
results = api.monitor.alarm_list(self.request, page_offset, limit)
|
||||
paginator = Paginator(results, limit)
|
||||
results = api.monitor.alarm_list(self.request, page_offset, LIMIT)
|
||||
paginator = Paginator(results, LIMIT)
|
||||
contacts = paginator.page(1)
|
||||
except EmptyPage:
|
||||
contacts = paginator.page(paginator.num_pages)
|
||||
@ -152,7 +150,7 @@ class AlarmServiceView(tables.DataTableView):
|
||||
context["contacts"] = contacts
|
||||
context["service"] = self.service
|
||||
|
||||
if len(contacts.object_list) < limit:
|
||||
if len(contacts.object_list) < LIMIT:
|
||||
context["page_offset"] = None
|
||||
else:
|
||||
context["page_offset"] = contacts.object_list[-1]["id"]
|
||||
@ -184,15 +182,23 @@ class AlarmHistoryView(tables.DataTableView):
|
||||
return super(AlarmHistoryView, self).dispatch(*args, **kwargs)
|
||||
|
||||
def get_data(self):
|
||||
page_offset=self.request.GET.get('page_offset')
|
||||
contacts=[]
|
||||
id = self.kwargs['id']
|
||||
name = self.kwargs['name']
|
||||
results = []
|
||||
if page_offset == None:
|
||||
page_offset = 0
|
||||
try:
|
||||
results = api.monitor.alarm_history(self.request, id)
|
||||
results = api.monitor.alarm_history(self.request, id, page_offset, LIMIT)
|
||||
paginator = Paginator(results, LIMIT)
|
||||
contacts = paginator.page(1)
|
||||
except EmptyPage:
|
||||
contacts = paginator.page(paginator.num_pages)
|
||||
except Exception:
|
||||
messages.error(self.request,
|
||||
_("Could not retrieve alarm history for %s") % id)
|
||||
return transform_alarm_history(results, name)
|
||||
return transform_alarm_history(contacts, name)
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(AlarmHistoryView, self).get_context_data(**kwargs)
|
||||
@ -203,5 +209,28 @@ class AlarmHistoryView(tables.DataTableView):
|
||||
messages.error(self.request,
|
||||
_("Could not retrieve alarm for %s") % id)
|
||||
context['alarm'] = alarm
|
||||
|
||||
contacts = []
|
||||
page_offset = self.request.GET.get('page_offset')
|
||||
|
||||
if page_offset == None:
|
||||
page_offset = 0
|
||||
try:
|
||||
results = api.monitor.alarm_history(self.request, id, page_offset, LIMIT)
|
||||
paginator = Paginator(results, LIMIT)
|
||||
contacts = paginator.page(1)
|
||||
except EmptyPage:
|
||||
contacts = paginator.page(paginator.num_pages)
|
||||
except Exception:
|
||||
messages.error(self.request,
|
||||
_("Could not retrieve alarm history for %s") % id)
|
||||
return context
|
||||
|
||||
context["contacts"] = contacts
|
||||
if len(contacts.object_list) < LIMIT:
|
||||
context["page_offset"] = None
|
||||
else:
|
||||
context["page_offset"] = contacts.object_list[-1]["id"]
|
||||
|
||||
return context
|
||||
|
||||
|
@ -75,8 +75,8 @@ def alarm_delete(request, alarm_id):
|
||||
return monascaclient(request).alarms.delete(alarm_id=alarm_id)
|
||||
|
||||
|
||||
def alarm_history(request, alarm_id):
|
||||
result = monascaclient(request).alarms.history(alarm_id=alarm_id)
|
||||
def alarm_history(request, alarm_id, offset=0, limit=10000):
|
||||
result = monascaclient(request).alarms.history(alarm_id=alarm_id, offset=offset, limit=limit)
|
||||
return result['elements'] if type(result) is dict else result
|
||||
|
||||
|
||||
@ -88,8 +88,8 @@ def alarm_patch(request, **kwargs):
|
||||
return monascaclient(request).alarms.patch(**kwargs)
|
||||
|
||||
|
||||
def alarmdef_list(request, marker=None, paginate=False):
|
||||
result = monascaclient(request).alarm_definitions.list()
|
||||
def alarmdef_list(request, offset=0, limit=10000, marker=None, paginate=False):
|
||||
result = monascaclient(request).alarm_definitions.list(offset=offset, limit=limit)
|
||||
return result['elements'] if type(result) is dict else result
|
||||
|
||||
|
||||
@ -123,8 +123,8 @@ def alarmdef_patch(request, **kwargs):
|
||||
return monascaclient(request).alarm_definitions.patch(**kwargs)
|
||||
|
||||
|
||||
def notification_list(request, marker=None, paginate=False):
|
||||
result = monascaclient(request).notifications.list()
|
||||
def notification_list(request, offset=0, limit=10000, marker=None, paginate=False):
|
||||
result = monascaclient(request).notifications.list(offset=offset, limit=limit)
|
||||
return result['elements'] if type(result) is dict else result
|
||||
|
||||
|
||||
|
@ -8,4 +8,11 @@
|
||||
{% load url from future %}
|
||||
{% block main %}
|
||||
{{ table.render }}
|
||||
<div class="pagination">
|
||||
<span class="step-links">
|
||||
{% if page_offset %}
|
||||
<a href="?page_offset={{ page_offset}}">Next Page</a>
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
{% endblock %}
|
@ -20,7 +20,7 @@ class AlarmsTest(helpers.TestCase):
|
||||
'notification_list.return_value': [],
|
||||
}) as mock:
|
||||
res = self.client.get(INDEX_URL)
|
||||
self.assertEqual(mock.notification_list.call_count, 1)
|
||||
self.assertEqual(mock.notification_list.call_count, 2)
|
||||
|
||||
self.assertTemplateUsed(
|
||||
res, 'monitoring/notifications/index.html')
|
||||
|
@ -27,11 +27,12 @@ from horizon import tables
|
||||
from monitoring.notifications import constants
|
||||
from monitoring.notifications import forms as notification_forms
|
||||
from monitoring.notifications import tables as notification_tables
|
||||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
||||
|
||||
from monitoring import api
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
LIMIT = 10
|
||||
|
||||
class IndexView(tables.DataTableView):
|
||||
table_class = notification_tables.NotificationsTable
|
||||
@ -41,15 +42,45 @@ class IndexView(tables.DataTableView):
|
||||
return super(IndexView, self).dispatch(*args, **kwargs)
|
||||
|
||||
def get_data(self):
|
||||
page_offset=self.request.GET.get('page_offset')
|
||||
results = []
|
||||
if page_offset == None:
|
||||
page_offset = 0
|
||||
try:
|
||||
results = api.monitor.notification_list(self.request)
|
||||
results = api.monitor.notification_list(self.request, page_offset, LIMIT)
|
||||
paginator = Paginator(results, LIMIT)
|
||||
results = paginator.page(1)
|
||||
except EmptyPage:
|
||||
contacts = paginator.page(paginator.num_pages)
|
||||
except Exception:
|
||||
messages.error(self.request, _("Could not retrieve notifications"))
|
||||
return results
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(IndexView, self).get_context_data(**kwargs)
|
||||
contacts = []
|
||||
results = []
|
||||
page_offset = self.request.GET.get('page_offset')
|
||||
|
||||
if page_offset == None:
|
||||
page_offset = 0
|
||||
try:
|
||||
results = api.monitor.notification_list(self.request, page_offset, LIMIT)
|
||||
paginator = Paginator(results, LIMIT)
|
||||
contacts = paginator.page(1)
|
||||
except EmptyPage:
|
||||
contacts = paginator.page(paginator.num_pages)
|
||||
except Exception:
|
||||
messages.error(self.request, _("Could not retrieve notifications"))
|
||||
return context
|
||||
|
||||
context["contacts"] = contacts
|
||||
|
||||
if len(contacts.object_list) < LIMIT:
|
||||
context["page_offset"] = None
|
||||
else:
|
||||
context["page_offset"] = contacts.object_list[-1]["id"]
|
||||
|
||||
return context
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user