mirror of
https://github.com/status-im/cabot.git
synced 2025-02-24 18:38:07 +00:00
Added StatusCheck duplication, minor bugfixes
This commit is contained in:
parent
f37e980248
commit
09effe2aab
179
app/cabotapp/migrations/0007_auto__add_instancestatussnapshot.py
Normal file
179
app/cabotapp/migrations/0007_auto__add_instancestatussnapshot.py
Normal file
@ -0,0 +1,179 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
# Adding model 'InstanceStatusSnapshot'
|
||||
db.create_table('cabotapp_instancestatussnapshot', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('instance', self.gf('django.db.models.fields.related.ForeignKey')(related_name='snapshots', to=orm['cabotapp.Instance'])),
|
||||
('time', self.gf('django.db.models.fields.DateTimeField')(db_index=True)),
|
||||
('num_checks_active', self.gf('django.db.models.fields.IntegerField')(default=0)),
|
||||
('num_checks_passing', self.gf('django.db.models.fields.IntegerField')(default=0)),
|
||||
('num_checks_failing', self.gf('django.db.models.fields.IntegerField')(default=0)),
|
||||
('overall_status', self.gf('django.db.models.fields.TextField')(default='PASSING')),
|
||||
('did_send_alert', self.gf('django.db.models.fields.IntegerField')(default=False)),
|
||||
))
|
||||
db.send_create_signal('cabotapp', ['InstanceStatusSnapshot'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Deleting model 'InstanceStatusSnapshot'
|
||||
db.delete_table('cabotapp_instancestatussnapshot')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'cabotapp.instance': {
|
||||
'Meta': {'ordering': "['name']", 'object_name': 'Instance'},
|
||||
'address': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'alerts_enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'email_alert': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'hackpad_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'hipchat_alert': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'last_alert_sent': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.TextField', [], {}),
|
||||
'old_overall_status': ('django.db.models.fields.TextField', [], {'default': "'PASSING'"}),
|
||||
'overall_status': ('django.db.models.fields.TextField', [], {'default': "'PASSING'"}),
|
||||
'sms_alert': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'status_checks': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['cabotapp.StatusCheck']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'telephone_alert': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'users_to_notify': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'cabotapp.instancestatussnapshot': {
|
||||
'Meta': {'object_name': 'InstanceStatusSnapshot'},
|
||||
'did_send_alert': ('django.db.models.fields.IntegerField', [], {'default': 'False'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'instance': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'snapshots'", 'to': "orm['cabotapp.Instance']"}),
|
||||
'num_checks_active': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'num_checks_failing': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'num_checks_passing': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'overall_status': ('django.db.models.fields.TextField', [], {'default': "'PASSING'"}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'})
|
||||
},
|
||||
'cabotapp.service': {
|
||||
'Meta': {'ordering': "['name']", 'object_name': 'Service'},
|
||||
'alerts_enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'email_alert': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'hackpad_id': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'hipchat_alert': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'instances': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['cabotapp.Instance']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'last_alert_sent': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.TextField', [], {}),
|
||||
'old_overall_status': ('django.db.models.fields.TextField', [], {'default': "'PASSING'"}),
|
||||
'overall_status': ('django.db.models.fields.TextField', [], {'default': "'PASSING'"}),
|
||||
'sms_alert': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'status_checks': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['cabotapp.StatusCheck']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'telephone_alert': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'url': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'users_to_notify': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'cabotapp.servicestatussnapshot': {
|
||||
'Meta': {'object_name': 'ServiceStatusSnapshot'},
|
||||
'did_send_alert': ('django.db.models.fields.IntegerField', [], {'default': 'False'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'num_checks_active': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'num_checks_failing': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'num_checks_passing': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'overall_status': ('django.db.models.fields.TextField', [], {'default': "'PASSING'"}),
|
||||
'service': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'snapshots'", 'to': "orm['cabotapp.Service']"}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'})
|
||||
},
|
||||
'cabotapp.shift': {
|
||||
'Meta': {'object_name': 'Shift'},
|
||||
'deleted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'end': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'start': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'uid': ('django.db.models.fields.TextField', [], {}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
|
||||
},
|
||||
'cabotapp.statuscheck': {
|
||||
'Meta': {'ordering': "['name']", 'object_name': 'StatusCheck'},
|
||||
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'cached_health': ('django.db.models.fields.TextField', [], {'null': 'True'}),
|
||||
'calculated_status': ('django.db.models.fields.CharField', [], {'default': "'passing'", 'max_length': '50', 'blank': 'True'}),
|
||||
'check_type': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'created_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
|
||||
'debounce': ('django.db.models.fields.IntegerField', [], {'default': '0', 'null': 'True'}),
|
||||
'endpoint': ('django.db.models.fields.TextField', [], {'null': 'True'}),
|
||||
'expected_num_hosts': ('django.db.models.fields.IntegerField', [], {'default': '0', 'null': 'True'}),
|
||||
'frequency': ('django.db.models.fields.IntegerField', [], {'default': '5'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'importance': ('django.db.models.fields.CharField', [], {'default': "'ERROR'", 'max_length': '30'}),
|
||||
'last_run': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
|
||||
'max_queued_build_time': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'metric': ('django.db.models.fields.TextField', [], {'null': 'True'}),
|
||||
'name': ('django.db.models.fields.TextField', [], {}),
|
||||
'password': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'polymorphic_ctype': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'polymorphic_cabotapp.statuscheck_set'", 'null': 'True', 'to': "orm['contenttypes.ContentType']"}),
|
||||
'status_code': ('django.db.models.fields.TextField', [], {'default': '200', 'null': 'True'}),
|
||||
'text_match': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'timeout': ('django.db.models.fields.IntegerField', [], {'default': '30', 'null': 'True'}),
|
||||
'username': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'value': ('django.db.models.fields.TextField', [], {'null': 'True'}),
|
||||
'verify_ssl_certificate': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
|
||||
},
|
||||
'cabotapp.statuscheckresult': {
|
||||
'Meta': {'object_name': 'StatusCheckResult'},
|
||||
'check': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['cabotapp.StatusCheck']"}),
|
||||
'error': ('django.db.models.fields.TextField', [], {'null': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'raw_data': ('django.db.models.fields.TextField', [], {'null': 'True'}),
|
||||
'succeeded': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'time': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
|
||||
'time_complete': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'db_index': 'True'})
|
||||
},
|
||||
'cabotapp.userprofile': {
|
||||
'Meta': {'object_name': 'UserProfile'},
|
||||
'fallback_alert_user': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'hipchat_alias': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '50', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'mobile_number': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '20', 'blank': 'True'}),
|
||||
'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'profile'", 'unique': 'True', 'to': "orm['auth.User']"})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['cabotapp']
|
@ -241,7 +241,7 @@ class Service(CheckGroupMixin):
|
||||
)
|
||||
|
||||
def alert(self):
|
||||
ret = super(Service, self).alert(*args, **kwargs)
|
||||
ret = super(Service, self).alert()
|
||||
service_send_alert(self, duty_officers=get_duty_officers())
|
||||
return ret
|
||||
|
||||
@ -286,7 +286,7 @@ class Instance(CheckGroupMixin):
|
||||
)
|
||||
|
||||
def alert(self):
|
||||
ret = super(Instance, self).alert(*args, **kwargs)
|
||||
ret = super(Instance, self).alert()
|
||||
instance_send_alert(self, duty_officers=get_duty_officers())
|
||||
return ret
|
||||
|
||||
@ -476,6 +476,13 @@ class StatusCheck(PolymorphicModel):
|
||||
self.update_related_instances()
|
||||
return ret
|
||||
|
||||
def duplicate(self):
|
||||
new_check = self
|
||||
new_check.pk = None
|
||||
new_check.id = None
|
||||
new_check.save()
|
||||
return new_check.pk
|
||||
|
||||
def update_related_services(self):
|
||||
services = self.service_set.all()
|
||||
for service in services:
|
||||
|
@ -55,6 +55,27 @@ def run_status_check(request, pk):
|
||||
return HttpResponseRedirect(reverse('check', kwargs={'pk': pk}))
|
||||
|
||||
|
||||
def duplicate_icmp_check(request, pk):
|
||||
pc = StatusCheck.objects.get(pk=pk)
|
||||
npk = pc.duplicate()
|
||||
return HttpResponseRedirect(reverse('update-icmp-check', kwargs={'pk': npk}))
|
||||
|
||||
def duplicate_http_check(request, pk):
|
||||
pc = StatusCheck.objects.get(pk=pk)
|
||||
npk = pc.duplicate()
|
||||
return HttpResponseRedirect(reverse('update-http-check', kwargs={'pk': npk}))
|
||||
|
||||
def duplicate_graphite_check(request, pk):
|
||||
pc = StatusCheck.objects.get(pk=pk)
|
||||
npk = pc.duplicate()
|
||||
return HttpResponseRedirect(reverse('update-graphite-check', kwargs={'pk': npk}))
|
||||
|
||||
def duplicate_jenkins_check(request, pk):
|
||||
pc = StatusCheck.objects.get(pk=pk)
|
||||
npk = pc.duplicate()
|
||||
return HttpResponseRedirect(reverse('update-jenkins-check', kwargs={'pk': npk}))
|
||||
|
||||
|
||||
class StatusCheckResultDetailView(LoginRequiredMixin, DetailView):
|
||||
model = StatusCheckResult
|
||||
context_object_name = 'result'
|
||||
@ -415,11 +436,6 @@ class ICMPCheckUpdateView(CheckUpdateView):
|
||||
model = ICMPStatusCheck
|
||||
form_class = ICMPStatusCheckForm
|
||||
|
||||
class ICMPhiteCheckCreateView(CheckCreateView):
|
||||
model = GraphiteStatusCheck
|
||||
form_class = GraphiteStatusCheckForm
|
||||
|
||||
|
||||
class GraphiteCheckUpdateView(CheckUpdateView):
|
||||
model = GraphiteStatusCheck
|
||||
form_class = GraphiteStatusCheckForm
|
||||
|
@ -101,6 +101,9 @@
|
||||
<a class="btn btn-xs" href="{% if check.polymorphic_ctype.model == 'graphitestatuscheck' %}{% url update-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'httpstatuscheck' %}{% url update-http-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'icmpstatuscheck' %}{% url update-icmp-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'jenkinsstatuscheck' %}{% url update-jenkins-check pk=check.id %}{% endif %}">
|
||||
<i class="glyphicon glyphicon-edit"></i><span class="break"></span>
|
||||
</a>
|
||||
<a class="btn btn-xs" href="{% if check.polymorphic_ctype.model == 'graphitestatuscheck' %}{% url duplicate-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'httpstatuscheck' %}{% url duplicate-http-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'icmpstatuscheck' %}{% url duplicate-icmp-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'jenkinsstatuscheck' %}{% url duplicate-jenkins-check pk=check.id %}{% endif %}">
|
||||
<i class="fa fa-copy"></i><span class="break"></span>
|
||||
</a>
|
||||
<a class="btn btn-xs" href="{% url run-check pk=check.id %}">
|
||||
<i class="glyphicon glyphicon-refresh"></i><span class="break"></span>
|
||||
</a>
|
||||
|
@ -101,6 +101,9 @@
|
||||
<a class="btn btn-xs" href="{% if check.polymorphic_ctype.model == 'graphitestatuscheck' %}{% url update-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'httpstatuscheck' %}{% url update-http-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'icmpstatuscheck' %}{% url update-icmp-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'jenkinsstatuscheck' %}{% url update-jenkins-check pk=check.id %}{% endif %}">
|
||||
<i class="glyphicon glyphicon-edit"></i><span class="break"></span>
|
||||
</a>
|
||||
<a class="btn btn-xs" href="{% if check.polymorphic_ctype.model == 'graphitestatuscheck' %}{% url duplicate-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'httpstatuscheck' %}{% url duplicate-http-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'icmpstatuscheck' %}{% url duplicate-icmp-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'jenkinsstatuscheck' %}{% url duplicate-jenkins-check pk=check.id %}{% endif %}">
|
||||
<i class="fa fa-copy"></i><span class="break"></span>
|
||||
</a>
|
||||
<a class="btn btn-xs" href="{% url run-check pk=check.id %}">
|
||||
<i class="glyphicon glyphicon-refresh"></i><span class="break"></span>
|
||||
</a>
|
||||
|
@ -85,6 +85,9 @@
|
||||
<a class="btn btn-xs" href="{% if check.polymorphic_ctype.model == 'graphitestatuscheck' %}{% url update-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'httpstatuscheck' %}{% url update-http-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'jenkinsstatuscheck' %}{% url update-jenkins-check pk=check.id %}{% endif %}">
|
||||
<i class="glyphicon glyphicon-edit"></i><span class="break"></span>
|
||||
</a>
|
||||
<a class="btn btn-xs" href="{% if check.polymorphic_ctype.model == 'graphitestatuscheck' %}{% url duplicate-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'httpstatuscheck' %}{% url duplicate-http-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'icmpstatuscheck' %}{% url duplicate-icmp-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'jenkinsstatuscheck' %}{% url duplicate-jenkins-check pk=check.id %}{% endif %}">
|
||||
<i class="fa fa-copy"></i><span class="break"></span>
|
||||
</a>
|
||||
<a class="btn btn-xs" href="{% url run-check pk=check.id %}">
|
||||
<i class="glyphicon glyphicon-refresh"></i><span class="break"></span>
|
||||
</a>
|
||||
|
@ -13,7 +13,9 @@
|
||||
{% if check.polymorphic_ctype.model == 'jenkinsstatuscheck' %}
|
||||
<a href="{% jenkins_human_url check.name %}" class=""><i class="glyphicon glyphicon-link"></i></a>
|
||||
{% endif %}
|
||||
<a href="{% if check.polymorphic_ctype.model == 'graphitestatuscheck' %}{% url update-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'httpstatuscheck' %}{% url update-http-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'jenkinsstatuscheck' %}{% url update-jenkins-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'icmpstatuscheck' %}{% url update-icmp-check pk=check.id %}{% endif %}" class=""><i class="glyphicon glyphicon-edit"></i></a> <a href="{% url run-check pk=check.id %}"><i class="glyphicon glyphicon-refresh"></i></a>
|
||||
<a href="{% if check.polymorphic_ctype.model == 'graphitestatuscheck' %}{% url update-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'httpstatuscheck' %}{% url update-http-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'jenkinsstatuscheck' %}{% url update-jenkins-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'icmpstatuscheck' %}{% url update-icmp-check pk=check.id %}{% endif %}" class=""><i class="glyphicon glyphicon-edit"></i>
|
||||
<a href="{% if check.polymorphic_ctype.model == 'graphitestatuscheck' %}{% url duplicate-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'httpstatuscheck' %}{% url duplicate-http-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'jenkinsstatuscheck' %}{% url duplicate-jenkins-check pk=check.id %}{% elif check.polymorphic_ctype.model == 'icmpstatuscheck' %}{% url duplicate-icmp-check pk=check.id %}{% endif %}" class=""><i class="fa fa-copy"></i>
|
||||
</a> <a href="{% url run-check pk=check.id %}"><i class="glyphicon glyphicon-refresh"></i></a>
|
||||
</h2></div>
|
||||
</div>
|
||||
</div>
|
||||
|
13
app/urls.py
13
app/urls.py
@ -1,6 +1,7 @@
|
||||
from django.conf.urls.defaults import patterns, include, url
|
||||
from cabotapp.views import (
|
||||
run_status_check, graphite_api_data, twiml_callback, checks_run_recently,
|
||||
duplicate_icmp_check, duplicate_graphite_check, duplicate_http_check, duplicate_jenkins_check,
|
||||
GraphiteCheckCreateView, GraphiteCheckUpdateView,
|
||||
HttpCheckCreateView, HttpCheckUpdateView,
|
||||
ICMPCheckCreateView, ICMPCheckUpdateView,
|
||||
@ -70,27 +71,39 @@ urlpatterns = patterns('',
|
||||
url(r'^checks/report/$',
|
||||
view=StatusCheckReportView.as_view(), name='checks-report'),
|
||||
|
||||
|
||||
url(r'^icmpcheck/create/', view=ICMPCheckCreateView.as_view(),
|
||||
name='create-icmp-check'),
|
||||
url(r'^icmpcheck/update/(?P<pk>\d+)/',
|
||||
view=ICMPCheckUpdateView.as_view(
|
||||
), name='update-icmp-check'),
|
||||
url(r'^icmpcheck/duplicate/(?P<pk>\d+)/',
|
||||
view=duplicate_icmp_check, name='duplicate-icmp-check'),
|
||||
|
||||
url(r'^graphitecheck/create/',
|
||||
view=GraphiteCheckCreateView.as_view(
|
||||
), name='create-check'),
|
||||
url(r'^graphitecheck/update/(?P<pk>\d+)/',
|
||||
view=GraphiteCheckUpdateView.as_view(
|
||||
), name='update-check'),
|
||||
url(r'^graphitecheck/duplicate/(?P<pk>\d+)/',
|
||||
view=duplicate_graphite_check, name='duplicate-graphite-check'),
|
||||
|
||||
url(r'^httpcheck/create/', view=HttpCheckCreateView.as_view(),
|
||||
name='create-http-check'),
|
||||
url(r'^httpcheck/update/(?P<pk>\d+)/',
|
||||
view=HttpCheckUpdateView.as_view(
|
||||
), name='update-http-check'),
|
||||
url(r'^httpcheck/duplicate/(?P<pk>\d+)/',
|
||||
view=duplicate_http_check, name='duplicate-http-check'),
|
||||
|
||||
url(r'^jenkins_check/create/', view=JenkinsCheckCreateView.as_view(),
|
||||
name='create-jenkins-check'),
|
||||
url(r'^jenkins_check/update/(?P<pk>\d+)/',
|
||||
view=JenkinsCheckUpdateView.as_view(
|
||||
), name='update-jenkins-check'),
|
||||
url(r'^jenkins_check/duplicate/(?P<pk>\d+)/',
|
||||
view=duplicate_jenkins_check, name='duplicate-jenkins-check'),
|
||||
|
||||
url(r'^result/(?P<service_id>\d+)/twiml_callback/',
|
||||
view=twiml_callback, name='twiml-callback'),
|
||||
|
Loading…
x
Reference in New Issue
Block a user