Progress on alarms (details and create)
This commit is contained in:
parent
0579bac6b4
commit
3301b8faf3
@ -68,7 +68,10 @@ def alarm_delete(request, alarm_id):
|
||||
|
||||
|
||||
def alarm_get(request, alarm_id):
|
||||
return monclient(request).alarms.get(alarm_id)
|
||||
args = AttrStore()
|
||||
args.runlocal = True
|
||||
args.os_tenant_id = "12345678"
|
||||
return monclient(request).alarms.get(args, alarm_id=alarm_id)
|
||||
|
||||
|
||||
def alarm_create(request, password=None, **kwargs):
|
||||
@ -94,11 +97,17 @@ def notification_delete(request, notification_id):
|
||||
|
||||
|
||||
def notification_get(request, notification_id):
|
||||
return monclient(request).notifications.get(notification_id)
|
||||
args = AttrStore()
|
||||
args.runlocal = True
|
||||
args.os_tenant_id = "12345678"
|
||||
return monclient(request).notifications.get(args, notification_id=notification_id)
|
||||
|
||||
|
||||
def notification_create(request, password=None, **kwargs):
|
||||
return monclient(request, password).notifications.create(**kwargs)
|
||||
def notification_create(request, **kwargs):
|
||||
args = AttrStore()
|
||||
args.runlocal = True
|
||||
args.os_tenant_id = "12345678"
|
||||
return monclient(request).notifications.create(args, **kwargs)
|
||||
|
||||
|
||||
def notification_update(request, notification_id, **kwargs):
|
||||
|
Binary file not shown.
@ -39,3 +39,6 @@ PHONE_VALIDATOR = validators.RegexValidator(
|
||||
EMAIL_VALIDATOR = validators.EmailValidator(
|
||||
message=_("Address must contain a valid email address."))
|
||||
|
||||
URL_PREFIX = 'horizon:admin:monitoring:'
|
||||
TEMPLATE_PREFIX = 'admin/monitoring/'
|
||||
|
||||
|
@ -178,8 +178,8 @@ class CreateAlarmForm(BaseAlarmForm):
|
||||
notifications = []
|
||||
exceptions.handle(request,
|
||||
_('Unable to retrieve notifications: %s') % e)
|
||||
notification_choices = [(notification.id, notification.name)
|
||||
for notification in notifications]
|
||||
notification_choices = [(notification['id'], notification['name'])
|
||||
for notification in notifications]
|
||||
if notification_choices:
|
||||
if len(notification_choices) > 1:
|
||||
notification_choices.insert(
|
||||
@ -283,9 +283,9 @@ class CreateMethodForm(BaseNotificationMethodForm):
|
||||
try:
|
||||
api.monitoring.notification_create(
|
||||
request,
|
||||
data['name'],
|
||||
data['type'],
|
||||
data['address'])
|
||||
name=data['name'],
|
||||
type=data['type'],
|
||||
address=data['address'])
|
||||
messages.success(request,
|
||||
_('Notification method has been created '
|
||||
'successfully.'))
|
||||
|
@ -21,6 +21,8 @@ from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from horizon import tables
|
||||
|
||||
from . import constants
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@ -56,14 +58,14 @@ def show_status(data):
|
||||
class ShowAlarmHistory(tables.LinkAction):
|
||||
name = 'history'
|
||||
verbose_name = _('Show History')
|
||||
url = 'horizon:admin:monitoring:history'
|
||||
url = constants.URL_PREFIX + 'history'
|
||||
classes = ('btn-edit',)
|
||||
|
||||
|
||||
class ShowAlarmMeters(tables.LinkAction):
|
||||
name = 'meters'
|
||||
verbose_name = _('Show Meters')
|
||||
url = 'horizon:admin:monitoring:meters'
|
||||
url = constants.URL_PREFIX + 'meters'
|
||||
classes = ('btn-edit',)
|
||||
|
||||
|
||||
@ -71,7 +73,7 @@ class CreateAlarm(tables.LinkAction):
|
||||
name = "create_alarm"
|
||||
verbose_name = _("Create Alarm")
|
||||
classes = ("ajax-modal", "btn-create")
|
||||
url = 'horizon:admin:monitoring:alarm_create'
|
||||
url = constants.URL_PREFIX + 'alarm_create'
|
||||
|
||||
def allowed(self, request, datum=None):
|
||||
return True
|
||||
@ -101,12 +103,14 @@ class AlarmsTable(tables.DataTable):
|
||||
|
||||
class RealAlarmsTable(tables.DataTable):
|
||||
state = tables.Column('state', verbose_name=_('State'))
|
||||
target = tables.Column('name', verbose_name=_('Name'))
|
||||
target = tables.Column('name', verbose_name=_('Name'),
|
||||
link=constants.URL_PREFIX + 'alarm_detail',
|
||||
link_classes=('ajax-modal',))
|
||||
name = tables.Column('description', verbose_name=_('Description'))
|
||||
expression = tables.Column('expression', verbose_name=_('Expression'))
|
||||
|
||||
def get_object_id(self, obj):
|
||||
return obj['name']
|
||||
return obj['id']
|
||||
|
||||
class Meta:
|
||||
name = "alarms"
|
||||
|
@ -3,7 +3,7 @@
|
||||
{% load url from future %}
|
||||
|
||||
{% block form_id %}create_alarm_form{% endblock %}
|
||||
{% block form_action %}{% url 'horizon:admin:monitoring:alarm_create' %}{% endblock %}
|
||||
{% block form_action %}{{ action_url }}{% endblock %}
|
||||
|
||||
{% block modal-header %}{% trans "Create Alarm" %}{% endblock %}
|
||||
|
||||
@ -40,5 +40,5 @@ $('#add_notification_button').click(function(){
|
||||
|
||||
{% block modal-footer %}
|
||||
<input class="btn btn-primary pull-right" type="submit" value="{% trans "Create Alarm" %}" />
|
||||
<a href="{% url 'horizon:admin:monitoring:alarm' %}" class="btn secondary cancel close">{% trans "Cancel" %}</a>
|
||||
<a href="{{ cancel_url }}" class="btn secondary cancel close">{% trans "Cancel" %}</a>
|
||||
{% endblock %}
|
||||
|
@ -3,7 +3,6 @@
|
||||
{% load url from future %}
|
||||
|
||||
{% block form_id %}detail_alarm_form{% endblock %}
|
||||
{% block form_action %}{% url 'horizon:project:monitoring_alarms:detail' alarm.id %}{% endblock %}
|
||||
|
||||
{% block modal-header %}{% trans "Alarm Details" %}{% endblock %}
|
||||
|
||||
@ -14,5 +13,5 @@
|
||||
{% endblock %}
|
||||
|
||||
{% block modal-footer %}
|
||||
<a href="{% url 'horizon:project:monitoring_alarms:index' %}" class="btn secondary cancel close">{% trans "Close" %}</a>
|
||||
<a href="{{ cancel_url }}" class="btn secondary cancel close">{% trans "Close" %}</a>
|
||||
{% endblock %}
|
||||
|
@ -7,5 +7,5 @@
|
||||
{% endblock page_header %}
|
||||
|
||||
{% block main %}
|
||||
{% include 'project/monitoring_alarms/_detail.html' %}
|
||||
{% include 'admin/monitoring/alarms/_detail.html' %}
|
||||
{% endblock %}
|
||||
|
@ -7,5 +7,5 @@
|
||||
{% endblock page_header %}
|
||||
{% load url from future %}
|
||||
{% block main %}
|
||||
{% include 'admin/monitoring/newmonitor.html' %}
|
||||
{% include 'admin/monitoring/monitor.html' %}
|
||||
{% endblock %}
|
@ -3,7 +3,7 @@
|
||||
{% load url from future %}
|
||||
|
||||
{% block form_id %}create_notif_method_form{% endblock %}
|
||||
{% block form_action %}{% url 'horizon:project:monitoring_notifications:methods:create' %}{% endblock %}
|
||||
{% block form_action %}{% url 'horizon:admin:monitoring:notification_create' %}{% endblock %}
|
||||
|
||||
{% block modal-header %}{% trans "Create Notification Method" %}{% endblock %}
|
||||
|
||||
@ -30,5 +30,5 @@
|
||||
|
||||
{% block modal-footer %}
|
||||
<input class="btn btn-primary pull-right" type="submit" value="{% trans "Create Notification Method" %}" />
|
||||
<a href="{% url 'horizon:project:monitoring_notifications:index' %}" class="btn secondary cancel close">{% trans "Cancel" %}</a>
|
||||
<a href="{% url 'horizon:admin:monitoring:index' %}" class="btn secondary cancel close">{% trans "Cancel" %}</a>
|
||||
{% endblock %}
|
||||
|
@ -7,5 +7,5 @@
|
||||
{% endblock page_header %}
|
||||
|
||||
{% block main %}
|
||||
{% include 'project/monitoring_notifications/methods/_create.html' %}
|
||||
{% include 'admin/monitoring/notifications/_create.html' %}
|
||||
{% endblock %}
|
||||
|
@ -7,5 +7,5 @@
|
||||
{% endblock page_header %}
|
||||
|
||||
{% block main %}
|
||||
{% include 'project/monitoring_notifications/methods/_detail.html' %}
|
||||
{% include 'admin/monitoring/notifications/_detail.html' %}
|
||||
{% endblock %}
|
||||
|
@ -36,4 +36,5 @@ urlpatterns = patterns(
|
||||
name='meters'),
|
||||
url(r'^alarm_create$', views.AlarmCreateView.as_view(), name='alarm_create'),
|
||||
url(r'^(?P<id>[^/]+)/alarm_detail/$', views.AlarmDetailView.as_view(), name='alarm_detail'),
|
||||
url(r'^notification_create$', views.NotificationCreateView.as_view(), name='notification_create'),
|
||||
)
|
||||
|
@ -19,14 +19,15 @@ import logging
|
||||
import json
|
||||
import random
|
||||
|
||||
from django.core.urlresolvers import reverse_lazy # noqa
|
||||
from django.core.urlresolvers import reverse_lazy, reverse # noqa
|
||||
from django.template import defaultfilters as filters
|
||||
from django.http import HttpResponse # noqa
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.views.generic import TemplateView
|
||||
|
||||
from horizon import tables
|
||||
from horizon import exceptions
|
||||
from horizon import forms
|
||||
from horizon import tables
|
||||
|
||||
from monitoring.api import monitoring
|
||||
|
||||
@ -34,6 +35,7 @@ from .tables import AlarmsTable
|
||||
from .tables import RealAlarmsTable
|
||||
from .tables import AlarmHistoryTable
|
||||
from . import forms as alarm_forms
|
||||
from . import constants
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
@ -131,7 +133,7 @@ SAMPLE = [{'name': _('Platform Services'),
|
||||
]
|
||||
|
||||
class IndexView(TemplateView):
|
||||
template_name = 'admin/monitoring/index.html'
|
||||
template_name = constants.TEMPLATE_PREFIX + 'index.html'
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(IndexView, self).get_context_data(**kwargs)
|
||||
@ -142,7 +144,7 @@ class IndexView(TemplateView):
|
||||
|
||||
|
||||
class StatusView(TemplateView):
|
||||
template_name = "admin/metering/samples.csv"
|
||||
template_name = ""
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
services = ['MaaS',
|
||||
@ -211,11 +213,18 @@ class AlarmView(tables.DataTableView):
|
||||
|
||||
class AlarmCreateView(forms.ModalFormView):
|
||||
form_class = alarm_forms.CreateAlarmForm
|
||||
template_name = 'admin/monitoring/alarms/create.html'
|
||||
success_url = reverse_lazy('horizon:admin:monitoring:alarm')
|
||||
template_name = constants.TEMPLATE_PREFIX + 'alarms/create.html'
|
||||
success_url = reverse_lazy(constants.URL_PREFIX + 'alarm')
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(AlarmCreateView, self).get_context_data(**kwargs)
|
||||
context["cancel_url"] = self.success_url
|
||||
context["action_url"] = reverse(constants.URL_PREFIX + 'alarm_create')
|
||||
return context
|
||||
|
||||
|
||||
def transform_alarm_data(obj):
|
||||
return obj
|
||||
return {'id': getattr(obj, 'id', None),
|
||||
'name': getattr(obj, 'name', None),
|
||||
'expression': getattr(obj, 'expression', None),
|
||||
@ -225,8 +234,8 @@ def transform_alarm_data(obj):
|
||||
|
||||
class AlarmDetailView(forms.ModalFormView):
|
||||
form_class = alarm_forms.DetailAlarmForm
|
||||
template_name = 'admin/monitoring/alarms/detail.html'
|
||||
success_url = reverse_lazy('horizon:admin:monitoring:alarm')
|
||||
template_name = constants.TEMPLATE_PREFIX + 'alarms/detail.html'
|
||||
success_url = reverse_lazy(constants.URL_PREFIX + 'alarm')
|
||||
|
||||
def get_object(self):
|
||||
id = self.kwargs['id']
|
||||
@ -234,19 +243,15 @@ class AlarmDetailView(forms.ModalFormView):
|
||||
if hasattr(self, "_object"):
|
||||
return self._object
|
||||
self._object = None
|
||||
self._object = api.hp_monitoring.alarm_get(self.request, id)
|
||||
alarm_actions = getattr(self._object, 'alarm_actions', [])
|
||||
self._object = monitoring.alarm_get(self.request, id)
|
||||
notifications = []
|
||||
# Fetch the notification object for each alarm_actions
|
||||
for notif_id in alarm_actions:
|
||||
for notif_id in self._object["alarm_actions"]:
|
||||
try:
|
||||
notification = api.hp_monitoring.notification_method_get(
|
||||
notification = monitoring.notification_get(
|
||||
self.request,
|
||||
notif_id)
|
||||
notifications.append({"id": notification.id,
|
||||
"name": notification.name,
|
||||
"type": notification.type,
|
||||
"address": notification.address})
|
||||
notifications.append(notification)
|
||||
except exceptions.NOT_FOUND:
|
||||
msg = _("Notification %s has already been deleted.") % \
|
||||
notif_id
|
||||
@ -254,10 +259,10 @@ class AlarmDetailView(forms.ModalFormView):
|
||||
"name": unicode(msg),
|
||||
"type": "",
|
||||
"address": ""})
|
||||
self._object.alarm_actions = notifications
|
||||
self._object["notifications"] = notifications
|
||||
return self._object
|
||||
except Exception:
|
||||
redirect = reverse(constants.ALARMS_INDEX_URL)
|
||||
redirect = reverse(constants.URL_PREFIX + 'alarm')
|
||||
exceptions.handle(self.request,
|
||||
_('Unable to retrieve alarm details.'),
|
||||
redirect=redirect)
|
||||
@ -268,14 +273,15 @@ class AlarmDetailView(forms.ModalFormView):
|
||||
return transform_alarm_data(self.alarm)
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(DetailView, self).get_context_data(**kwargs)
|
||||
context = super(AlarmDetailView, self).get_context_data(**kwargs)
|
||||
context["alarm"] = self.alarm
|
||||
context["cancel_url"] = self.success_url
|
||||
return context
|
||||
|
||||
|
||||
class AlarmHistoryView(tables.DataTableView):
|
||||
table_class = AlarmHistoryTable
|
||||
template_name = 'admin/monitoring/alarm_history.html'
|
||||
template_name = constants.TEMPLATE_PREFIX + 'alarm_history.html'
|
||||
|
||||
def dispatch(self, *args, **kwargs):
|
||||
return super(AlarmHistoryView, self).dispatch(*args, **kwargs)
|
||||
@ -295,7 +301,7 @@ class AlarmHistoryView(tables.DataTableView):
|
||||
|
||||
|
||||
class AlarmMeterView(TemplateView):
|
||||
template_name = 'admin/monitoring/alarm_meter.html'
|
||||
template_name = constants.TEMPLATE_PREFIX + 'alarm_meter.html'
|
||||
|
||||
|
||||
def get_random_status():
|
||||
@ -311,4 +317,10 @@ def get_random_status():
|
||||
if num < dist["prob"]:
|
||||
return dist["value"]
|
||||
num = num - dist["prob"]
|
||||
return distribution[len(distribution) - 1]["value"]
|
||||
return distribution[len(distribution) - 1]["value"]
|
||||
|
||||
|
||||
class NotificationCreateView(forms.ModalFormView):
|
||||
form_class = alarm_forms.CreateMethodForm
|
||||
template_name = constants.TEMPLATE_PREFIX + 'notifications/create.html'
|
||||
success_url = reverse_lazy(constants.URL_PREFIX + 'alarm')
|
||||
|
Loading…
Reference in New Issue
Block a user