)]}'
{"vitrage/datasources/__init__.py":[{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"e381a403a4a2d3ca302131158e19ce6ccecd89c3","unresolved":false,"context_lines":[{"line_number":52,"context_line":"]"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"def get_drivers(conf):"},{"line_number":56,"context_line":"    ret \u003d []"},{"line_number":57,"context_line":"    for datasource in conf.datasources.types:"},{"line_number":58,"context_line":"        driver \u003d utils.import_object(conf[datasource].driver, conf)"},{"line_number":59,"context_line":"        try:"},{"line_number":60,"context_line":"            driver.changes_interval \u003d conf[datasource].changes_interval"},{"line_number":61,"context_line":"        except Exception:"},{"line_number":62,"context_line":"            pass"},{"line_number":63,"context_line":"        try:"},{"line_number":64,"context_line":"            driver.update_method \u003d conf[datasource].update_method.lower()"},{"line_number":65,"context_line":"        except Exception:"},{"line_number":66,"context_line":"            pass"},{"line_number":67,"context_line":"        ret.append(driver)"},{"line_number":68,"context_line":"    return ret"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_f46327b0","line":68,"range":{"start_line":55,"start_character":0,"end_line":68,"end_character":14},"updated":"2017-06-01 14:30:19.000000000","message":"Why didn\u0027t you push the method in the PullDataSourceLauncher class?","commit_id":"66c0e83326527ba2de5e905b21f1889fd9179d5a"}],"vitrage/datasources/services.py":[{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"e381a403a4a2d3ca302131158e19ce6ccecd89c3","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        self.launcher \u003d os_service.ProcessLauncher(conf)"},{"line_number":34,"context_line":"        self.services \u003d [ChangesService(d, callback) for d in pull_ds]"},{"line_number":35,"context_line":"        self.services.append(SnapshotsService(conf, all_ds, callback))"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def launch(self):"},{"line_number":38,"context_line":"        # launcher \u003d os_service.ServiceLauncher(self.conf)  # For Debugging"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_f431e7a3","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":70},"updated":"2017-06-01 14:30:19.000000000","message":"Shouldn\u0027t the SnapshotsService be the first in the queue?","commit_id":"66c0e83326527ba2de5e905b21f1889fd9179d5a"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"ebc99983ff04fd085d1a53fc1ae19eba7629364f","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        self.launcher \u003d os_service.ProcessLauncher(conf)"},{"line_number":34,"context_line":"        self.services \u003d [ChangesService(d, callback) for d in pull_ds]"},{"line_number":35,"context_line":"        self.services.append(SnapshotsService(conf, all_ds, callback))"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def launch(self):"},{"line_number":38,"context_line":"        # launcher \u003d os_service.ServiceLauncher(self.conf)  # For Debugging"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_70f0fffd","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":70},"in_reply_to":"df140735_f431e7a3","updated":"2017-06-04 11:43:01.000000000","message":"Don\u0027t think the order is meaningful","commit_id":"66c0e83326527ba2de5e905b21f1889fd9179d5a"}],"vitrage/entity_graph/processor/processor.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"50312fa6ffe670a5f8477de62e70abaa08695693","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def process_events(self, events):"},{"line_number":52,"context_line":"        for event in events:"},{"line_number":53,"context_line":"            if event is not None:"},{"line_number":54,"context_line":"                self.process_event(event)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def process_event(self, event):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff0f0b1f_e24d2cc4","line":53,"range":{"start_line":53,"start_character":11,"end_line":53,"end_character":33},"updated":"2017-05-25 07:46:47.000000000","message":"if event:","commit_id":"9b08c987977e7bd9569fb36174b622a7dc379488"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"f6555b6f561f355c213abfda39bfa022b6ba3071","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def process_events(self, events):"},{"line_number":52,"context_line":"        for event in events:"},{"line_number":53,"context_line":"            if event is not None:"},{"line_number":54,"context_line":"                self.process_event(event)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def process_event(self, event):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff0f0b1f_82367002","line":53,"range":{"start_line":53,"start_character":11,"end_line":53,"end_character":33},"in_reply_to":"ff0f0b1f_e24d2cc4","updated":"2017-05-25 07:55:07.000000000","message":"Done","commit_id":"9b08c987977e7bd9569fb36174b622a7dc379488"}],"vitrage/entity_graph/service.py":[{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"e381a403a4a2d3ca302131158e19ce6ccecd89c3","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        super(VitrageGraphService, self).start()"},{"line_number":59,"context_line":"        self.tg.add_timer(0.1, self._process_event_non_blocking)"},{"line_number":60,"context_line":"        self.listener.start()"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        LOG.info(\"Vitrage Graph Service - Started!\")"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_f4bb27c1","line":60,"range":{"start_line":60,"start_character":8,"end_line":60,"end_character":29},"updated":"2017-06-01 14:30:19.000000000","message":"shouldn\u0027t you stop the listener in the stop method?","commit_id":"66c0e83326527ba2de5e905b21f1889fd9179d5a"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"ebc99983ff04fd085d1a53fc1ae19eba7629364f","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        super(VitrageGraphService, self).start()"},{"line_number":59,"context_line":"        self.tg.add_timer(0.1, self._process_event_non_blocking)"},{"line_number":60,"context_line":"        self.listener.start()"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        LOG.info(\"Vitrage Graph Service - Started!\")"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_b0ea170c","line":60,"range":{"start_line":60,"start_character":8,"end_line":60,"end_character":29},"in_reply_to":"df140735_f4bb27c1","updated":"2017-06-04 11:43:01.000000000","message":"This wasn\u0027t done in the original Listener Service","commit_id":"66c0e83326527ba2de5e905b21f1889fd9179d5a"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"e381a403a4a2d3ca302131158e19ce6ccecd89c3","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        return ret"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def info(self, ctxt, publisher_id, event_type, payload, metadata):"},{"line_number":118,"context_line":"        for event_string in self.callbacks_by_events:"},{"line_number":119,"context_line":"            if str(event_type) \u003d\u003d event_string:"},{"line_number":120,"context_line":"                callbacks \u003d self.callbacks_by_events[event_string]"},{"line_number":121,"context_line":"                enriched_events \u003d [callback(payload, event_type)"},{"line_number":122,"context_line":"                                   for callback in callbacks]"},{"line_number":123,"context_line":"                self.process_events_callback(enriched_events)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_14633b44","line":123,"range":{"start_line":118,"start_character":8,"end_line":123,"end_character":61},"updated":"2017-06-01 14:30:19.000000000","message":"I dont quite understand how it works. \nWhen event arrives then the process_events method called (but you have only 1 event at a time). When another event arrives then it is called again.\nWhy do you need the process_events method?","commit_id":"66c0e83326527ba2de5e905b21f1889fd9179d5a"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"ebc99983ff04fd085d1a53fc1ae19eba7629364f","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        return ret"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def info(self, ctxt, publisher_id, event_type, payload, metadata):"},{"line_number":118,"context_line":"        for event_string in self.callbacks_by_events:"},{"line_number":119,"context_line":"            if str(event_type) \u003d\u003d event_string:"},{"line_number":120,"context_line":"                callbacks \u003d self.callbacks_by_events[event_string]"},{"line_number":121,"context_line":"                enriched_events \u003d [callback(payload, event_type)"},{"line_number":122,"context_line":"                                   for callback in callbacks]"},{"line_number":123,"context_line":"                self.process_events_callback(enriched_events)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_f0e3ef32","line":123,"range":{"start_line":118,"start_character":8,"end_line":123,"end_character":61},"in_reply_to":"df140735_14633b44","updated":"2017-06-04 11:43:01.000000000","message":"It may be that a single received event be handled by several drivers hence creating multiple enriched_events.","commit_id":"66c0e83326527ba2de5e905b21f1889fd9179d5a"}],"vitrage/messaging.py":[{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"e381a403a4a2d3ca302131158e19ce6ccecd89c3","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"def get_notification_listener(transport, targets, endpoints,"},{"line_number":52,"context_line":"                              allow_requeue\u003dTrue):"},{"line_number":53,"context_line":"    \"\"\"Return a configured oslo_messaging notification listener.\"\"\""},{"line_number":54,"context_line":"    return oslo_messaging.get_notification_listener("},{"line_number":55,"context_line":"        transport, targets, endpoints, executor\u003d\u0027blocking\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_4eaaaf85","line":52,"range":{"start_line":52,"start_character":43,"end_line":52,"end_character":48},"updated":"2017-06-01 14:30:19.000000000","message":"Will this be requeued forever?","commit_id":"66c0e83326527ba2de5e905b21f1889fd9179d5a"}],"vitrage/tests/unit/datasources/test_datasource_update_method.py":[{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"e381a403a4a2d3ca302131158e19ce6ccecd89c3","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                                 (NOVA_HOST_DATASOURCE,"},{"line_number":172,"context_line":"                                  ZABBIX_DATASOURCE_NONE))"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def test_datasource_update_method_push(self):"},{"line_number":175,"context_line":"        drivers \u003d {driver: utils.import_class(self.conf[driver].driver)"},{"line_number":176,"context_line":"                   for driver in self.conf.datasources.types}"},{"line_number":177,"context_line":"        push_drivers \u003d ListenerService._get_push_drivers("},{"line_number":178,"context_line":"            drivers\u003ddrivers, conf\u003dself.conf)"},{"line_number":179,"context_line":"        self.assertSequenceEqual(set(push_drivers), {utils.import_class("},{"line_number":180,"context_line":"            self.conf[NOVA_INSTANCE_DATASOURCE].driver), utils.import_class("},{"line_number":181,"context_line":"            self.conf[ZABBIX_DATASOURCE_PUSH].driver)})"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def test_datasource_update_method_pull(self):"},{"line_number":184,"context_line":"        pull_drivers \u003d tuple(Launcher._get_pull_datasources(self.conf))"},{"line_number":185,"context_line":"        self.assertSequenceEqual(pull_drivers,"},{"line_number":186,"context_line":"                                 (NAGIOS_DATASOURCE,"},{"line_number":187,"context_line":"                                  ZABBIX_DATASOURCE_PULL))"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def test_datasource_update_method_pull_with_no_changes_interval(self):"},{"line_number":190,"context_line":"        pull_drivers \u003d tuple(Launcher._get_pull_datasources(self.conf))"},{"line_number":191,"context_line":"        self.assertNotIn(ZABBIX_DATASOURCE_PULL_NO_INTERVAL, pull_drivers)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def test_datasources_notification_topic(self):"},{"line_number":194,"context_line":"        self.assertEqual(self.conf.datasources.notification_topic,"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_74cb9771","side":"PARENT","line":191,"range":{"start_line":174,"start_character":4,"end_line":191,"end_character":74},"updated":"2017-06-01 14:30:19.000000000","message":"You should rewrite those tests instead of removing them.","commit_id":"8fa4d751e42063537028d2e94a5196548f99f9a8"}]}
