)]}'
{"vitrage/correlation_engine/__init__.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"4f830d581a431a52ad870f391ed8c496874c118f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 - Alcatel-Lucent"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_829ac061","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"updated":"2017-02-13 15:21:12.000000000","message":"2017","commit_id":"9f20f2eb398a934fdd69d29e3208e5d81f259a9a"}],"vitrage/correlation_engine/accumulative_data_manager.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"4f830d581a431a52ad870f391ed8c496874c118f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 - Nokia"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_c2a4b8a7","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"updated":"2017-02-13 15:21:12.000000000","message":"2017","commit_id":"9f20f2eb398a934fdd69d29e3208e5d81f259a9a"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"4f830d581a431a52ad870f391ed8c496874c118f","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        # alarm_id should be a tupple"},{"line_number":32,"context_line":"        # alarm_id should be a tupple"},{"line_number":33,"context_line":"        if alarm_id in self.active_alarms_start_times:"},{"line_number":34,"context_line":"            LOG.error(\"alarm {} started again at {}\"."},{"line_number":35,"context_line":"                      format(alarm_id, timestamp))"},{"line_number":36,"context_line":"            return"},{"line_number":37,"context_line":"        self.active_alarms_start_times[alarm_id] \u003d timestamp"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_62e14cd0","line":35,"range":{"start_line":34,"start_character":12,"end_line":35,"end_character":50},"updated":"2017-02-13 15:21:12.000000000","message":"I think you can use %s and parameters its more efficient","commit_id":"9f20f2eb398a934fdd69d29e3208e5d81f259a9a"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"4f830d581a431a52ad870f391ed8c496874c118f","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                                inactive_end_time,"},{"line_number":55,"context_line":"                                self.active_alarms_start_times.items())"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def get_alarm_ids(self):"},{"line_number":58,"context_line":"        alarms \u003d []"},{"line_number":59,"context_line":"        for alarm_id in self.alarms_activity_durations:"},{"line_number":60,"context_line":"            alarms.append(alarm_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_e2f45c88","line":57,"range":{"start_line":57,"start_character":8,"end_line":57,"end_character":21},"updated":"2017-02-13 15:21:12.000000000","message":"you can use @property here","commit_id":"9f20f2eb398a934fdd69d29e3208e5d81f259a9a"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"4f830d581a431a52ad870f391ed8c496874c118f","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def flush_accumulations(self):"},{"line_number":86,"context_line":"        now \u003d datetime.datetime.now()"},{"line_number":87,"context_line":"        active_alarms \u003d self.active_alarms_start_times.keys()"},{"line_number":88,"context_line":"        for active_alarm in active_alarms:"},{"line_number":89,"context_line":"            self.append_inactive(active_alarm, now)"},{"line_number":90,"context_line":"        for flushed_active_alarm in active_alarms:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_a210a4a9","line":87,"range":{"start_line":87,"start_character":8,"end_line":87,"end_character":61},"updated":"2017-02-13 15:21:12.000000000","message":"the default for iterates on keys","commit_id":"9f20f2eb398a934fdd69d29e3208e5d81f259a9a"}],"vitrage/correlation_engine/alarm_mapper.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"4f830d581a431a52ad870f391ed8c496874c118f","unresolved":false,"context_lines":[{"line_number":18,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class AlarmMapper(object):"},{"line_number":22,"context_line":"    STATE \u003d \u0027state\u0027"},{"line_number":23,"context_line":"    ACTIVE \u003d \"Active\""},{"line_number":24,"context_line":"    INACTIVE \u003d \"Inactive\""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_82a00045","line":21,"range":{"start_line":21,"start_character":6,"end_line":21,"end_character":17},"updated":"2017-02-13 15:21:12.000000000","message":"do you realy need a class here","commit_id":"9f20f2eb398a934fdd69d29e3208e5d81f259a9a"}],"vitrage/correlation_engine/alarms_file_transformer.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"4f830d581a431a52ad870f391ed8c496874c118f","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                else:"},{"line_number":45,"context_line":"                    self.alarms.append(jline)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def get_alarms(self):"},{"line_number":48,"context_line":"        return self.alarms"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_c27838c7","line":47,"range":{"start_line":47,"start_character":8,"end_line":47,"end_character":18},"updated":"2017-02-13 15:21:12.000000000","message":"use @property","commit_id":"9f20f2eb398a934fdd69d29e3208e5d81f259a9a"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"4f830d581a431a52ad870f391ed8c496874c118f","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    alarms \u003d []"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def __init__(self, file_path):"},{"line_number":55,"context_line":"        alarms \u003d []"},{"line_number":56,"context_line":"        with open(file_path, \u0027r\u0027) as f:"},{"line_number":57,"context_line":"            for line in f:"},{"line_number":58,"context_line":"                jline \u003d \\"},{"line_number":59,"context_line":"                    json.loads(line.replace(\"\\\"\", \u0027\\\\\"\u0027).replace(\"\\\u0027\", \u0027\"\u0027))"},{"line_number":60,"context_line":"                # push active alarm"},{"line_number":61,"context_line":"                transformed_line \u003d {}"},{"line_number":62,"context_line":"                transformed_line[AlarmMapper.ALARM_TYPE] \u003d jline[\u0027alertType\u0027]"},{"line_number":63,"context_line":"                transformed_line[AlarmMapper.STATE] \u003d AlarmMapper.ACTIVE"},{"line_number":64,"context_line":"                transformed_line[AlarmMapper.RESOURCE_TYPE] \u003d \\"},{"line_number":65,"context_line":"                    jline[\u0027resourceType\u0027]"},{"line_number":66,"context_line":"                transformed_line[AlarmMapper.RESOURCE_ID] \u003d jline[\u0027resourceId\u0027]"},{"line_number":67,"context_line":"                transformed_line[AlarmMapper.STATE_CHANGE_TIMESTAMP] \u003d \\"},{"line_number":68,"context_line":"                    jline[\u0027activeTimestamp\u0027]"},{"line_number":69,"context_line":"                if not jline[\u0027resourceId\u0027] \\"},{"line_number":70,"context_line":"                        or not jline[\u0027alertType\u0027] \\"},{"line_number":71,"context_line":"                        or not jline[\u0027resourceType\u0027] \\"},{"line_number":72,"context_line":"                        or not jline[\u0027activeTimestamp\u0027]:"},{"line_number":73,"context_line":"                    LOG.error(\"missing parameters for \" +"},{"line_number":74,"context_line":"                              str(transformed_line))"},{"line_number":75,"context_line":"                else:"},{"line_number":76,"context_line":"                    alarms.append(transformed_line)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"                # push inactive portion of alarm,"},{"line_number":79,"context_line":"                # since in that case the source contains both active \u0026 inactive"},{"line_number":80,"context_line":"                transformed_line \u003d {}"},{"line_number":81,"context_line":"                transformed_line[AlarmMapper.ALARM_TYPE] \u003d \\"},{"line_number":82,"context_line":"                    jline[\u0027alertType\u0027]"},{"line_number":83,"context_line":"                transformed_line[AlarmMapper.STATE] \u003d AlarmMapper.INACTIVE"},{"line_number":84,"context_line":"                transformed_line[AlarmMapper.RESOURCE_TYPE] \u003d \\"},{"line_number":85,"context_line":"                    jline[\u0027resourceType\u0027]"},{"line_number":86,"context_line":"                transformed_line[AlarmMapper.RESOURCE_ID] \u003d \\"},{"line_number":87,"context_line":"                    jline[\u0027resourceId\u0027]"},{"line_number":88,"context_line":"                if jline[\u0027state\u0027] !\u003d \"ACTIVE\":"},{"line_number":89,"context_line":"                    transformed_line[AlarmMapper.STATE_CHANGE_TIMESTAMP] \u003d \\"},{"line_number":90,"context_line":"                        jline[\u0027inactiveTimestamp\u0027]"},{"line_number":91,"context_line":"                else:"},{"line_number":92,"context_line":"                    transformed_line[AlarmMapper.STATE_CHANGE_TIMESTAMP] \u003d \\"},{"line_number":93,"context_line":"                        jline[\u0027updateDate\u0027]"},{"line_number":94,"context_line":"                if not jline[\u0027resourceId\u0027] or not jline[\u0027alertType\u0027] \\"},{"line_number":95,"context_line":"                        or not jline[\u0027resourceType\u0027] or \\"},{"line_number":96,"context_line":"                        not jline[\u0027activeTimestamp\u0027]:"},{"line_number":97,"context_line":"                    LOG.error(\"missing parameters for \" +"},{"line_number":98,"context_line":"                              str(transformed_line))"},{"line_number":99,"context_line":"                else:"},{"line_number":100,"context_line":"                    alarms.append(transformed_line)"},{"line_number":101,"context_line":"        non_dup_alarms \u003d self.eliminate_duplicates(alarms)"},{"line_number":102,"context_line":"        self.alarms \u003d sorted(non_dup_alarms,"},{"line_number":103,"context_line":"                             key\u003dlambda x:"},{"line_number":104,"context_line":"                             (AlarmMapper.get_timestamp(x) -"},{"line_number":105,"context_line":"                              datetime.datetime(1970, 1, 1)).total_seconds())"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def eliminate_duplicates(self, alarms):"},{"line_number":108,"context_line":"        alarms_sorted_by_instance \u003d \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_a248a488","line":105,"range":{"start_line":55,"start_character":7,"end_line":105,"end_character":77},"updated":"2017-02-13 15:21:12.000000000","message":"too long you should refactor here","commit_id":"9f20f2eb398a934fdd69d29e3208e5d81f259a9a"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"4f830d581a431a52ad870f391ed8c496874c118f","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                     datetime.datetime(1970, 1, 1)).total_seconds(),"},{"line_number":116,"context_line":"                    x[AlarmMapper.STATE]))"},{"line_number":117,"context_line":"        unique_alarms \u003d []"},{"line_number":118,"context_line":"        counter \u003d 0"},{"line_number":119,"context_line":"        for alarm in alarms_sorted_by_instance:"},{"line_number":120,"context_line":"            if alarm[AlarmMapper.STATE] \u003d\u003d AlarmMapper.ACTIVE:"},{"line_number":121,"context_line":"                if counter \u003d\u003d 0:"},{"line_number":122,"context_line":"                    unique_alarms.append(alarm)"},{"line_number":123,"context_line":"                counter +\u003d 1"},{"line_number":124,"context_line":"            else:"},{"line_number":125,"context_line":"                counter -\u003d 1"},{"line_number":126,"context_line":"                if counter \u003d\u003d 0:"},{"line_number":127,"context_line":"                    unique_alarms.append(alarm)"},{"line_number":128,"context_line":"        return unique_alarms"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def get_alarms(self):"},{"line_number":131,"context_line":"        return self.alarms"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_8213a065","line":128,"range":{"start_line":118,"start_character":8,"end_line":128,"end_character":28},"updated":"2017-02-13 15:21:12.000000000","message":"maybe use the Counter object from python","commit_id":"9f20f2eb398a934fdd69d29e3208e5d81f259a9a"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"4f830d581a431a52ad870f391ed8c496874c118f","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                    unique_alarms.append(alarm)"},{"line_number":128,"context_line":"        return unique_alarms"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def get_alarms(self):"},{"line_number":131,"context_line":"        return self.alarms"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_e208dc2f","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":18},"updated":"2017-02-13 15:21:12.000000000","message":"use @property","commit_id":"9f20f2eb398a934fdd69d29e3208e5d81f259a9a"}],"vitrage/correlation_engine/intersection_collection.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"4f830d581a431a52ad870f391ed8c496874c118f","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        #  intersection_score"},{"line_number":23,"context_line":"        self.alarms_intersections \u003d {}"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def calc_intersection(self, active_alarm_start_time, inactive_start_time,"},{"line_number":26,"context_line":"                          inactive_end_time):"},{"line_number":27,"context_line":"        return inactive_end_time - max(inactive_start_time,"},{"line_number":28,"context_line":"                                       active_alarm_start_time)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def get(self, left_resource_id, left_resource_type, left_alarm_type,"},{"line_number":31,"context_line":"            right_resource_id, right_resource_type, right_alarm_type):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_a5a98ee1","line":28,"range":{"start_line":25,"start_character":4,"end_line":28,"end_character":62},"updated":"2017-02-13 15:21:12.000000000","message":"can be static","commit_id":"9f20f2eb398a934fdd69d29e3208e5d81f259a9a"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"4f830d581a431a52ad870f391ed8c496874c118f","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                      (right_resource_id,"},{"line_number":37,"context_line":"                       right_resource_type,"},{"line_number":38,"context_line":"                       right_alarm_type)])"},{"line_number":39,"context_line":"        if key in self.alarms_intersections:"},{"line_number":40,"context_line":"            return self.alarms_intersections[key]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def append_intersection(self, inactive_alarm_id, inactive_start_time,"},{"line_number":43,"context_line":"                            inactive_end_time, active_alarms_list):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_25e4be39","line":40,"range":{"start_line":39,"start_character":8,"end_line":40,"end_character":49},"updated":"2017-02-13 15:21:12.000000000","message":"this return None if key not present ?\nthen you can use alarms_intersections.get","commit_id":"9f20f2eb398a934fdd69d29e3208e5d81f259a9a"}]}
