Merge "no more output elastic docs to stdout/console"
authorMorgan Richomme <morgan.richomme@orange.com>
Wed, 28 Sep 2016 07:42:30 +0000 (07:42 +0000)
committerGerrit Code Review <gerrit@172.30.200.206>
Wed, 28 Sep 2016 07:42:31 +0000 (07:42 +0000)
1  2 
utils/test/dashboard/dashboard/common/elastic_access.py
utils/test/dashboard/dashboard/mongo2elastic/main.py

@@@ -22,14 -22,9 +22,9 @@@ def delete_docs(url, creds=None, body=N
      return _request('DELETE', url, creds=creds, body=body)
  
  
- def publish_docs(docs, creds, to):
-     json_docs = json.dumps(docs)
-     if to == 'stdout':
-         print json_docs
-         return 200, None
-     else:
-         result = _post(to, creds=creds, body=json_docs)
-         return result.status, result.data
+ def publish_docs(url, creds=None, body=None):
+     result = _post(url, creds=creds, body=(json.dumps(body)))
+     return result.status, result.data
  
  
  def _get_docs_nr(url, creds=None, body=None):
@@@ -48,3 -43,25 +43,3 @@@ def get_docs(url, creds=None, body=None
      for hit in res_data['hits']['hits']:
          docs.append(hit[field])
      return docs
 -
 -
 -def get_elastic_docs_by_days(elastic_url, creds, days):
 -    if days == 0:
 -        body = '''{
 -            "query": {
 -                "match_all": {}
 -            }
 -        }'''
 -    elif days > 0:
 -        body = '''{{
 -            "query" : {{
 -                "range" : {{
 -                    "start_date" : {{
 -                        "gte" : "now-{}d"
 -                    }}
 -                }}
 -            }}
 -        }}'''.format(days)
 -    else:
 -        raise Exception('Update days must be non-negative')
 -    return get_docs(elastic_url, creds, body)
@@@ -38,12 -38,12 +38,12 @@@ tmp_docs_file = './mongo-{}.json'.forma
  
  class DocumentPublisher:
  
-     def __init__(self, doc, fmt, exist_docs, creds, to):
+     def __init__(self, doc, fmt, exist_docs, creds, elastic_url):
          self.doc = doc
          self.fmt = fmt
          self.creds = creds
          self.exist_docs = exist_docs
-         self.to = to
+         self.elastic_url = elastic_url
          self.is_formatted = True
  
      def format(self):
@@@ -64,7 -64,7 +64,7 @@@
              self._publish()
  
      def _publish(self):
-         status, data = elastic_access.publish_docs(self.doc, self.creds, self.to)
+         status, data = elastic_access.publish_docs(self.elastic_url, self.creds, self.doc)
          if status > 300:
              logger.error('Publish record[{}] failed, due to [{}]'
                           .format(self.doc, json.loads(data)['error']['reason']))
  
  class DocumentsPublisher:
  
-     def __init__(self, project, case, fmt, days, elastic_url, creds, to):
+     def __init__(self, project, case, fmt, days, elastic_url, creds):
          self.project = project
          self.case = case
          self.fmt = fmt
          self.days = days
          self.elastic_url = elastic_url
          self.creds = creds
-         self.to = to
          self.existed_docs = []
  
      def export(self):
              exit(-1)
  
      def get_existed_docs(self):
 -        self.existed_docs = elastic_access.get_elastic_docs_by_days(self.elastic_url, self.creds, self.days)
 +        if self.days == 0:
 +            body = '''{{
 +                        "query": {{
 +                            "bool": {{
 +                                "must": [
 +                                    {{ "match": {{ "project_name": "{}" }} }},
 +                                    {{ "match": {{ "case_name": "{}" }} }}
 +                                ]
 +                            }}
 +                        }}
 +                    }}'''.format(self.project, self.case)
 +        elif self.days > 0:
 +            body = '''{{
 +                       "query": {{
 +                           "bool": {{
 +                               "must": [
 +                                   {{ "match": {{ "project_name": "{}" }} }},
 +                                   {{ "match": {{ "case_name": "{}" }} }}
 +                               ],
 +                               "filter": {{
 +                                   "range": {{
 +                                       "start_date": {{ "gte": "now-{}d" }}
 +                                   }}
 +                               }}
 +                           }}
 +                       }}
 +                   }}'''.format(self.project, self.case, self.days)
 +        else:
 +            raise Exception('Update days must be non-negative')
 +        self.existed_docs = elastic_access.get_docs(self.elastic_url, self.creds, body)
          return self
  
      def publish(self):
                                        self.fmt,
                                        self.existed_docs,
                                        self.creds,
-                                       self.to).format().publish()
+                                       self.elastic_url).format().publish()
          finally:
              fdocs.close()
              self._remove()
  
  def main():
      base_elastic_url = urlparse.urljoin(CONF.elastic_url, '/test_results/mongo2elastic')
-     to = CONF.destination
      days = args.latest_days
      es_creds = CONF.elastic_creds
  
-     if to == 'elasticsearch':
-         to = base_elastic_url
      for project, case_dicts in testcases.testcases_yaml.items():
          for case_dict in case_dicts:
              case = case_dict.get('name')
                                 fmt,
                                 days,
                                 base_elastic_url,
-                                es_creds,
-                                to).export().get_existed_docs().publish()
+                                es_creds).export().get_existed_docs().publish()