timings table now uses Decimal diff as well
This commit is contained in:
@@ -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)
|
||||
|
@@ -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)
|
||||
|
||||
|
||||
|
@@ -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+)/$',
|
||||
|
@@ -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()
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user