def stacky_watch(request, deployments=None): service = request.GET.get('service', 'nova') if request.method == 'DELETE': start = datetime.datetime.now() - datetime.timedelta(minutes=30) for name in deployments: request.session['%s-last' % name] = time.mktime(start.timetuple()) if request.method == 'GET': events = [] deps = models.Deployment.objects.filter(name__in=deployments) start = datetime.datetime.now() - datetime.timedelta(minutes=30) for dep in deps: since = request.session.get('%s-last' % dep.name, time.mktime(start.timetuple())) url = "%s/stacky/watch/0/" params = { 'since': since, 'service': service } resp = requests.get(url % dep.url, params=params) dep_events = [] for x in _json(resp)[1]: event = [dep.name] event.extend(x) dep_events.append(event) events.extend(dep_events) request.session['%s-last' % dep.name] = _json(resp)[-1] events.sort(reverse=True, key=lambda x: util.timestamp_to_dt("%s %s" % (x[3], x[4]))) template = loader.get_template('api/stacky_watch.html') context_dict = { 'service': service, 'events': events } context = RequestContext(request, context_dict) return template.render(context)
def _search_requestid(deployments, service, requestid, limit): events = [] deps = models.Deployment.objects.filter(name__in=deployments) for dep in deps: url = "%s/stacky/request/" params = { 'request_id': requestid, 'service': service } if limit: params['limit'] = limit resp = requests.get(url % dep.url, params=params) dep_events = [] for x in _json(resp)[1:]: event = [dep.name] event.extend(x) dep_events.append(event) events.extend(dep_events) events.sort(reverse=True, key=lambda x: util.timestamp_to_dt(x[3])) return events