timings table now uses Decimal diff as well

This commit is contained in:
Sandy Walsh
2012-10-31 12:26:58 -03:00
parent 71895341fe
commit 8695cbabcf
4 changed files with 37 additions and 49 deletions

View File

@@ -75,6 +75,4 @@ class Timing(models.Model):
start_when = models.DecimalField(null=True, max_digits=20, decimal_places=6)
end_when = models.DecimalField(null=True, max_digits=20, decimal_places=6)
diff_days = models.IntegerField(default=0)
diff_seconds = models.IntegerField(default=0)
diff_usecs = models.IntegerField(default=0)
diff = models.DecimalField(null=True, max_digits=20, decimal_places=6)

View File

@@ -9,8 +9,8 @@ import datetime_to_decimal as dt
import models
import views
SECS_PER_DAY = 60 * 60 * 24
SECS_PER_HOUR = 60 * 60
SECS_PER_DAY = SECS_PER_HOUR * 24
def get_event_names():
@@ -35,45 +35,36 @@ def get_deployments():
return models.Deployment.objects.all().order_by('name')
def show_timings_for_uuid(uuid):
def get_timings_for_uuid(uuid):
lifecycles = models.Lifecycle.objects.filter(instance=uuid)
results = []
results.append(["?", "Event", "Time (secs)"])
for lc in lifecycles:
timings = models.Timing.objects.filter(lifecycle=lc)
if not timings:
continue
this = []
this.append(["?", "Event", "Time (secs)"])
for t in timings:
state = "?"
show_time = 'n/a'
if t.start_raw:
state = 'S'
if t.end_raw:
sate = 'E'
state = 'E'
if t.start_raw and t.end_raw:
state = "."
this.append([state, t.name, sec_to_time(seconds_from_timing(t))])
results.append(this)
show_time = sec_to_time(t.diff)
results.append([state, t.name, show_time])
return results
def seconds_from_timedelta(days, seconds, usecs):
us = usecs / 1000000.0
return (days * SECS_PER_DAY) + seconds + us
def seconds_from_timing(t):
return seconds_from_timedelta(t.diff_days, t.diff_seconds, t.diff_usecs)
def sec_to_time(fseconds):
seconds = int(fseconds)
usec = fseconds - seconds
days = seconds / (60 * 60 * 24)
seconds -= (days * (60 * 60 * 24))
hours = seconds / (60 * 60)
seconds -= (hours * (60 * 60))
def sec_to_time(diff):
seconds = int(diff)
usec = diff - seconds
days = seconds / SECS_PER_DAY
seconds -= (days * SECS_PER_DAY)
hours = seconds / SECS_PER_HOUR
seconds -= (hours * SECS_PER_HOUR)
minutes = seconds / 60
seconds -= (minutes * 60)
usec = ('%.2f' % usec).lstrip('0')
@@ -127,18 +118,21 @@ def do_uuid(request):
return rsp(results)
def do_timings_uuid(request):
uuid = request.GET['uuid']
return rsp(get_timings_for_uuid(uuid))
def do_timings(request):
name = request.GET['name']
results = []
results.append([name, "Time"])
timings = models.Timing.objects.select_related().filter(name=name) \
.exclude(Q(start_raw=None) | Q(end_raw=None)) \
.order_by('diff_days', 'diff_seconds',
'diff_usecs')
.order_by('diff')
for t in timings:
seconds = seconds_from_timing(t)
results.append([t.lifecycle.instance, sec_to_time(seconds)])
results.append([t.lifecycle.instance, sec_to_time(t.diff)])
return rsp(results)

View File

@@ -4,18 +4,19 @@ from django.conf.urls.defaults import patterns, include, url
urlpatterns = patterns('',
url(r'^$', 'stacktach.views.welcome', name='welcome'),
url(r'stacky/deployments', 'stacktach.stacky_server.do_deployments'),
url(r'stacky/events', 'stacktach.stacky_server.do_events'),
url(r'stacky/hosts', 'stacktach.stacky_server.do_hosts'),
url(r'stacky/uuid', 'stacktach.stacky_server.do_uuid'),
url(r'stacky/timings', 'stacktach.stacky_server.do_timings'),
url(r'stacky/summary', 'stacktach.stacky_server.do_summary'),
url(r'stacky/request', 'stacktach.stacky_server.do_request'),
url(r'stacky/show/(?P<event_id>\d+)',
url(r'stacky/deployments/$', 'stacktach.stacky_server.do_deployments'),
url(r'stacky/events/$', 'stacktach.stacky_server.do_events'),
url(r'stacky/hosts/$', 'stacktach.stacky_server.do_hosts'),
url(r'stacky/uuid/$', 'stacktach.stacky_server.do_uuid'),
url(r'stacky/timings/$', 'stacktach.stacky_server.do_timings'),
url(r'stacky/timings/uuid$', 'stacktach.stacky_server.do_timings_uuid'),
url(r'stacky/summary/$', 'stacktach.stacky_server.do_summary'),
url(r'stacky/request/$', 'stacktach.stacky_server.do_request'),
url(r'stacky/show/(?P<event_id>\d+)/$',
'stacktach.stacky_server.do_show'),
url(r'stacky/watch/(?P<deployment_id>\d+)',
url(r'stacky/watch/(?P<deployment_id>\d+)/$',
'stacktach.stacky_server.do_watch'),
url(r'stacky/kpi', 'stacktach.stacky_server.do_kpi'),
url(r'stacky/kpi/$', 'stacktach.stacky_server.do_kpi'),
url(r'^(?P<deployment_id>\d+)/$', 'stacktach.views.home', name='home'),
url(r'^(?P<deployment_id>\d+)/details/(?P<column>\w+)/(?P<row_id>\d+)/$',

View File

@@ -142,15 +142,10 @@ def aggregate(raw):
else:
timing.end_raw = raw
timing.end_when = raw.when
end = dt.dt_from_decimal(timing.end_when)
# We could have missed start so watch out ...
if timing.start_when and end:
start = dt.dt_from_decimal(timing.start_when)
diff = end - start
timing.diff_days = diff.days
timing.diff_seconds = diff.seconds
timing.diff_usecs = diff.microseconds
if timing.start_when:
timing.diff = timing.end_when - timing.start_when
timing.save()