Merge "Make function for logstash query encoding"

This commit is contained in:
Jenkins 2014-10-27 20:37:22 +00:00 committed by Gerrit Code Review
commit d487bafc98
3 changed files with 27 additions and 16 deletions

View File

@ -15,7 +15,6 @@
# under the License.
import argparse
import base64
from datetime import datetime
import json
import os
@ -26,7 +25,8 @@ import requests
import elastic_recheck.elasticRecheck as er
from elastic_recheck import log as logging
from elastic_recheck import results as er_results
import elastic_recheck.query_builder as qb
import elastic_recheck.results as er_results
STEP = 3600000
@ -124,12 +124,8 @@ def main():
continue
if args.verbose:
LOG.debug("Starting query for bug %s" % query['bug'])
urlq = dict(search=query['query'],
fields=[],
offset=0,
timeframe=str(timeframe),
graphmode="count")
logstash_query = base64.urlsafe_b64encode(json.dumps(urlq))
logstash_query = qb.encode_logstash_query(query['query'],
timeframe=timeframe)
bug_data = get_launchpad_bug(query['bug'])
bug = dict(number=query['bug'],
query=query['query'],

View File

@ -15,10 +15,8 @@
# under the License.
import argparse
import base64
import collections
import datetime
import json
import operator
import re
@ -26,6 +24,7 @@ import dateutil.parser as dp
import jinja2
import elastic_recheck.elasticRecheck as er
import elastic_recheck.query_builder as qb
import elastic_recheck.results as er_results
@ -124,18 +123,13 @@ def classifying_rate(fails, data, engine, classifier):
key=lambda v: v['timestamp'], reverse=True)
# Convert timestamp into string
for url in bad_job_urls[job]:
urlq = {}
url['timestamp'] = url['timestamp'].strftime(
"%Y-%m-%dT%H:%M")
# setup crm114 query for build_uuid
query = ('build_uuid: "%s" '
'AND error_pr:["-1000.0" TO "-10.0"] '
% url['build_uuid'])
urlq = dict(search=query,
fields=[],
offset=0,
timeframe=str(864000))
logstash_query = base64.urlsafe_b64encode(json.dumps(urlq))
logstash_query = qb.encode_logstash_query(query)
logstash_url = 'http://logstash.openstack.org/#%s' % logstash_query
results = classifier.hits_by_query(query, size=1)
if results:

View File

@ -18,6 +18,9 @@ A set of utility methods to build the kinds of queries that are needed
by elastic recheck to talk with elastic search.
"""
import base64
import json
def generic(raw_query, facet=None):
"""Base query builder
@ -118,3 +121,21 @@ def most_recent_event():
'AND (build_queue:gate OR build_queue:check) '
'AND NOT tags:_grokparsefailure '
'AND NOT message:"%{logmessage}" ')
def encode_logstash_query(query, timeframe=864000):
"""Utility function for encoding logstash queries.
This is used when generating url's for links in
report pages.
Input is a string representing the logstash query
and an optional timeframe argument.
"""
urlq = dict(search=query,
fields=[],
offset=0,
timeframe=str(timeframe),
graphmode="count")
return base64.urlsafe_b64encode(json.dumps(urlq))