refactor elastic_access.py 73/22473/3
authorSerenaFeng <feng.xiaowei@zte.com.cn>
Tue, 27 Sep 2016 02:37:14 +0000 (10:37 +0800)
committerJose Lausuch <jose.lausuch@ericsson.com>
Tue, 27 Sep 2016 09:51:18 +0000 (09:51 +0000)
JIRA: FUNCTEST-495

Change-Id: I639c9b4838ba026cf48c01081810f663467163a8
Signed-off-by: SerenaFeng <feng.xiaowei@zte.com.cn>
utils/test/dashboard/dashboard/common/elastic_access.py
utils/test/dashboard/dashboard/elastic2kibana/main.py
utils/test/dashboard/dashboard/mongo2elastic/main.py
utils/test/dashboard/kibana_cleanup.py

index e90a17f..b454e9a 100644 (file)
@@ -5,41 +5,49 @@ import urllib3
 http = urllib3.PoolManager()
 
 
-def delete_request(url, creds, body=None):
+def _request(method, url, creds=None, body=None):
     headers = urllib3.make_headers(basic_auth=creds)
-    http.request('DELETE', url, headers=headers, body=body)
+    return http.request(method, url, headers=headers, body=body)
 
 
-def publish_json(json_ojb, creds, to):
-    json_dump = json.dumps(json_ojb)
+def _post(url, creds=None, body=None):
+    return _request('POST', url, creds=creds, body=body)
+
+
+def _get(url, creds=None, body=None):
+    return json.loads(_request('GET', url, creds=creds, body=body).data)
+
+
+def delete_docs(url, creds=None, body=None):
+    return _request('DELETE', url, creds=creds, body=body)
+
+
+def publish_docs(docs, creds, to):
+    json_docs = json.dumps(docs)
     if to == 'stdout':
-        print json_dump
+        print json_docs
         return 200, None
     else:
-        headers = urllib3.make_headers(basic_auth=creds)
-        result = http.request('POST', to, headers=headers, body=json_dump)
+        result = _post(to, creds=creds, body=json_docs)
         return result.status, result.data
 
 
-def _get_nr_of_hits(elastic_json):
-    return elastic_json['hits']['total']
+def _get_docs_nr(url, creds=None, body=None):
+    res_data = _get('{}/_search?size=0'.format(url), creds=creds, body=body)
+    print type(res_data), res_data
+    return res_data['hits']['total']
 
 
-def get_elastic_docs(elastic_url, creds, body=None, field = '_source'):
-
-    # 1. get the number of results
-    headers = urllib3.make_headers(basic_auth=creds)
-    elastic_json = json.loads(http.request('GET', elastic_url + '/_search?size=0', headers=headers, body=body).data)
-    print elastic_json
-    nr_of_hits = _get_nr_of_hits(elastic_json)
+def get_docs(url, creds=None, body=None, field='_source'):
 
-    # 2. get all results
-    elastic_json = json.loads(http.request('GET', elastic_url + '/_search?size={}'.format(nr_of_hits), headers=headers, body=body).data)
+    docs_nr = _get_docs_nr(url, creds=creds, body=body)
+    res_data = _get('{}/_search?size={}'.format(url, docs_nr),
+                    creds=creds, body=body)
 
-    elastic_docs = []
-    for hit in elastic_json['hits']['hits']:
-        elastic_docs.append(hit[field])
-    return elastic_docs
+    docs = []
+    for hit in res_data['hits']['hits']:
+        docs.append(hit[field])
+    return docs
 
 
 def get_elastic_docs_by_days(elastic_url, creds, days):
@@ -61,4 +69,4 @@ def get_elastic_docs_by_days(elastic_url, creds, days):
         }}'''.format(days)
     else:
         raise Exception('Update days must be non-negative')
-    return get_elastic_docs(elastic_url, creds, body)
+    return get_docs(elastic_url, creds, body)
index 37ce03e..38a49b6 100644 (file)
@@ -5,7 +5,8 @@ import urlparse
 import argparse
 from jinja2 import PackageLoader, Environment
 
-from common import logger_utils, elastic_access
+from common import elastic_access
+from common import logger_utils
 from conf import testcases
 from conf.config import APIConfig
 
@@ -59,7 +60,7 @@ class KibanaDashboard(dict):
             url = urlparse.urljoin(base_elastic_url, '/.kibana/visualization/{}'.format(visualization.id))
             logger.debug("publishing visualization '{}'".format(url))
             # logger.error("_publish_visualization: %s" % visualization)
-            elastic_access.publish_json(visualization, es_creds, url)
+            elastic_access.publish_docs(visualization, es_creds, url)
 
     def _construct_panels(self):
         size_x = 6
@@ -137,7 +138,7 @@ class KibanaDashboard(dict):
     def _publish(self):
         url = urlparse.urljoin(base_elastic_url, '/.kibana/dashboard/{}'.format(self.id))
         logger.debug("publishing dashboard '{}'".format(url))
-        elastic_access.publish_json(self, es_creds, url)
+        elastic_access.publish_docs(self, es_creds, url)
 
     def publish(self):
         self._publish_visualizations()
@@ -251,7 +252,7 @@ def _get_pods_and_scenarios(project_name, case_name, installer):
         }
     })
 
-    elastic_data = elastic_access.get_elastic_docs(urlparse.urljoin(base_elastic_url, '/test_results/mongo2elastic'),
+    elastic_data = elastic_access.get_docs(urlparse.urljoin(base_elastic_url, '/test_results/mongo2elastic'),
                                                    es_creds, query_json)
 
     pods_and_scenarios = {}
index 25b5320..82b01e4 100644 (file)
@@ -64,7 +64,7 @@ class DocumentPublisher:
             self._publish()
 
     def _publish(self):
-        status, data = elastic_access.publish_json(self.doc, self.creds, self.to)
+        status, data = elastic_access.publish_docs(self.doc, self.creds, self.to)
         if status > 300:
             logger.error('Publish record[{}] failed, due to [{}]'
                          .format(self.doc, json.loads(data)['error']['reason']))
index 9ce4994..ee01900 100644 (file)
@@ -14,10 +14,10 @@ logger.addHandler(file_handler)
 
 
 def delete_all(url, es_creds):
-    ids = elastic_access.get_elastic_docs(url, es_creds, body=None, field='_id')
+    ids = elastic_access.get_docs(url, es_creds, body=None, field='_id')
     for id in ids:
         del_url = '/'.join([url, id])
-        elastic_access.delete_request(del_url, es_creds)
+        elastic_access.delete_docs(del_url, es_creds)
 
 
 if __name__ == '__main__':