diff --git a/monitoring/alarms/constants.py b/monitoring/alarms/constants.py index 1ede334f..d7030b8e 100644 --- a/monitoring/alarms/constants.py +++ b/monitoring/alarms/constants.py @@ -14,29 +14,6 @@ # License for the specific language governing permissions and limitations # under the License. -from django.core import validators -from django.utils.translation import ugettext_lazy as _ # noqa - - -class NotificationType(object): - SMS = "SMS" - EMAIL = "EMAIL" - - CHOICES = [(EMAIL, _("Email")), - (SMS, _("SMS")), ] - - @staticmethod - def get_label(key): - for choice in NotificationType.CHOICES: - if choice[0] == key: - return choice[1] - return key - -PHONE_VALIDATOR = validators.RegexValidator( - regex=r"^\+[()0-9 ]{5,20}$", - message=_("Address must contain a valid phone number.")) -EMAIL_VALIDATOR = validators.EmailValidator( - message=_("Address must contain a valid email address.")) URL_PREFIX = 'horizon:overcloud:alarms:' TEMPLATE_PREFIX = 'overcloud/alarms/' diff --git a/monitoring/alarms/forms.py b/monitoring/alarms/forms.py index d1f69d02..f4f2b6fd 100644 --- a/monitoring/alarms/forms.py +++ b/monitoring/alarms/forms.py @@ -24,7 +24,6 @@ from horizon import forms from horizon import messages from monitoring import api -from monitoring import constants def get_expression(meter): diff --git a/monitoring/alarms/urls.py b/monitoring/alarms/urls.py index 08ed73b9..84cf8294 100644 --- a/monitoring/alarms/urls.py +++ b/monitoring/alarms/urls.py @@ -19,7 +19,7 @@ from django.conf.urls import url from . import views urlpatterns = patterns( - 'openstack_dashboard.dashboards.admin.monitoring.views', + '', url(r'^$', views.IndexView.as_view(), name='index'), url(r'^status', views.StatusView.as_view(), name='status'), url(r'^alarm/(?P[^/]+)/$', diff --git a/monitoring/alarms/views.py b/monitoring/alarms/views.py index 0ccfeb94..520729ff 100644 --- a/monitoring/alarms/views.py +++ b/monitoring/alarms/views.py @@ -211,11 +211,13 @@ class AlarmCreateView(forms.ModalFormView): def get_context_data(self, **kwargs): context = super(AlarmCreateView, self).get_context_data(**kwargs) context["cancel_url"] = self.get_success_url() - context["action_url"] = reverse(constants.URL_PREFIX + 'alarm_create', args=(self.service,)) + context["action_url"] = reverse(constants.URL_PREFIX + 'alarm_create', + args=(self.service,)) return context def get_success_url(self): - return reverse_lazy(constants.URL_PREFIX + 'alarm', args=(self.service,)) + return reverse_lazy(constants.URL_PREFIX + 'alarm', + args=(self.service,)) def transform_alarm_data(obj): @@ -330,7 +332,8 @@ class AlarmEditView(forms.ModalFormView): return context def get_success_url(self): - return reverse_lazy(constants.URL_PREFIX + 'alarm', args=(self.service,)) + return reverse_lazy(constants.URL_PREFIX + 'alarm', + args=(self.service,)) class AlarmHistoryView(tables.DataTableView): diff --git a/monitoring/api/monitor.py b/monitoring/api/monitor.py index c3fe4b61..28629bee 100644 --- a/monitoring/api/monitor.py +++ b/monitoring/api/monitor.py @@ -35,7 +35,7 @@ def monclient(request, password=None): endpoint = getattr(settings, 'MONITORING_ENDPOINT', 'http://192.168.10.4:8080/v2.0') project_id = getattr(settings, 'MONITORING_PROJECT', - '82510970543135') + '82510970543135') LOG.debug('monclient connection created using token "%s" and url "%s"' % (request.user.token.id, endpoint)) kwargs = { diff --git a/monitoring/notifications/constants.py b/monitoring/notifications/constants.py index 1ede334f..3dca3d54 100644 --- a/monitoring/notifications/constants.py +++ b/monitoring/notifications/constants.py @@ -38,11 +38,5 @@ PHONE_VALIDATOR = validators.RegexValidator( EMAIL_VALIDATOR = validators.EmailValidator( message=_("Address must contain a valid email address.")) -URL_PREFIX = 'horizon:overcloud:alarms:' -TEMPLATE_PREFIX = 'overcloud/alarms/' - -CRITICAL_ICON = '/static/monitoring/img/critical-icon.png' -WARNING_ICON = '/static/monitoring/img/warning-icon.png' -OK_ICON = '/static/monitoring/img/ok-icon.png' -UNKNOWN_ICON = '/static/monitoring/img/unknown-icon.png' -NOTFOUND_ICON = '/static/monitoring/img/notfound-icon.png' +URL_PREFIX = 'horizon:overcloud:notifications:' +TEMPLATE_PREFIX = 'overcloud/notifications/' diff --git a/monitoring/notifications/forms.py b/monitoring/notifications/forms.py index 8d95d710..59f63607 100644 --- a/monitoring/notifications/forms.py +++ b/monitoring/notifications/forms.py @@ -14,9 +14,6 @@ # License for the specific language governing permissions and limitations # under the License. -from django import forms as django_forms -from django.utils.html import escape -from django.utils.html import format_html from django.utils.translation import ugettext_lazy as _ # noqa from horizon import exceptions @@ -24,311 +21,7 @@ from horizon import forms from horizon import messages from monitoring import api -from monitoring import constants - - -def get_expression(meter): - expr = meter['name'] - args = None - for name, value in meter['dimensions'].items(): - if name != 'detail': - if args: - args += ', ' - else: - args = '' - args += "%s=%s" % (name, value) - return "%s{%s}" % (expr, args) - - -class SimpleExpressionWidget(django_forms.MultiWidget): - def __init__(self, meters=None, attrs=None): - choices = [(get_expression(m), get_expression(m)) for m in meters] - comparators = [('>', '>'), ('>=', '>='), ('<', '<'), ('<=', '<=')] - func = [('min', _('min')), ('max', _('max')), ('sum', _('sum')), - ('count', _('count')), ('avg', _('avg'))] - _widgets = ( - django_forms.widgets.Select(attrs=attrs, choices=func), - django_forms.widgets.Select(attrs=attrs, choices=choices), - django_forms.widgets.Select(attrs=attrs, choices=comparators), - django_forms.widgets.TextInput(attrs=attrs), - ) - super(SimpleExpressionWidget, self).__init__(_widgets, attrs) - - def decompress(self, expr): - return [None, None, None] - - def format_output(self, rendered_widgets): - return ''.join(rendered_widgets) - - def value_from_datadict(self, data, files, name): - values = [ - widget.value_from_datadict(data, files, name + '_%s' % i) - for i, widget in enumerate(self.widgets)] - try: - expression = '%s(%s)%s%s' % (values[0], - values[1], - values[2], - values[3]) - except ValueError: - return '' - else: - return expression - - -class NotificationTableWidget(forms.Widget): - FIELD_ID_IDX = 0 - FIELD_NAME_IDX = 1 - - def __init__(self, *args, **kwargs): - self.fields = kwargs.pop('fields') - super(NotificationTableWidget, self).__init__(*args, **kwargs) - - def render(self, name, value, attrs): - output = '' - for field in self.fields: - output += '' % unicode(field[self.FIELD_NAME_IDX]) - output += '' - if value: - for notification in value: - output += "" - for field in self.fields: - field_value = notification[field[self.FIELD_ID_IDX]] - output += '' % escape(field_value) - output += "" - output += '
%s
%s
' - return format_html(output) - - -class NotificationField(forms.MultiValueField): - def __init__(self, *args, **kwargs): - super(NotificationField, self).__init__(*args, **kwargs) - - def _get_choices(self): - return self._choices - - def _set_choices(self, value): - # Setting choices also sets the choices on the widget. - # choices can be any iterable, but we call list() on it because - # it will be consumed more than once. - self._choices = self.widget.choices = list(value) - - choices = property(_get_choices, _set_choices) - - def compress(self, data_list): - return data_list - - def clean(self, value): - return value - - -class NotificationCreateWidget(forms.Select): - def __init__(self, *args, **kwargs): - super(NotificationCreateWidget, self).__init__(*args, **kwargs) - - def render(self, name, value, attrs=None, choices=()): - output = '' - output += '' % \ - unicode(_("Name")) - if value: - idx = 1 - for notification in value: - output += '' - idx += 1 - else: - output += '
%s
' - output += ('' - output += '
' - output += '