)]}'
{"ceilometer/event/trait_plugins.py":[{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"5927601d5161496b2b56717da09f33cddfdd70fa","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"class TimedeltaPluginMissedFields(Exception):"},{"line_number":195,"context_line":"    def __init__(self):"},{"line_number":196,"context_line":"        msg \u003d (\u0027It is required to use two timetamp field with Timedelta \u0027"},{"line_number":197,"context_line":"               \u0027plugin. In case two fields are correctly defined, at least \u0027"},{"line_number":198,"context_line":"               \u0027one of them were not successfully matched from notification.\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_bea4b54a","line":195,"updated":"2016-03-04 09:35:17.000000000","message":"field \u003d\u003e fields. The second sentence is not clear.","commit_id":"5fc6634f71a99227d1baa64f1266d5f183293a24"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6c3c53a117d8ca1176ac06c5fa4567daf8bc9072","unresolved":false,"context_lines":[{"line_number":194,"context_line":"class TimedeltaPluginMissedFields(Exception):"},{"line_number":195,"context_line":"    def __init__(self):"},{"line_number":196,"context_line":"        msg \u003d (\u0027It is required to use two timetamp field with Timedelta \u0027"},{"line_number":197,"context_line":"               \u0027plugin. In case two fields are correctly defined, at least \u0027"},{"line_number":198,"context_line":"               \u0027one of them were not successfully matched from notification.\u0027)"},{"line_number":199,"context_line":"        super(TimedeltaPluginMissedFields, self).__init__(msg)"},{"line_number":200,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_29b89fc7","line":197,"updated":"2016-03-03 15:00:26.000000000","message":"this second failure reason should be another Exception","commit_id":"5fc6634f71a99227d1baa64f1266d5f183293a24"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"bede1700136fccf3c0fe7800b0b638ebcfef23c3","unresolved":false,"context_lines":[{"line_number":194,"context_line":"class TimedeltaPluginMissedFields(Exception):"},{"line_number":195,"context_line":"    def __init__(self):"},{"line_number":196,"context_line":"        msg \u003d (\u0027It is required to use two timetamp field with Timedelta \u0027"},{"line_number":197,"context_line":"               \u0027plugin. In case two fields are correctly defined, at least \u0027"},{"line_number":198,"context_line":"               \u0027one of them were not successfully matched from notification.\u0027)"},{"line_number":199,"context_line":"        super(TimedeltaPluginMissedFields, self).__init__(msg)"},{"line_number":200,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_d94a7b54","line":197,"in_reply_to":"7af24918_29b89fc7","updated":"2016-03-04 09:43:00.000000000","message":"I remove second failure reason because if it happened plugin receives match_list with missed fields","commit_id":"5fc6634f71a99227d1baa64f1266d5f183293a24"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6c3c53a117d8ca1176ac06c5fa4567daf8bc9072","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    # TODO(idegtiarov): refactor code to have meter_plugins separate from"},{"line_number":204,"context_line":"    # trait_plugins"},{"line_number":205,"context_line":"    def __init__(self):"},{"line_number":206,"context_line":"        \"\"\"Setup timedelta meter volume of two timestamps fields."},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        Example::"},{"line_number":209,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_c99adb6d","line":206,"updated":"2016-03-03 15:00:26.000000000","message":"put this as class docstring","commit_id":"5fc6634f71a99227d1baa64f1266d5f183293a24"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"bede1700136fccf3c0fe7800b0b638ebcfef23c3","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    # TODO(idegtiarov): refactor code to have meter_plugins separate from"},{"line_number":204,"context_line":"    # trait_plugins"},{"line_number":205,"context_line":"    def __init__(self):"},{"line_number":206,"context_line":"        \"\"\"Setup timedelta meter volume of two timestamps fields."},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        Example::"},{"line_number":209,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_d961dbd4","line":206,"in_reply_to":"7af24918_c99adb6d","updated":"2016-03-04 09:43:00.000000000","message":"Done","commit_id":"5fc6634f71a99227d1baa64f1266d5f183293a24"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6c3c53a117d8ca1176ac06c5fa4567daf8bc9072","unresolved":false,"context_lines":[{"line_number":212,"context_line":"            value is been created as total seconds between \u0027launched_at\u0027 and"},{"line_number":213,"context_line":"            \u0027created_at\u0027 timestamps."},{"line_number":214,"context_line":"        \"\"\""},{"line_number":215,"context_line":"        super(TimedeltaPlugin, self).__init__()"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    def trait_value(self, match_list):"},{"line_number":218,"context_line":"        if len(match_list) !\u003d 2:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_49aecb98","line":215,"updated":"2016-03-03 15:00:26.000000000","message":"this init doesn\u0027t do anything so isn\u0027t necessary","commit_id":"5fc6634f71a99227d1baa64f1266d5f183293a24"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"bede1700136fccf3c0fe7800b0b638ebcfef23c3","unresolved":false,"context_lines":[{"line_number":212,"context_line":"            value is been created as total seconds between \u0027launched_at\u0027 and"},{"line_number":213,"context_line":"            \u0027created_at\u0027 timestamps."},{"line_number":214,"context_line":"        \"\"\""},{"line_number":215,"context_line":"        super(TimedeltaPlugin, self).__init__()"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    def trait_value(self, match_list):"},{"line_number":218,"context_line":"        if len(match_list) !\u003d 2:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_f9a017f6","line":215,"in_reply_to":"7af24918_49aecb98","updated":"2016-03-04 09:43:00.000000000","message":"Done","commit_id":"5fc6634f71a99227d1baa64f1266d5f183293a24"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6c3c53a117d8ca1176ac06c5fa4567daf8bc9072","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        if len(match_list) !\u003d 2:"},{"line_number":219,"context_line":"            LOG.warning(_LW(\u0027timedelta plugin is required two timestamp fields\u0027"},{"line_number":220,"context_line":"                            \u0027 to create timedelta value.\u0027))"},{"line_number":221,"context_line":"            raise TimedeltaPluginMissedFields()"},{"line_number":222,"context_line":"        start, end \u003d match_list"},{"line_number":223,"context_line":"        try:"},{"line_number":224,"context_line":"            start_time \u003d timeutils.parse_isotime(start[1])"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_6924675f","line":221,"updated":"2016-03-03 15:00:26.000000000","message":"this is strange. that we log warning and also throw an error.\n\njust LOG it?","commit_id":"5fc6634f71a99227d1baa64f1266d5f183293a24"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"bede1700136fccf3c0fe7800b0b638ebcfef23c3","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        if len(match_list) !\u003d 2:"},{"line_number":219,"context_line":"            LOG.warning(_LW(\u0027timedelta plugin is required two timestamp fields\u0027"},{"line_number":220,"context_line":"                            \u0027 to create timedelta value.\u0027))"},{"line_number":221,"context_line":"            raise TimedeltaPluginMissedFields()"},{"line_number":222,"context_line":"        start, end \u003d match_list"},{"line_number":223,"context_line":"        try:"},{"line_number":224,"context_line":"            start_time \u003d timeutils.parse_isotime(start[1])"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_395a7ff2","line":221,"in_reply_to":"7af24918_6924675f","updated":"2016-03-04 09:43:00.000000000","message":"I was trying to avoid metrics with empty volumes but you right we do not need to raise Exception here","commit_id":"5fc6634f71a99227d1baa64f1266d5f183293a24"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6c3c53a117d8ca1176ac06c5fa4567daf8bc9072","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                            \u0027%(err)s\u0027) %"},{"line_number":230,"context_line":"                        dict(start\u003dstart[0], end\u003dend[0], err\u003derr)"},{"line_number":231,"context_line":"                        )"},{"line_number":232,"context_line":"            raise"},{"line_number":233,"context_line":"        return abs((end_time - start_time).total_seconds())"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_09e4c3de","line":232,"updated":"2016-03-03 15:00:26.000000000","message":"should we raise? is somethign going to handle it later?","commit_id":"5fc6634f71a99227d1baa64f1266d5f183293a24"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"bede1700136fccf3c0fe7800b0b638ebcfef23c3","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                            \u0027%(err)s\u0027) %"},{"line_number":230,"context_line":"                        dict(start\u003dstart[0], end\u003dend[0], err\u003derr)"},{"line_number":231,"context_line":"                        )"},{"line_number":232,"context_line":"            raise"},{"line_number":233,"context_line":"        return abs((end_time - start_time).total_seconds())"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_b9668fb8","line":232,"in_reply_to":"7af24918_09e4c3de","updated":"2016-03-04 09:43:00.000000000","message":"Done","commit_id":"5fc6634f71a99227d1baa64f1266d5f183293a24"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"5927601d5161496b2b56717da09f33cddfdd70fa","unresolved":false,"context_lines":[{"line_number":230,"context_line":"                        dict(start\u003dstart[0], end\u003dend[0], err\u003derr)"},{"line_number":231,"context_line":"                        )"},{"line_number":232,"context_line":"            raise"},{"line_number":233,"context_line":"        return abs((end_time - start_time).total_seconds())"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_d91c3b6c","line":233,"updated":"2016-03-04 09:35:17.000000000","message":"Not sure we need \u0027abs\u0027 here. If End_time less that Start_time, it means something went wrong","commit_id":"5fc6634f71a99227d1baa64f1266d5f183293a24"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"bede1700136fccf3c0fe7800b0b638ebcfef23c3","unresolved":false,"context_lines":[{"line_number":230,"context_line":"                        dict(start\u003dstart[0], end\u003dend[0], err\u003derr)"},{"line_number":231,"context_line":"                        )"},{"line_number":232,"context_line":"            raise"},{"line_number":233,"context_line":"        return abs((end_time - start_time).total_seconds())"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_f9949737","line":233,"in_reply_to":"7af24918_d91c3b6c","updated":"2016-03-04 09:43:00.000000000","message":"my point is that you could set timestamp field in any order in definition file and get positive value. We calculate timedelta by fields from one notification and it seems nothing could go wrong.","commit_id":"5fc6634f71a99227d1baa64f1266d5f183293a24"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"145c49f0058a5efc8f1c2e7c6a05c53a385c7334","unresolved":false,"context_lines":[{"line_number":230,"context_line":"                        dict(start\u003dstart[0], end\u003dend[0], err\u003derr)"},{"line_number":231,"context_line":"                        )"},{"line_number":232,"context_line":"            raise"},{"line_number":233,"context_line":"        return abs((end_time - start_time).total_seconds())"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_5f147ae7","line":233,"in_reply_to":"7af24918_f9949737","updated":"2016-03-04 15:15:36.000000000","message":"agreed. abs is cleaner. we just want to delta regardless of ordering","commit_id":"5fc6634f71a99227d1baa64f1266d5f183293a24"}]}
