From d9be39758ec298c963faa08ef73872b200f580fc Mon Sep 17 00:00:00 2001 From: Ildar Svetlov Date: Sat, 24 Jun 2017 19:13:32 +0400 Subject: [PATCH] Convert event metadata timestamps to ISO 8601 format for ES Change-Id: Ifdb74ae6c9b6ffaed164ed7e338f60165df0a15e --- .../ceilometer_fixes/impl_elasticsearch.py | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/deployment_scripts/puppet/modules/telemetry/files/ceilometer_fixes/impl_elasticsearch.py b/deployment_scripts/puppet/modules/telemetry/files/ceilometer_fixes/impl_elasticsearch.py index fea69cc..1557622 100644 --- a/deployment_scripts/puppet/modules/telemetry/files/ceilometer_fixes/impl_elasticsearch.py +++ b/deployment_scripts/puppet/modules/telemetry/files/ceilometer_fixes/impl_elasticsearch.py @@ -84,10 +84,31 @@ class Connection(base.Connection): iclient.put_template(name='enable_timestamp', body=ts_template) def record_events(self, events): - + datetime_trait_fields = [ + 'audit_period_beginning', + 'audit_period_ending', + 'deleted_at', + 'created_at', + 'launched_at', + 'modify_at' + ] def _build_bulk_index(event_list): for ev in event_list: - traits = {t.name: t.value for t in ev.traits} + traits = {} + for t in ev.traits: + name = t.name + value = t.value + if name in datetime_trait_fields: + try: + ts = timeutils.parse_isotime(value) + ts = timeutils.normalize_time(ts) + value = timeutils.strtime(ts) + except ValueError: + LOG.exception( + _LE('Could not parse timestamp [%s] from [%s] traits field' % (value, name)) + ) + value = t.value + traits[name] = value yield {'_op_type': 'create', '_index': '%s_%s' % (self.index_name, ev.generated.date().isoformat()),