summaryrefslogtreecommitdiffstats
path: root/dashboard/dashboard/elastic2kibana/dashboard_assembler.py
diff options
context:
space:
mode:
authorSerenaFeng <feng.xiaowei@zte.com.cn>2016-10-08 16:45:49 +0800
committerSerenaFeng <feng.xiaowei@zte.com.cn>2016-10-10 10:40:00 +0800
commit60cd25286de20e218533c6da6e3dbe29f8644798 (patch)
tree40aa95987fbd68bf810f75e47f7ba352763efe99 /dashboard/dashboard/elastic2kibana/dashboard_assembler.py
parentbfdcb5a3562ef74eb64e574eff8ae4dbeb5787a0 (diff)
separate visualization building from dashboard building
JIRA: RELENG-155 Change-Id: I19355898d5dc5ef73fcfe4ebaf4604c4bf1e8f10 Signed-off-by: SerenaFeng <feng.xiaowei@zte.com.cn>
Diffstat (limited to 'dashboard/dashboard/elastic2kibana/dashboard_assembler.py')
-rw-r--r--dashboard/dashboard/elastic2kibana/dashboard_assembler.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/dashboard/dashboard/elastic2kibana/dashboard_assembler.py b/dashboard/dashboard/elastic2kibana/dashboard_assembler.py
new file mode 100644
index 0000000..c1e9dfb
--- /dev/null
+++ b/dashboard/dashboard/elastic2kibana/dashboard_assembler.py
@@ -0,0 +1,59 @@
+import json
+
+import utility
+from common import elastic_access
+
+
+class DashboardAssembler(object):
+ def __init__(self,
+ project,
+ case,
+ family,
+ installer,
+ pod,
+ visAssemblers,
+ es_url,
+ es_creds):
+ super(DashboardAssembler, self).__init__()
+ self.project = project
+ self.case = case
+ self.test_family = family
+ self.installer = installer
+ self.pod = pod
+ self.visAssemblers = visAssemblers
+ self.es_url = es_url
+ self.es_creds = es_creds
+ self._assemble()
+ self._publish()
+
+ def _assemble(self):
+ db = {
+ "query": {
+ "project_name": self.project,
+ "case_name": self.case,
+ "installer": self.installer,
+ "metric": self.visAssemblers[0].vis_state_title,
+ "pod": self.pod
+ },
+ "test_family": self.test_family,
+ "ids": [visualization.id for visualization in self.visAssemblers]
+ }
+ template = utility.env.get_template('dashboard.json')
+ self.dashboard = json.loads(template.render(db=db))
+ utility.dumps(self.dashboard,
+ ['description',
+ 'uiStateJSON',
+ 'panelsJSON',
+ 'optionsJSON'])
+ utility.dumps_2depth(self.dashboard,
+ 'kibanaSavedObjectMeta',
+ 'searchSourceJSON')
+ self.id = self.dashboard['title'].replace(' ', '-').replace('/', '-')
+ return self
+
+ def _publish(self):
+ elastic_access.publish_kibana(self.es_url,
+ self.es_creds,
+ 'dashboard',
+ self.id,
+ self.dashboard)