blob: 5b3c74bd12ba8a79971d2e6ec3db1f8cf444a7e0 [file] [log] [blame]
#!/usr/bin/env python3
__copyright__ = """
/*
* Copyright (c) 2020, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
*/
"""
""" data_converter.py:
Data converter class. This class is aimed at converting the received
data in the format which InfluxDB understands.
"""
import json
import constants
class DataConverter:
@staticmethod
def convert_tfm_imagesize_data(data):
# Transform keys names
data['metadata']['DataProducer'] = data['metadata'].pop(
'data_producer')
data['metadata']['git_info']['CommitTitle'] = data['metadata']['git_info'].pop(
'commit_title')
data['metadata']['git_info']['CommitID'] = data['metadata']['git_info'].pop(
'commit_id')
data['metadata']['git_info']['GerritID'] = data['metadata']['git_info'].pop(
'gerrit_id')
data['metadata']['git_info']['CommitURL'] = data['metadata']['git_info'].pop(
'commit_url')
data['metadata']['git_info']['Branch'] = data['metadata']['git_info'].pop(
'branch')
data['metadata']['build_info']['BuildType'] = data['metadata']['build_info'].pop(
'build_type')
data['metadata']['build_info']['CmakeConfig'] = data['metadata']['build_info'].pop(
'cmake_config')
data['metadata']['build_info']['Compiler'] = data['metadata']['build_info'].pop(
'compiler')
data['metadata']['build_info']['Target'] = data['metadata']['build_info'].pop(
'target')
ret = {}
ret['tags'] = {}
ret['fields'] = {}
ret['measurement'] = 'TFM_ImageSize_Statistics'
for file_info in data['data']:
ret['fields'][file_info['file'].rsplit(
'.', 1)[0] + '_b'] = file_info['bss']
ret['fields'][file_info['file'].rsplit(
'.', 1)[0] + '_d'] = file_info['data']
ret['fields'][file_info['file'].rsplit(
'.', 1)[0] + '_t'] = file_info['text']
ret['tags']['DataProducer'] = str(data['metadata']['DataProducer'])
ret['time'] = str(data['metadata']['git_info']['commit_time'])
for key in data['metadata']['git_info']:
if key == 'commit_time':
continue
ret['tags'][key] = str(data['metadata']['git_info'][key])
for key in data['metadata']['build_info']:
ret['tags'][key] = str(data['metadata']['build_info'][key])
print(ret)
return [ret]
@staticmethod
def convert_data(data):
"""
Convert data to a dictionary containing measurement
name, fields and tags. It is required by InfluxDB.
:param data: data to be converted to InfluxDB format
"""
if data['metadata']['metrics'] == 'tfm_imagesize':
ret = DataConverter.convert_tfm_imagesize_data(data)
else:
ret = data['data']
return ret