diff options
author | SerenaFeng <feng.xiaowei@zte.com.cn> | 2016-10-08 16:45:49 +0800 |
---|---|---|
committer | SerenaFeng <feng.xiaowei@zte.com.cn> | 2016-10-10 10:40:00 +0800 |
commit | 60cd25286de20e218533c6da6e3dbe29f8644798 (patch) | |
tree | 40aa95987fbd68bf810f75e47f7ba352763efe99 /dashboard/dashboard/elastic2kibana/dashboard_assembler.py | |
parent | bfdcb5a3562ef74eb64e574eff8ae4dbeb5787a0 (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.py | 59 |
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) |