)]}'
{"releasenotes/notes/machine_learning_service-da9700e6c6fa61b6.yaml":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"c37fd0b6dee85b2932f264bebfbfed13d3ec60a6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - A new service was added to Vitrage, the machine learning service."},{"line_number":4,"context_line":"    Together with it the first machine learning plugin was added - the"},{"line_number":5,"context_line":"    Jaccard Correlation plugin. This plugin listens to rabbit MQ "},{"line_number":6,"context_line":"    receiving messages about creation and deletion of alarms, and "},{"line_number":7,"context_line":"    learns the correlation between each pair of alarms, in order to "}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9f436f4f_fe7c8d21","line":4,"range":{"start_line":4,"start_character":18,"end_line":4,"end_character":20},"updated":"2017-08-08 06:22:19.000000000","message":"I think you should add a comma","commit_id":"68774a81bd3f8f2bcfb91c3b5214cc26bcb12e4a"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"c37fd0b6dee85b2932f264bebfbfed13d3ec60a6","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - A new service was added to Vitrage, the machine learning service."},{"line_number":4,"context_line":"    Together with it the first machine learning plugin was added - the"},{"line_number":5,"context_line":"    Jaccard Correlation plugin. This plugin listens to rabbit MQ "},{"line_number":6,"context_line":"    receiving messages about creation and deletion of alarms, and "},{"line_number":7,"context_line":"    learns the correlation between each pair of alarms, in order to "},{"line_number":8,"context_line":"    recommend on creation of new templates."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9f436f4f_1e88711d","line":5,"range":{"start_line":5,"start_character":64,"end_line":5,"end_character":65},"updated":"2017-08-08 06:22:19.000000000","message":"You have some extra spaces in this file","commit_id":"68774a81bd3f8f2bcfb91c3b5214cc26bcb12e4a"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"c37fd0b6dee85b2932f264bebfbfed13d3ec60a6","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Together with it the first machine learning plugin was added - the"},{"line_number":5,"context_line":"    Jaccard Correlation plugin. This plugin listens to rabbit MQ "},{"line_number":6,"context_line":"    receiving messages about creation and deletion of alarms, and "},{"line_number":7,"context_line":"    learns the correlation between each pair of alarms, in order to "},{"line_number":8,"context_line":"    recommend on creation of new templates."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9f436f4f_3e98d568","line":7,"range":{"start_line":7,"start_character":56,"end_line":7,"end_character":67},"updated":"2017-08-08 06:22:19.000000000","message":"I think we should state that this is a future enhancement","commit_id":"68774a81bd3f8f2bcfb91c3b5214cc26bcb12e4a"}],"vitrage/common/constants.py":[{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"6dbf09e8eeddec9fb9214ccca3e776a97f837127","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    VITRAGE_RESOURCE_TYPE \u003d \u0027vitrage_resource_type\u0027"},{"line_number":44,"context_line":"    RESOURCE \u003d \u0027resource\u0027"},{"line_number":45,"context_line":"    IS_REAL_VITRAGE_ID \u003d \u0027is_real_vitrage_id\u0027"},{"line_number":46,"context_line":"    TIMESTAMP_FORMAT \u003d \u0027%Y-%m-%dT%H:%M:%SZ\u0027"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class EdgeProperties(object):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_b8516411","line":46,"range":{"start_line":46,"start_character":3,"end_line":46,"end_character":43},"updated":"2017-08-07 10:51:26.000000000","message":"This is no a field, thus it\u0027s not supposed to be under this VertexProperties","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"}],"vitrage/entity_graph/__init__.py":[{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"6dbf09e8eeddec9fb9214ccca3e776a97f837127","unresolved":false,"context_lines":[{"line_number":27,"context_line":"               default\u003d\u0027vitrage.graph\u0027,"},{"line_number":28,"context_line":"               help\u003d\u0027The topic that vitrage-graph uses for graph \u0027"},{"line_number":29,"context_line":"                    \u0027notification messages.\u0027),"},{"line_number":30,"context_line":"    cfg.StrOpt(\u0027machine_learning_topic\u0027,"},{"line_number":31,"context_line":"               default\u003d\u0027vitrage.machine_learning\u0027,"},{"line_number":32,"context_line":"               help\u003d\u0027The topic that vitrage-graph uses for graph \u0027"},{"line_number":33,"context_line":"                    \u0027machine learning messages.\u0027),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027graph_driver\u0027,"},{"line_number":35,"context_line":"               default\u003d\u0027networkx\u0027,"},{"line_number":36,"context_line":"               help\u003d\u0027graph driver implementation class\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_184ab054","line":33,"range":{"start_line":30,"start_character":4,"end_line":33,"end_character":50},"updated":"2017-08-07 10:51:26.000000000","message":"Shouldn\u0027t it be defined under machine_learning opts?","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"}],"vitrage/entity_graph/processor/notifier.py":[{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"6dbf09e8eeddec9fb9214ccca3e776a97f837127","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    def __init__(self, conf):"},{"line_number":30,"context_line":"        self.oslo_notifier \u003d None"},{"line_number":31,"context_line":"        try:"},{"line_number":32,"context_line":"            notifier_topic \u003d conf.entity_graph.notifier_topic"},{"line_number":33,"context_line":"            machine_learning_topic \u003d conf.entity_graph.machine_learning_topic"},{"line_number":34,"context_line":"            notifier_plugins \u003d conf.notifiers"},{"line_number":35,"context_line":"            topics \u003d []"},{"line_number":36,"context_line":"            if machine_learning_topic and conf.machine_learning_plugins:"},{"line_number":37,"context_line":"                topics.append(machine_learning_topic)"},{"line_number":38,"context_line":"            if notifier_topic and notifier_plugins:"},{"line_number":39,"context_line":"                topics.append(notifier_topic)"},{"line_number":40,"context_line":"            if not topics:"},{"line_number":41,"context_line":"                LOG.info(\u0027Graph Notifier is disabled\u0027)"},{"line_number":42,"context_line":"                return"},{"line_number":43,"context_line":"            self.oslo_notifier \u003d oslo_messaging.Notifier("},{"line_number":44,"context_line":"                get_transport(conf),"},{"line_number":45,"context_line":"                driver\u003d\u0027messagingv2\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_18b87028","line":42,"range":{"start_line":32,"start_character":12,"end_line":42,"end_character":22},"updated":"2017-08-07 10:51:26.000000000","message":"you should write this is as another method called get_topics","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"6dbf09e8eeddec9fb9214ccca3e776a97f837127","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"def _is_active_alarm(vertex):"},{"line_number":127,"context_line":"    if not vertex:"},{"line_number":128,"context_line":"        return False"},{"line_number":129,"context_line":"    if vertex.get(VProps.VITRAGE_CATEGORY) \u003d\u003d EntityCategory.ALARM:"},{"line_number":130,"context_line":"        return _is_relevant_vertex(vertex)"},{"line_number":131,"context_line":"    return False"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"def _is_marked_down(vertex):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_386694ef","line":131,"range":{"start_line":127,"start_character":3,"end_line":131,"end_character":16},"updated":"2017-08-07 10:51:26.000000000","message":"You should write it like this:\nif vertex and vertex.get(VProps.VITRAGE_CATEGORY) \u003d\u003d EntityCategory.ALARM:\n    return _is_relevant_vertex(vertex)\nreturn False","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"c37fd0b6dee85b2932f264bebfbfed13d3ec60a6","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            if notifier_topic and notifier_plugins:"},{"line_number":52,"context_line":"                topics.append(notifier_topic)"},{"line_number":53,"context_line":"        except Exception as e:"},{"line_number":54,"context_line":"            LOG.info(\u0027Graph Notifier - missing configuration %s\u0027 % str(e))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        try:"},{"line_number":57,"context_line":"            machine_learning_topic \u003d \\"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f436f4f_5ebcb9ba","line":54,"range":{"start_line":54,"start_character":16,"end_line":54,"end_character":20},"updated":"2017-08-08 06:22:19.000000000","message":"Should be LOG.warning?","commit_id":"68774a81bd3f8f2bcfb91c3b5214cc26bcb12e4a"},{"author":{"_account_id":24635,"name":"Anna Reznikov","email":"annarez82@gmail.com","username":"annarez"},"change_message_id":"30a5f7975ae052cdaeaa8f83bddfe2d3a2a3bf6b","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            if notifier_topic and notifier_plugins:"},{"line_number":52,"context_line":"                topics.append(notifier_topic)"},{"line_number":53,"context_line":"        except Exception as e:"},{"line_number":54,"context_line":"            LOG.info(\u0027Graph Notifier - missing configuration %s\u0027 % str(e))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        try:"},{"line_number":57,"context_line":"            machine_learning_topic \u003d \\"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f436f4f_7eef7d87","line":54,"range":{"start_line":54,"start_character":16,"end_line":54,"end_character":20},"in_reply_to":"9f436f4f_5ebcb9ba","updated":"2017-08-08 06:39:40.000000000","message":"I don\u0027t think so, because missing configuration can be intentional","commit_id":"68774a81bd3f8f2bcfb91c3b5214cc26bcb12e4a"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"c37fd0b6dee85b2932f264bebfbfed13d3ec60a6","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            if machine_learning_topic and machine_learning_plugins:"},{"line_number":61,"context_line":"                topics.append(machine_learning_topic)"},{"line_number":62,"context_line":"        except Exception as e:"},{"line_number":63,"context_line":"            LOG.info(\u0027Machine Learning - missing configuration %s\u0027 % str(e))"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        return topics"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9f436f4f_3eb1f5e2","line":63,"range":{"start_line":63,"start_character":16,"end_line":63,"end_character":20},"updated":"2017-08-08 06:22:19.000000000","message":"Should be LOG.warning?","commit_id":"68774a81bd3f8f2bcfb91c3b5214cc26bcb12e4a"}],"vitrage/machine_learning/__init__.py":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9bc461bf07c80c8dd19e0529a6c3b767f5fe7509","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from oslo_config import cfg"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"OPTS \u003d ["},{"line_number":18,"context_line":"    cfg.ListOpt(\u0027machine_learning_plugins\u0027,"},{"line_number":19,"context_line":"                help\u003d\u0027Names of enabled machine learning plugins \u0027"},{"line_number":20,"context_line":"                     \u0027(example jaccard_correlation)\u0027),"},{"line_number":21,"context_line":"    cfg.ListOpt(\u0027machine_learning_plugins_path\u0027,"},{"line_number":22,"context_line":"                default\u003d[\u0027vitrage.machine_learning.plugins\u0027],"},{"line_number":23,"context_line":"                help\u003d\u0027list of base path for notifiers\u0027),"},{"line_number":24,"context_line":"    ]"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf3e73b7_9c890228","line":23,"range":{"start_line":18,"start_character":0,"end_line":23,"end_character":56},"updated":"2017-08-06 12:25:55.000000000","message":"Why do we need both?","commit_id":"1e26878b3e821a672417366ace74778616e2c181"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"6dbf09e8eeddec9fb9214ccca3e776a97f837127","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from oslo_config import cfg"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"OPTS \u003d ["},{"line_number":18,"context_line":"    cfg.ListOpt(\u0027machine_learning_plugins\u0027,"},{"line_number":19,"context_line":"                help\u003d\u0027Names of enabled machine learning plugins \u0027"},{"line_number":20,"context_line":"                     \u0027(example jaccard_correlation)\u0027),"},{"line_number":21,"context_line":"    cfg.ListOpt(\u0027machine_learning_plugins_path\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_f8e24c2f","line":18,"range":{"start_line":18,"start_character":17,"end_line":18,"end_character":34},"updated":"2017-08-07 10:51:26.000000000","message":"the name doesn\u0027t need to start with machine_learning because it is going to sit under a topic called machine_learning in the configuration","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"6dbf09e8eeddec9fb9214ccca3e776a97f837127","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    cfg.ListOpt(\u0027machine_learning_plugins\u0027,"},{"line_number":19,"context_line":"                help\u003d\u0027Names of enabled machine learning plugins \u0027"},{"line_number":20,"context_line":"                     \u0027(example jaccard_correlation)\u0027),"},{"line_number":21,"context_line":"    cfg.ListOpt(\u0027machine_learning_plugins_path\u0027,"},{"line_number":22,"context_line":"                default\u003d[\u0027vitrage.machine_learning.plugins\u0027],"},{"line_number":23,"context_line":"                help\u003d\u0027list of base path for notifiers\u0027),"},{"line_number":24,"context_line":"    ]"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_d8d1c859","line":21,"range":{"start_line":21,"start_character":17,"end_line":21,"end_character":33},"updated":"2017-08-07 10:51:26.000000000","message":"same as above","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"6dbf09e8eeddec9fb9214ccca3e776a97f837127","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    cfg.ListOpt(\u0027machine_learning_plugins_path\u0027,"},{"line_number":22,"context_line":"                default\u003d[\u0027vitrage.machine_learning.plugins\u0027],"},{"line_number":23,"context_line":"                help\u003d\u0027list of base path for notifiers\u0027),"},{"line_number":24,"context_line":"    ]"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_58971892","line":24,"updated":"2017-08-07 10:51:26.000000000","message":"you should put the machine_learning_topic here?\n(the machine_learning_topic though should start with machine_learning because we have many different topics and it will make it clearer, i think","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"c37fd0b6dee85b2932f264bebfbfed13d3ec60a6","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    cfg.ListOpt(\u0027plugins_path\u0027,"},{"line_number":22,"context_line":"                default\u003d[\u0027vitrage.machine_learning.plugins\u0027],"},{"line_number":23,"context_line":"                help\u003d\u0027list of base path for notifiers\u0027),"},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027machine_learning_topic\u0027,"},{"line_number":25,"context_line":"               default\u003d\u0027vitrage.machine_learning\u0027,"},{"line_number":26,"context_line":"               help\u003d\u0027The topic that vitrage-graph uses for graph \u0027"},{"line_number":27,"context_line":"                    \u0027machine learning messages.\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f436f4f_7edc1d18","line":24,"range":{"start_line":24,"start_character":16,"end_line":24,"end_character":32},"updated":"2017-08-08 06:22:19.000000000","message":"Should it start with machine_learning? you removed this prefix from the other opts","commit_id":"68774a81bd3f8f2bcfb91c3b5214cc26bcb12e4a"}],"vitrage/machine_learning/plugins/__init__.py":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9bc461bf07c80c8dd19e0529a6c3b767f5fe7509","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf3e73b7_5c839a05","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":4},"updated":"2017-08-06 12:25:55.000000000","message":"We usually write: \n__author__ \u003d \u0027stack\u0027","commit_id":"1e26878b3e821a672417366ace74778616e2c181"}],"vitrage/machine_learning/plugins/jaccard_correlation/__init__.py":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9bc461bf07c80c8dd19e0529a6c3b767f5fe7509","unresolved":false,"context_lines":[{"line_number":19,"context_line":"               default\u003d\u0027vitrage.machine_learning.plugins.\u0027"},{"line_number":20,"context_line":"                       \u0027jaccard_correlation.alarm_processor.\u0027"},{"line_number":21,"context_line":"                       \u0027AlarmDataProcessor\u0027,"},{"line_number":22,"context_line":"               help\u003d\u0027nova notifier class path\u0027,"},{"line_number":23,"context_line":"               required\u003dTrue),"},{"line_number":24,"context_line":"    cfg.IntOpt(\u0027num_of_events_to_flush\u0027, default\u003d1000,"},{"line_number":25,"context_line":"               help\u003d\u0027the amount of events flushes\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf3e73b7_3c88d61d","line":22,"range":{"start_line":22,"start_character":21,"end_line":22,"end_character":25},"updated":"2017-08-06 12:25:55.000000000","message":"Not nova...","commit_id":"1e26878b3e821a672417366ace74778616e2c181"}],"vitrage/machine_learning/plugins/jaccard_correlation/accumulation_persistor.py":[{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"6dbf09e8eeddec9fb9214ccca3e776a97f837127","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"ACTIVITY_PATH \u003d \"/tmp/alarms_activity.txt\""},{"line_number":24,"context_line":"INTERSECT_PATH \u003d \"/tmp/alarms_intersections.txt\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def load_data():"},{"line_number":28,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_98834005","line":25,"updated":"2017-08-07 10:51:26.000000000","message":"I think that maybe you should call it accumulation_persistor_utils?","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"}],"vitrage/machine_learning/plugins/jaccard_correlation/accumulation_persistor_utils.py":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"c37fd0b6dee85b2932f264bebfbfed13d3ec60a6","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        with open(ACTIVITY_PATH, \u0027rb\u0027) as activity_f:"},{"line_number":30,"context_line":"            alarms_activity \u003d pickle.load(activity_f)"},{"line_number":31,"context_line":"    except Exception as e:"},{"line_number":32,"context_line":"        LOG.info(\u0027Cannot load alarms_activity - %s\u0027, e)"},{"line_number":33,"context_line":"        return AccumulatedData({}, {})"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f436f4f_3ee695ea","line":32,"range":{"start_line":32,"start_character":12,"end_line":32,"end_character":16},"updated":"2017-08-08 06:22:19.000000000","message":"info or warning?","commit_id":"68774a81bd3f8f2bcfb91c3b5214cc26bcb12e4a"},{"author":{"_account_id":24635,"name":"Anna Reznikov","email":"annarez82@gmail.com","username":"annarez"},"change_message_id":"30a5f7975ae052cdaeaa8f83bddfe2d3a2a3bf6b","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        with open(ACTIVITY_PATH, \u0027rb\u0027) as activity_f:"},{"line_number":30,"context_line":"            alarms_activity \u003d pickle.load(activity_f)"},{"line_number":31,"context_line":"    except Exception as e:"},{"line_number":32,"context_line":"        LOG.info(\u0027Cannot load alarms_activity - %s\u0027, e)"},{"line_number":33,"context_line":"        return AccumulatedData({}, {})"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f436f4f_de230905","line":32,"range":{"start_line":32,"start_character":12,"end_line":32,"end_character":16},"in_reply_to":"9f436f4f_3ee695ea","updated":"2017-08-08 06:39:40.000000000","message":"it\u0027s info because it doesn\u0027t harm the rest of the flow. furthermore, it\u0027s the expected behavior on the first time the service is up.","commit_id":"68774a81bd3f8f2bcfb91c3b5214cc26bcb12e4a"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"c37fd0b6dee85b2932f264bebfbfed13d3ec60a6","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        with open(INTERSECT_PATH, \u0027rb\u0027) as intersect_f:"},{"line_number":37,"context_line":"            alarms_intersect \u003d pickle.load(intersect_f)"},{"line_number":38,"context_line":"    except Exception as e:"},{"line_number":39,"context_line":"        LOG.info(\u0027Cannot load alarms_intersect - %s\u0027, e)"},{"line_number":40,"context_line":"        return AccumulatedData({}, {})"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    return AccumulatedData(alarms_activity, alarms_intersect)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f436f4f_1eebd1b0","line":39,"range":{"start_line":39,"start_character":12,"end_line":39,"end_character":16},"updated":"2017-08-08 06:22:19.000000000","message":"Same here","commit_id":"68774a81bd3f8f2bcfb91c3b5214cc26bcb12e4a"}],"vitrage/machine_learning/plugins/jaccard_correlation/alarm_data_accumulator.py":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9bc461bf07c80c8dd19e0529a6c3b767f5fe7509","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def append_inactive(self, alarm_id, end_time):"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        # alarm_id should be a tuple"},{"line_number":43,"context_line":"        if alarm_id not in self.active_start_times:"},{"line_number":44,"context_line":"            LOG.debug(\"Alarm {} at {} was deactivated without being active\"."},{"line_number":45,"context_line":"                      format(alarm_id, str(end_time)))"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf3e73b7_1c7d121c","line":42,"range":{"start_line":42,"start_character":8,"end_line":42,"end_character":36},"updated":"2017-08-06 12:25:55.000000000","message":"I don\u0027t understand this comment","commit_id":"1e26878b3e821a672417366ace74778616e2c181"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9bc461bf07c80c8dd19e0529a6c3b767f5fe7509","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    def calc_intersect(self, inactive_start, inactive_end, active_start):"},{"line_number":68,"context_line":"        return inactive_end - max(inactive_start, active_start)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    # empty the data from active alarms and re-enter all the currently-active"},{"line_number":71,"context_line":"    # alarms"},{"line_number":72,"context_line":"    def flush_accumulations(self):"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        now \u003d datetime.datetime.now()"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf3e73b7_dc766a3f","line":71,"range":{"start_line":70,"start_character":0,"end_line":71,"end_character":12},"updated":"2017-08-06 12:25:55.000000000","message":"Please write it using a function header format","commit_id":"1e26878b3e821a672417366ace74778616e2c181"}],"vitrage/machine_learning/plugins/jaccard_correlation/alarm_processor.py":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9bc461bf07c80c8dd19e0529a6c3b767f5fe7509","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                self.correlation_manager.output_correlations(self.data_manager)"},{"line_number":70,"context_line":"                self.event_counter \u003d 0"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def update_data_accumulator(self, data):"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        alarm_name \u003d data[VProps.RAWTEXT] if data.get(VProps.RAWTEXT) else \\"},{"line_number":75,"context_line":"            data[VProps.NAME]"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf3e73b7_9c8ea225","line":72,"range":{"start_line":72,"start_character":8,"end_line":72,"end_character":31},"updated":"2017-08-06 12:25:55.000000000","message":"Is it an inner method? if so, it should start with _","commit_id":"1e26878b3e821a672417366ace74778616e2c181"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9bc461bf07c80c8dd19e0529a6c3b767f5fe7509","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            self.data_manager.append_inactive(alarm_id, timestamp)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @staticmethod"},{"line_number":85,"context_line":"    def get_alarm_id_and_timestamp(data, alarm_name):"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        alarm_id \u003d AlarmID(data.get(VProps.VITRAGE_RESOURCE_ID),"},{"line_number":88,"context_line":"                           data.get(VProps.VITRAGE_RESOURCE_TYPE),"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf3e73b7_7c93fe50","line":85,"range":{"start_line":85,"start_character":8,"end_line":85,"end_character":34},"updated":"2017-08-06 12:25:55.000000000","message":"Is it an inner method? if so, it should start with _","commit_id":"1e26878b3e821a672417366ace74778616e2c181"}],"vitrage/machine_learning/plugins/jaccard_correlation/correlation_collection.py":[{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"6dbf09e8eeddec9fb9214ccca3e776a97f837127","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"A1_RESOURCE_ID \u003d 0"},{"line_number":23,"context_line":"A1_RESOURCE_TYPE \u003d 1"},{"line_number":24,"context_line":"A1_NAME \u003d 2"},{"line_number":25,"context_line":"A2_RESOURCE_ID \u003d 3"},{"line_number":26,"context_line":"A2_RESOURCE_TYPE \u003d 4"},{"line_number":27,"context_line":"A2_NAME \u003d 5"},{"line_number":28,"context_line":"OFFSET_DELTA \u003d 6"},{"line_number":29,"context_line":"CORR_SCORE \u003d 7"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class CorrelationCollection(object):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_f8c12c30","line":29,"range":{"start_line":22,"start_character":0,"end_line":29,"end_character":14},"updated":"2017-08-07 10:51:26.000000000","message":"those name doesn\u0027t quite make sense.\n1. maybe you should first wrap it in a class and put them all there and then use that class. (Like we do in constants.py)\n2. A1 has to be atleast ALARM_1 to make it clearer. (same with A2)","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"6dbf09e8eeddec9fb9214ccca3e776a97f837127","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def set(self, alarm_1, alarm_2, offset_delta, correlation_score):"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        self.correlation_list.append(alarm_1 + alarm_2 +"},{"line_number":42,"context_line":"                                     (offset_delta, correlation_score))"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def get_aggregated(self):"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_b87de4e8","line":42,"range":{"start_line":41,"start_character":37,"end_line":42,"end_character":70},"updated":"2017-08-07 10:51:26.000000000","message":"what does that mean? is this adding between integers? or between strings?","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"},{"author":{"_account_id":24635,"name":"Anna Reznikov","email":"annarez82@gmail.com","username":"annarez"},"change_message_id":"ca7fa1d0e6b7c7edb55a1dea466000c46e996948","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def set(self, alarm_1, alarm_2, offset_delta, correlation_score):"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        self.correlation_list.append(alarm_1 + alarm_2 +"},{"line_number":42,"context_line":"                                     (offset_delta, correlation_score))"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def get_aggregated(self):"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_6e2696ba","line":42,"range":{"start_line":41,"start_character":37,"end_line":42,"end_character":70},"in_reply_to":"bf3e73b7_b87de4e8","updated":"2017-08-07 11:41:16.000000000","message":"this is adding between tuples","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"6dbf09e8eeddec9fb9214ccca3e776a97f837127","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        results \u003d [(key, sum((pairs_dict[key])) / float(len(pairs_dict[key])))"},{"line_number":65,"context_line":"                   for key in pairs_dict]"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        categorize \u003d lambda x: \"HIGH\" if x[1] \u003e\u003d self.high_corr_score \\"},{"line_number":68,"context_line":"            else \"MEDIUM\" if x[1] \u003e\u003d self.med_corr_score else \"LOW\""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        return [(key, [(x, y) for x, y in group]) for"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_78041c7c","line":67,"range":{"start_line":67,"start_character":31,"end_line":67,"end_character":37},"updated":"2017-08-07 10:51:26.000000000","message":"where those constants come from?\nuse them from their defined constants or define one.","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"c37fd0b6dee85b2932f264bebfbfed13d3ec60a6","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        pairs_dict \u003d defaultdict(list)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        # 1 \u003d ALARM1_RESOURCE_TYPE, 2 \u003d ALARM1_NAME, 4 \u003d ALARM2_RESOURCE_TYPE,"},{"line_number":45,"context_line":"        # 5 \u003d ALARM2_NAME, 7 \u003d CORR_SCORE"},{"line_number":46,"context_line":"        for alarm_pair in self.correlation_list:"},{"line_number":47,"context_line":"            if ((alarm_pair[1],"},{"line_number":48,"context_line":"                 alarm_pair[2],"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f436f4f_7e053d7a","line":45,"range":{"start_line":44,"start_character":1,"end_line":45,"end_character":41},"updated":"2017-08-08 06:22:19.000000000","message":"Maybe use a named tuple or constants?","commit_id":"68774a81bd3f8f2bcfb91c3b5214cc26bcb12e4a"}],"vitrage/machine_learning/plugins/jaccard_correlation/correlation_manager.py":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9bc461bf07c80c8dd19e0529a6c3b767f5fe7509","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        a1_time \u003d accumulated_data.alarms_activity.get(alarm_1)"},{"line_number":53,"context_line":"        a2_time \u003d accumulated_data.alarms_activity.get(alarm_2)"},{"line_number":54,"context_line":"        if not a1_time or not a2_time:"},{"line_number":55,"context_line":"            LOG.error(\"one of the alarms given has never been active\")"},{"line_number":56,"context_line":"            return 0"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        combined \u003d a1_time + a2_time - intersect"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf3e73b7_3c9d7659","line":55,"range":{"start_line":55,"start_character":23,"end_line":55,"end_character":26},"updated":"2017-08-06 12:25:55.000000000","message":"Better write \"One\" a capital O (same comment for the other log messages)","commit_id":"1e26878b3e821a672417366ace74778616e2c181"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"6dbf09e8eeddec9fb9214ccca3e776a97f837127","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                         (self.output_folder, output_path))"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"                for correlation_level, correlation_bar \\"},{"line_number":86,"context_line":"                        in [(\"HIGH\", \" (\u003e {})\".format(self.high_corr_score)),"},{"line_number":87,"context_line":"                            (\"MEDIUM\", \" (\u003e {})\".format(self.med_corr_score)),"},{"line_number":88,"context_line":"                            (\"LOW\", \"(\u003c {})\".format(self.med_corr_score))]:"},{"line_number":89,"context_line":"                    if correlation_level in alarms:"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_f8724c11","line":86,"range":{"start_line":86,"start_character":29,"end_line":86,"end_character":35},"updated":"2017-08-07 10:51:26.000000000","message":"same here with the constants","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"c37fd0b6dee85b2932f264bebfbfed13d3ec60a6","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from vitrage.machine_learning.plugins.jaccard_correlation.\\"},{"line_number":21,"context_line":"    correlation_collection import CorrelationCollection as CCollection"},{"line_number":22,"context_line":"import vitrage.machine_learning.plugins.jaccard_correlation.\\"},{"line_number":23,"context_line":"    correlation_collection as CC"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"LOG \u003d log.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f436f4f_1e04f17a","line":22,"updated":"2017-08-08 06:22:19.000000000","message":"Alternatively, you can import HIGH, MEDIUM and LOW directly.\nCC is confusing in my opinion.","commit_id":"68774a81bd3f8f2bcfb91c3b5214cc26bcb12e4a"}],"vitrage/machine_learning/service.py":[{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"6dbf09e8eeddec9fb9214ccca3e776a97f837127","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def info(self, ctxt, publisher_id, event_type, payload, metadata):"},{"line_number":79,"context_line":"        \"\"\"Endpoint for alarm notifications\"\"\""},{"line_number":80,"context_line":"        LOG.info(\u0027Vitrage Event Info: publisher_id %s\u0027, publisher_id)"},{"line_number":81,"context_line":"        LOG.info(\u0027Vitrage Event Info: event_type %s\u0027, event_type)"},{"line_number":82,"context_line":"        LOG.info(\u0027Vitrage Event Info: metadata %s\u0027, metadata)"},{"line_number":83,"context_line":"        LOG.info(\u0027Vitrage Event Info: payload %s\u0027, payload)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_5824b8c6","line":80,"range":{"start_line":80,"start_character":12,"end_line":80,"end_character":16},"updated":"2017-08-07 10:51:26.000000000","message":"those logs should be with debug because other wise our log will be very messy","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"},{"author":{"_account_id":24635,"name":"Anna Reznikov","email":"annarez82@gmail.com","username":"annarez"},"change_message_id":"ca7fa1d0e6b7c7edb55a1dea466000c46e996948","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def info(self, ctxt, publisher_id, event_type, payload, metadata):"},{"line_number":79,"context_line":"        \"\"\"Endpoint for alarm notifications\"\"\""},{"line_number":80,"context_line":"        LOG.info(\u0027Vitrage Event Info: publisher_id %s\u0027, publisher_id)"},{"line_number":81,"context_line":"        LOG.info(\u0027Vitrage Event Info: event_type %s\u0027, event_type)"},{"line_number":82,"context_line":"        LOG.info(\u0027Vitrage Event Info: metadata %s\u0027, metadata)"},{"line_number":83,"context_line":"        LOG.info(\u0027Vitrage Event Info: payload %s\u0027, payload)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_aeed9e26","line":80,"range":{"start_line":80,"start_character":12,"end_line":80,"end_character":16},"in_reply_to":"bf3e73b7_5824b8c6","updated":"2017-08-07 11:41:16.000000000","message":"it\u0027s the same as in notifier service, I wanted to maintain consistency","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"2b53bb16c0a783e702996664783c7ebfde5f97b5","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def info(self, ctxt, publisher_id, event_type, payload, metadata):"},{"line_number":79,"context_line":"        \"\"\"Endpoint for alarm notifications\"\"\""},{"line_number":80,"context_line":"        LOG.info(\u0027Vitrage Event Info: publisher_id %s\u0027, publisher_id)"},{"line_number":81,"context_line":"        LOG.info(\u0027Vitrage Event Info: event_type %s\u0027, event_type)"},{"line_number":82,"context_line":"        LOG.info(\u0027Vitrage Event Info: metadata %s\u0027, metadata)"},{"line_number":83,"context_line":"        LOG.info(\u0027Vitrage Event Info: payload %s\u0027, payload)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f436f4f_e4cc0063","line":80,"range":{"start_line":80,"start_character":12,"end_line":80,"end_character":16},"in_reply_to":"bf3e73b7_aeed9e26","updated":"2017-08-08 07:49:25.000000000","message":"I think that it should be changed in the notifier service as well to debug. please advise with Idan he played a lot with the logs.","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"6dbf09e8eeddec9fb9214ccca3e776a97f837127","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        LOG.info(\u0027Vitrage Event Info: event_type %s\u0027, event_type)"},{"line_number":82,"context_line":"        LOG.info(\u0027Vitrage Event Info: metadata %s\u0027, metadata)"},{"line_number":83,"context_line":"        LOG.info(\u0027Vitrage Event Info: payload %s\u0027, payload)"},{"line_number":84,"context_line":"        for plugin in self.machine_learning_plugins:"},{"line_number":85,"context_line":"            plugin.process_event(payload, event_type)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_f855ac1e","line":85,"range":{"start_line":84,"start_character":8,"end_line":85,"end_character":53},"updated":"2017-08-07 10:51:26.000000000","message":"We have talked about the notifier being called to many times. where was it fixed?","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"},{"author":{"_account_id":24635,"name":"Anna Reznikov","email":"annarez82@gmail.com","username":"annarez"},"change_message_id":"ca7fa1d0e6b7c7edb55a1dea466000c46e996948","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        LOG.info(\u0027Vitrage Event Info: event_type %s\u0027, event_type)"},{"line_number":82,"context_line":"        LOG.info(\u0027Vitrage Event Info: metadata %s\u0027, metadata)"},{"line_number":83,"context_line":"        LOG.info(\u0027Vitrage Event Info: payload %s\u0027, payload)"},{"line_number":84,"context_line":"        for plugin in self.machine_learning_plugins:"},{"line_number":85,"context_line":"            plugin.process_event(payload, event_type)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_8ea41a0a","line":85,"range":{"start_line":84,"start_character":8,"end_line":85,"end_character":53},"in_reply_to":"bf3e73b7_f855ac1e","updated":"2017-08-07 11:41:16.000000000","message":"it wasn\u0027t fixed yet, we talked about fixing it after this push, because it is already quite huge...","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"}],"vitrage/opts.py":[{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"6dbf09e8eeddec9fb9214ccca3e776a97f837127","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            vitrage.os_clients.OPTS,"},{"line_number":56,"context_line":"            vitrage.rpc.OPTS,"},{"line_number":57,"context_line":"            vitrage.notifier.OPTS,"},{"line_number":58,"context_line":"            vitrage.machine_learning.OPTS))"},{"line_number":59,"context_line":"    ]"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_78d53cb9","line":58,"range":{"start_line":58,"start_character":12,"end_line":58,"end_character":41},"updated":"2017-08-07 10:51:26.000000000","message":"why did you add it here? you have added it above so you don\u0027t need it here","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"}],"vitrage/tests/unit/machine_learning/jaccard_correlation/test_jaccard_correlation.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"504c86f90fffb106dd35a8f5b35e1453153d1ddf","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from vitrage.tests import base"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"active_timestamp \u003d datetime.datetime.utcnow()"},{"line_number":43,"context_line":"active_timestamp \u003d active_timestamp.strftime(VProps.TIMESTAMP_FORMAT)"},{"line_number":44,"context_line":"inactive_timestamp \u003d \\"},{"line_number":45,"context_line":"    datetime.datetime.utcnow() + datetime.timedelta(minutes\u003d10)"},{"line_number":46,"context_line":"inactive_timestamp \u003d inactive_timestamp.strftime(VProps.TIMESTAMP_FORMAT)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"deduced_alarm_1 \u003d Vertex(\u0027111\u0027, {"},{"line_number":49,"context_line":"    VProps.VITRAGE_CATEGORY: EntityCategory.ALARM,"},{"line_number":50,"context_line":"    VProps.VITRAGE_TYPE: evaluator.VITRAGE_DATASOURCE,"},{"line_number":51,"context_line":"    VProps.VITRAGE_IS_DELETED: False,"},{"line_number":52,"context_line":"    VProps.VITRAGE_IS_PLACEHOLDER: False,"},{"line_number":53,"context_line":"    VProps.NAME: \u0027deduced_alarm_1\u0027,"},{"line_number":54,"context_line":"    VProps.UPDATE_TIMESTAMP: active_timestamp,"},{"line_number":55,"context_line":"    VProps.VITRAGE_RESOURCE_ID: \u0027111\u0027,"},{"line_number":56,"context_line":"    VProps.VITRAGE_RESOURCE_TYPE: \u0027resource_111\u0027,"},{"line_number":57,"context_line":"    })"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"aodh_alarm_1 \u003d Vertex(\u002711\u0027, {"},{"line_number":60,"context_line":"    VProps.VITRAGE_CATEGORY: EntityCategory.ALARM,"},{"line_number":61,"context_line":"    VProps.VITRAGE_TYPE: AODH_DATASOURCE,"},{"line_number":62,"context_line":"    VProps.VITRAGE_IS_DELETED: False,"},{"line_number":63,"context_line":"    VProps.VITRAGE_IS_PLACEHOLDER: False,"},{"line_number":64,"context_line":"    VProps.NAME: \u0027aodh_alarm_1\u0027,"},{"line_number":65,"context_line":"    VProps.UPDATE_TIMESTAMP: active_timestamp,"},{"line_number":66,"context_line":"    VProps.VITRAGE_RESOURCE_ID: \u002711\u0027,"},{"line_number":67,"context_line":"    VProps.VITRAGE_RESOURCE_TYPE: \u0027resource_11\u0027,"},{"line_number":68,"context_line":"    })"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"zabbix_alarm_1 \u003d Vertex(\u00271111\u0027, {"},{"line_number":71,"context_line":"    VProps.VITRAGE_CATEGORY: EntityCategory.ALARM,"},{"line_number":72,"context_line":"    VProps.VITRAGE_TYPE: ZABBIX_DATASOURCE,"},{"line_number":73,"context_line":"    VProps.VITRAGE_IS_DELETED: False,"},{"line_number":74,"context_line":"    VProps.VITRAGE_IS_PLACEHOLDER: True,"},{"line_number":75,"context_line":"    VProps.NAME: \u0027zabbix_alarm_1 {}\u0027,"},{"line_number":76,"context_line":"    VProps.RAWTEXT: \u0027zabbix_alarm_1\u0027,"},{"line_number":77,"context_line":"    VProps.UPDATE_TIMESTAMP: active_timestamp,"},{"line_number":78,"context_line":"    VProps.VITRAGE_RESOURCE_ID: \u00271111\u0027,"},{"line_number":79,"context_line":"    VProps.VITRAGE_RESOURCE_TYPE: \u0027resource_1111\u0027,"},{"line_number":80,"context_line":"    })"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"zabbix_alarm_2 \u003d Vertex(\u00272222\u0027, {"},{"line_number":83,"context_line":"    VProps.VITRAGE_CATEGORY: EntityCategory.ALARM,"},{"line_number":84,"context_line":"    VProps.VITRAGE_TYPE: ZABBIX_DATASOURCE,"},{"line_number":85,"context_line":"    VProps.VITRAGE_IS_DELETED: False,"},{"line_number":86,"context_line":"    VProps.VITRAGE_IS_PLACEHOLDER: True,"},{"line_number":87,"context_line":"    VProps.NAME: \u0027zabbix_alarm_2 {}\u0027,"},{"line_number":88,"context_line":"    VProps.RAWTEXT: \u0027zabbix_alarm_2\u0027,"},{"line_number":89,"context_line":"    VProps.UPDATE_TIMESTAMP: active_timestamp,"},{"line_number":90,"context_line":"    VProps.VITRAGE_RESOURCE_ID: \u00272222\u0027,"},{"line_number":91,"context_line":"    VProps.VITRAGE_RESOURCE_TYPE: \u0027resource_2222\u0027,"},{"line_number":92,"context_line":"})"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"deleted_deduced_alarm_1 \u003d Vertex(\u0027111\u0027, {"},{"line_number":95,"context_line":"    VProps.VITRAGE_CATEGORY: EntityCategory.ALARM,"},{"line_number":96,"context_line":"    VProps.VITRAGE_TYPE: evaluator.VITRAGE_DATASOURCE,"},{"line_number":97,"context_line":"    VProps.VITRAGE_IS_DELETED: True,"},{"line_number":98,"context_line":"    VProps.VITRAGE_IS_PLACEHOLDER: False,"},{"line_number":99,"context_line":"    VProps.NAME: \u0027deduced_alarm_1\u0027,"},{"line_number":100,"context_line":"    VProps.UPDATE_TIMESTAMP: inactive_timestamp,"},{"line_number":101,"context_line":"    VProps.VITRAGE_RESOURCE_ID: \u0027111\u0027,"},{"line_number":102,"context_line":"    VProps.VITRAGE_RESOURCE_TYPE: \u0027resource_111\u0027,"},{"line_number":103,"context_line":"})"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"deleted_aodh_alarm_1 \u003d Vertex(\u002711\u0027, {"},{"line_number":106,"context_line":"    VProps.VITRAGE_CATEGORY: EntityCategory.ALARM,"},{"line_number":107,"context_line":"    VProps.VITRAGE_TYPE: evaluator.VITRAGE_DATASOURCE,"},{"line_number":108,"context_line":"    VProps.VITRAGE_IS_DELETED: True,"},{"line_number":109,"context_line":"    VProps.VITRAGE_IS_PLACEHOLDER: False,"},{"line_number":110,"context_line":"    VProps.NAME: \u0027aodh_alarm_1\u0027,"},{"line_number":111,"context_line":"    VProps.UPDATE_TIMESTAMP: inactive_timestamp,"},{"line_number":112,"context_line":"    VProps.VITRAGE_RESOURCE_ID: \u002711\u0027,"},{"line_number":113,"context_line":"    VProps.VITRAGE_RESOURCE_TYPE: \u0027resource_11\u0027,"},{"line_number":114,"context_line":"})"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"deleted_zabbix_alarm_1 \u003d Vertex(\u00271111\u0027, {"},{"line_number":117,"context_line":"    VProps.VITRAGE_CATEGORY: EntityCategory.ALARM,"},{"line_number":118,"context_line":"    VProps.VITRAGE_TYPE: ZABBIX_DATASOURCE,"},{"line_number":119,"context_line":"    VProps.VITRAGE_IS_DELETED: True,"},{"line_number":120,"context_line":"    VProps.VITRAGE_IS_PLACEHOLDER: False,"},{"line_number":121,"context_line":"    VProps.NAME: \u0027zabbix_alarm_1 {}\u0027,"},{"line_number":122,"context_line":"    VProps.RAWTEXT: \u0027zabbix_alarm_1\u0027,"},{"line_number":123,"context_line":"    VProps.UPDATE_TIMESTAMP: inactive_timestamp,"},{"line_number":124,"context_line":"    VProps.VITRAGE_RESOURCE_ID: \u00271111\u0027,"},{"line_number":125,"context_line":"    VProps.VITRAGE_RESOURCE_TYPE: \u0027resource_1111\u0027,"},{"line_number":126,"context_line":"})"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"deleted_zabbix_alarm_2 \u003d Vertex(\u00272222\u0027, {"},{"line_number":129,"context_line":"    VProps.VITRAGE_CATEGORY: EntityCategory.ALARM,"},{"line_number":130,"context_line":"    VProps.VITRAGE_TYPE: ZABBIX_DATASOURCE,"},{"line_number":131,"context_line":"    VProps.VITRAGE_IS_DELETED: True,"},{"line_number":132,"context_line":"    VProps.VITRAGE_IS_PLACEHOLDER: False,"},{"line_number":133,"context_line":"    VProps.NAME: \u0027zabbix_alarm_2 {}\u0027,"},{"line_number":134,"context_line":"    VProps.RAWTEXT: \u0027zabbix_alarm_2\u0027,"},{"line_number":135,"context_line":"    VProps.UPDATE_TIMESTAMP: inactive_timestamp,"},{"line_number":136,"context_line":"    VProps.VITRAGE_RESOURCE_ID: \u00272222\u0027,"},{"line_number":137,"context_line":"    VProps.VITRAGE_RESOURCE_TYPE: \u0027resource_2222\u0027,"},{"line_number":138,"context_line":"})"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"active_alarms \u003d [deduced_alarm_1, aodh_alarm_1,"},{"line_number":141,"context_line":"                 zabbix_alarm_1, zabbix_alarm_2]"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"inactive_alarms \u003d [deleted_deduced_alarm_1, deleted_aodh_alarm_1,"},{"line_number":144,"context_line":"                   deleted_zabbix_alarm_1, deleted_zabbix_alarm_2]"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"class JaccardCorrelationTest(base.BaseTest):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf3e73b7_7c51be0e","line":144,"range":{"start_line":42,"start_character":0,"end_line":144,"end_character":66},"updated":"2017-08-06 11:13:24.000000000","message":"Are these constants ?\nif they are then according to PEP8 they should be uppercase","commit_id":"b2459fa73cb93b5dd9dfdda5f48990a95c6f512d"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9bc461bf07c80c8dd19e0529a6c3b767f5fe7509","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        return alarm_ids"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def test_jaccard_correlation(self):"},{"line_number":188,"context_line":"        self.__test_alarm_data_accumulations()"},{"line_number":189,"context_line":"        self.__test_correlation_collection()"},{"line_number":190,"context_line":"        self.__test_correlation_manager()"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf3e73b7_1ca2b29b","line":187,"range":{"start_line":187,"start_character":8,"end_line":187,"end_character":32},"updated":"2017-08-06 12:25:55.000000000","message":"You can run each test separately. Is there a reason to wrap them all inside one test?","commit_id":"1e26878b3e821a672417366ace74778616e2c181"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"9bc461bf07c80c8dd19e0529a6c3b767f5fe7509","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        self.__test_correlation_collection()"},{"line_number":190,"context_line":"        self.__test_correlation_manager()"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def __test_alarm_data_accumulations(self):"},{"line_number":193,"context_line":"        self.__test_append_active()"},{"line_number":194,"context_line":"        self.__test_flush_accumulations()"},{"line_number":195,"context_line":"        self.__test_append_inactive()"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf3e73b7_fc9ece52","line":192,"range":{"start_line":192,"start_character":7,"end_line":192,"end_character":10},"updated":"2017-08-06 12:25:55.000000000","message":"Why are there two __?","commit_id":"1e26878b3e821a672417366ace74778616e2c181"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"6dbf09e8eeddec9fb9214ccca3e776a97f837127","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"class JaccardCorrelationTest(base.BaseTest):"},{"line_number":147,"context_line":"    OPTS \u003d ["},{"line_number":148,"context_line":"        cfg.StrOpt(\u0027output_folder\u0027, default\u003d\u0027/tmp\u0027,"},{"line_number":149,"context_line":"                   help\u003d\u0027folder to write all reports to\u0027),"},{"line_number":150,"context_line":"        cfg.FloatOpt(\u0027correlation_threshold\u0027, default\u003d0,"},{"line_number":151,"context_line":"                     help\u003d\u0027threshold of interesting correlations\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_f8e00c99","line":148,"range":{"start_line":148,"start_character":19,"end_line":148,"end_character":34},"updated":"2017-08-07 10:51:26.000000000","message":"use the constant name defined","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"2b53bb16c0a783e702996664783c7ebfde5f97b5","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"class JaccardCorrelationTest(base.BaseTest):"},{"line_number":147,"context_line":"    OPTS \u003d ["},{"line_number":148,"context_line":"        cfg.StrOpt(\u0027output_folder\u0027, default\u003d\u0027/tmp\u0027,"},{"line_number":149,"context_line":"                   help\u003d\u0027folder to write all reports to\u0027),"},{"line_number":150,"context_line":"        cfg.FloatOpt(\u0027correlation_threshold\u0027, default\u003d0,"},{"line_number":151,"context_line":"                     help\u003d\u0027threshold of interesting correlations\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f436f4f_e4f52085","line":148,"range":{"start_line":148,"start_character":19,"end_line":148,"end_character":34},"in_reply_to":"bf3e73b7_f8e00c99","updated":"2017-08-08 07:49:25.000000000","message":"please use constants for those","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"6dbf09e8eeddec9fb9214ccca3e776a97f837127","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    OPTS \u003d ["},{"line_number":148,"context_line":"        cfg.StrOpt(\u0027output_folder\u0027, default\u003d\u0027/tmp\u0027,"},{"line_number":149,"context_line":"                   help\u003d\u0027folder to write all reports to\u0027),"},{"line_number":150,"context_line":"        cfg.FloatOpt(\u0027correlation_threshold\u0027, default\u003d0,"},{"line_number":151,"context_line":"                     help\u003d\u0027threshold of interesting correlations\u0027),"},{"line_number":152,"context_line":"        cfg.FloatOpt(\u0027high_corr_score\u0027, default\u003d0.9,"},{"line_number":153,"context_line":"                     help\u003d\u0027high correlation lower limit\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_38d7b4c2","line":150,"range":{"start_line":150,"start_character":21,"end_line":150,"end_character":44},"updated":"2017-08-07 10:51:26.000000000","message":"use the constant name defined","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"6dbf09e8eeddec9fb9214ccca3e776a97f837127","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                   help\u003d\u0027folder to write all reports to\u0027),"},{"line_number":150,"context_line":"        cfg.FloatOpt(\u0027correlation_threshold\u0027, default\u003d0,"},{"line_number":151,"context_line":"                     help\u003d\u0027threshold of interesting correlations\u0027),"},{"line_number":152,"context_line":"        cfg.FloatOpt(\u0027high_corr_score\u0027, default\u003d0.9,"},{"line_number":153,"context_line":"                     help\u003d\u0027high correlation lower limit\u0027),"},{"line_number":154,"context_line":"        cfg.FloatOpt(\u0027med_corr_score\u0027, default\u003d0.5,"},{"line_number":155,"context_line":"                     help\u003d\u0027medium correlation lower limit\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_d8ef8885","line":152,"range":{"start_line":152,"start_character":21,"end_line":152,"end_character":38},"updated":"2017-08-07 10:51:26.000000000","message":"use the constant name defined","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"6dbf09e8eeddec9fb9214ccca3e776a97f837127","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                     help\u003d\u0027threshold of interesting correlations\u0027),"},{"line_number":152,"context_line":"        cfg.FloatOpt(\u0027high_corr_score\u0027, default\u003d0.9,"},{"line_number":153,"context_line":"                     help\u003d\u0027high correlation lower limit\u0027),"},{"line_number":154,"context_line":"        cfg.FloatOpt(\u0027med_corr_score\u0027, default\u003d0.5,"},{"line_number":155,"context_line":"                     help\u003d\u0027medium correlation lower limit\u0027),"},{"line_number":156,"context_line":"    ]"},{"line_number":157,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_78ee5c89","line":154,"range":{"start_line":154,"start_character":21,"end_line":154,"end_character":37},"updated":"2017-08-07 10:51:26.000000000","message":"use the constant name defined","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"6dbf09e8eeddec9fb9214ccca3e776a97f837127","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        cnt_low_correlations \u003d 0"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        for correlation_level in aggregated:"},{"line_number":343,"context_line":"            if correlation_level[0] \u003d\u003d \u0027HIGH\u0027:"},{"line_number":344,"context_line":"                cnt_high_correlations \u003d len(correlation_level[1])"},{"line_number":345,"context_line":"            if correlation_level[0] \u003d\u003d \u0027MEDIUM\u0027:"},{"line_number":346,"context_line":"                cnt_med_correlations \u003d len(correlation_level[1])"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf3e73b7_d89428eb","line":343,"range":{"start_line":343,"start_character":39,"end_line":343,"end_character":45},"updated":"2017-08-07 10:51:26.000000000","message":"use the new defined constant by you","commit_id":"2a5bfecb302d9e7b44d083e86541aac723edbdca"}]}
