)]}'
{"devstack/settings":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"c66e6ec7aae5f4e8941b37426bd446d0d695c3ca","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# machine_learning"},{"line_number":11,"context_line":"enable_service vitrage-ml"},{"line_number":12,"context_line":"# Persistor"},{"line_number":13,"context_line":"enable_service vitrage_persistor"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"# Default directories"},{"line_number":16,"context_line":"VITRAGE_DIR\u003d$DEST/vitrage"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"ff82abbf_f817eeec","line":13,"range":{"start_line":13,"start_character":15,"end_line":13,"end_character":32},"updated":"2017-11-20 13:28:01.000000000","message":"vitrage-persistor","commit_id":"14b2570bbb653777d44229ea8d486ebac076191c"}],"vitrage/cli/persistor.py":[{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"b9e96e206b82065366d7ee93f358f4a5c83caf7d","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def main():"},{"line_number":28,"context_line":"    print(VITRAGE_TITLE)"},{"line_number":29,"context_line":"    conf \u003d service.prepare_service()"},{"line_number":30,"context_line":"    if not conf.persistor.persistor_enabled:"},{"line_number":31,"context_line":"        LOG.info(\"Vitrage Persistor Service is disabled\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_023b4a38","line":28,"updated":"2017-11-20 02:29:03.000000000","message":"Why we use print instead of LOG here?","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"299d92ea5993756845fe6e0ce2ee49ccf8e1d4d7","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def main():"},{"line_number":28,"context_line":"    print(VITRAGE_TITLE)"},{"line_number":29,"context_line":"    conf \u003d service.prepare_service()"},{"line_number":30,"context_line":"    if not conf.persistor.persistor_enabled:"},{"line_number":31,"context_line":"        LOG.info(\"Vitrage Persistor Service is disabled\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_71dc6218","line":28,"in_reply_to":"ff82abbf_023b4a38","updated":"2017-11-20 10:05:05.000000000","message":"Because this is the way it used in other projects.\n\nnote using log will cause ugly indentation","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"c887e107e2927be9b113fa1d60c6574ac69fbaf8","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def main():"},{"line_number":28,"context_line":"    print(VITRAGE_TITLE)"},{"line_number":29,"context_line":"    conf \u003d service.prepare_service()"},{"line_number":30,"context_line":"    if not conf.persistor.persistor_enabled:"},{"line_number":31,"context_line":"        LOG.info(\"Vitrage Persistor Service is disabled\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_9c3b3d9b","line":28,"in_reply_to":"ff82abbf_023b4a38","updated":"2017-11-20 08:36:27.000000000","message":"I think it\u0027s copy-paster from other services. :)","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"}],"vitrage/persistor/service.py":[{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"d08ee0f3e8056300bb9dfd0fef613da7bc4f5469","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.db_connection \u003d db_connection"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def info(self, ctxt, publisher_id, event_type, payload, metadata):"},{"line_number":67,"context_line":"        LOG.info(\u0027Vitrage Event Info: payload %s\u0027, payload)"},{"line_number":68,"context_line":"        self.process_event(payload)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def process_event(self, data):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_df97a7eb","line":67,"range":{"start_line":67,"start_character":12,"end_line":67,"end_character":16},"updated":"2017-11-19 13:52:46.000000000","message":"should be debug level instead of info","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"b9e96e206b82065366d7ee93f358f4a5c83caf7d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.db_connection \u003d db_connection"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def info(self, ctxt, publisher_id, event_type, payload, metadata):"},{"line_number":67,"context_line":"        LOG.info(\u0027Vitrage Event Info: payload %s\u0027, payload)"},{"line_number":68,"context_line":"        self.process_event(payload)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def process_event(self, data):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_621336ba","line":67,"range":{"start_line":67,"start_character":12,"end_line":67,"end_character":16},"in_reply_to":"1f485f77_df97a7eb","updated":"2017-11-20 02:29:03.000000000","message":"+1 for debug level","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"299d92ea5993756845fe6e0ce2ee49ccf8e1d4d7","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.db_connection \u003d db_connection"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def info(self, ctxt, publisher_id, event_type, payload, metadata):"},{"line_number":67,"context_line":"        LOG.info(\u0027Vitrage Event Info: payload %s\u0027, payload)"},{"line_number":68,"context_line":"        self.process_event(payload)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def process_event(self, data):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_962c7c9a","line":67,"range":{"start_line":67,"start_character":12,"end_line":67,"end_character":16},"in_reply_to":"ff82abbf_621336ba","updated":"2017-11-20 10:05:05.000000000","message":"Done","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"d08ee0f3e8056300bb9dfd0fef613da7bc4f5469","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def process_event(self, data):"},{"line_number":71,"context_line":"        \"\"\":param data: Serialized to a JSON formatted ``str`` \"\"\""},{"line_number":72,"context_line":"        if data.get(DSProps.EVENT_TYPE) \u003d\u003d GraphAction.END_MESSAGE:"},{"line_number":73,"context_line":"            # TODO(mnajjar): figure out what todo in end msg"},{"line_number":74,"context_line":"            LOG.info(\u0027end_message is being ignored\u0027)"},{"line_number":75,"context_line":"            return"},{"line_number":76,"context_line":"        collector_timestamp \u003d \\"},{"line_number":77,"context_line":"            dateutil.parser.parse(data.get(DSProps.SAMPLE_DATE))"},{"line_number":78,"context_line":"        event_row \u003d models.Event(payload\u003djsonutils.dumps(data),"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_7fb9d376","line":75,"range":{"start_line":73,"start_character":0,"end_line":75,"end_character":18},"updated":"2017-11-19 13:52:46.000000000","message":"I think it is fine to ignore the end messages. so maybe remove the todo.","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"299d92ea5993756845fe6e0ce2ee49ccf8e1d4d7","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def process_event(self, data):"},{"line_number":71,"context_line":"        \"\"\":param data: Serialized to a JSON formatted ``str`` \"\"\""},{"line_number":72,"context_line":"        if data.get(DSProps.EVENT_TYPE) \u003d\u003d GraphAction.END_MESSAGE:"},{"line_number":73,"context_line":"            # TODO(mnajjar): figure out what todo in end msg"},{"line_number":74,"context_line":"            LOG.info(\u0027end_message is being ignored\u0027)"},{"line_number":75,"context_line":"            return"},{"line_number":76,"context_line":"        collector_timestamp \u003d \\"},{"line_number":77,"context_line":"            dateutil.parser.parse(data.get(DSProps.SAMPLE_DATE))"},{"line_number":78,"context_line":"        event_row \u003d models.Event(payload\u003djsonutils.dumps(data),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_f63f08b3","line":75,"range":{"start_line":73,"start_character":0,"end_line":75,"end_character":18},"in_reply_to":"1f485f77_7fb9d376","updated":"2017-11-20 10:05:05.000000000","message":"Done","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"943b0a786cc8283dc3b04fedb2d5b11d9b4e3b21","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def process_event(self, data):"},{"line_number":71,"context_line":"        \"\"\":param data: Serialized to a JSON formatted ``str`` \"\"\""},{"line_number":72,"context_line":"        if data.get(DSProps.EVENT_TYPE) \u003d\u003d GraphAction.END_MESSAGE:"},{"line_number":73,"context_line":"            LOG.info(\u0027Ignoring Event %s\u0027, data.get(DSProps.EVENT_TYPE))"},{"line_number":74,"context_line":"            return"},{"line_number":75,"context_line":"        LOG.info(\u0027Storing Event %s %s\u0027, data.get(DSProps.ENTITY_TYPE),"},{"line_number":76,"context_line":"                 data.get(DSProps.DATASOURCE_ACTION))"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff82abbf_4d5a734f","line":73,"range":{"start_line":73,"start_character":16,"end_line":73,"end_character":20},"updated":"2017-11-23 15:26:26.000000000","message":"I think it should be debug. Also: please replace \u0027ignoring\u0027 with \u0027not storing\u0027. Ignoring could mean other things.","commit_id":"c743326f5666ae2ab55049e0342967fabaf87c61"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"185d04036a8056503e5065a6aa23a1a045a8ec75","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def process_event(self, data):"},{"line_number":71,"context_line":"        \"\"\":param data: Serialized to a JSON formatted ``str`` \"\"\""},{"line_number":72,"context_line":"        if data.get(DSProps.EVENT_TYPE) \u003d\u003d GraphAction.END_MESSAGE:"},{"line_number":73,"context_line":"            LOG.info(\u0027Ignoring Event %s\u0027, data.get(DSProps.EVENT_TYPE))"},{"line_number":74,"context_line":"            return"},{"line_number":75,"context_line":"        LOG.info(\u0027Storing Event %s %s\u0027, data.get(DSProps.ENTITY_TYPE),"},{"line_number":76,"context_line":"                 data.get(DSProps.DATASOURCE_ACTION))"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff82abbf_b516da54","line":73,"range":{"start_line":73,"start_character":16,"end_line":73,"end_character":20},"in_reply_to":"ff82abbf_4d5a734f","updated":"2017-11-24 06:51:37.000000000","message":"Could be \"Skipped storing...\"","commit_id":"c743326f5666ae2ab55049e0342967fabaf87c61"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"a5e38ce11b2c83d98af01f43f0f6f6477a9fd77c","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def process_event(self, data):"},{"line_number":71,"context_line":"        \"\"\":param data: Serialized to a JSON formatted ``str`` \"\"\""},{"line_number":72,"context_line":"        if data.get(DSProps.EVENT_TYPE) \u003d\u003d GraphAction.END_MESSAGE:"},{"line_number":73,"context_line":"            LOG.info(\u0027Ignoring Event %s\u0027, data.get(DSProps.EVENT_TYPE))"},{"line_number":74,"context_line":"            return"},{"line_number":75,"context_line":"        LOG.info(\u0027Storing Event %s %s\u0027, data.get(DSProps.ENTITY_TYPE),"},{"line_number":76,"context_line":"                 data.get(DSProps.DATASOURCE_ACTION))"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff82abbf_e7757fcc","line":73,"range":{"start_line":73,"start_character":16,"end_line":73,"end_character":20},"in_reply_to":"ff82abbf_b516da54","updated":"2017-11-26 15:15:37.000000000","message":"[the following replay] +\nend message occurs after every get-all (which in not so common)","commit_id":"c743326f5666ae2ab55049e0342967fabaf87c61"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"943b0a786cc8283dc3b04fedb2d5b11d9b4e3b21","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        if data.get(DSProps.EVENT_TYPE) \u003d\u003d GraphAction.END_MESSAGE:"},{"line_number":73,"context_line":"            LOG.info(\u0027Ignoring Event %s\u0027, data.get(DSProps.EVENT_TYPE))"},{"line_number":74,"context_line":"            return"},{"line_number":75,"context_line":"        LOG.info(\u0027Storing Event %s %s\u0027, data.get(DSProps.ENTITY_TYPE),"},{"line_number":76,"context_line":"                 data.get(DSProps.DATASOURCE_ACTION))"},{"line_number":77,"context_line":"        collector_timestamp \u003d \\"},{"line_number":78,"context_line":"            dateutil.parser.parse(data.get(DSProps.SAMPLE_DATE))"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff82abbf_2d35aff7","line":75,"range":{"start_line":75,"start_character":12,"end_line":75,"end_character":16},"updated":"2017-11-23 15:26:26.000000000","message":"Should be debug","commit_id":"c743326f5666ae2ab55049e0342967fabaf87c61"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"185d04036a8056503e5065a6aa23a1a045a8ec75","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        if data.get(DSProps.EVENT_TYPE) \u003d\u003d GraphAction.END_MESSAGE:"},{"line_number":73,"context_line":"            LOG.info(\u0027Ignoring Event %s\u0027, data.get(DSProps.EVENT_TYPE))"},{"line_number":74,"context_line":"            return"},{"line_number":75,"context_line":"        LOG.info(\u0027Storing Event %s %s\u0027, data.get(DSProps.ENTITY_TYPE),"},{"line_number":76,"context_line":"                 data.get(DSProps.DATASOURCE_ACTION))"},{"line_number":77,"context_line":"        collector_timestamp \u003d \\"},{"line_number":78,"context_line":"            dateutil.parser.parse(data.get(DSProps.SAMPLE_DATE))"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff82abbf_550f4e36","line":75,"range":{"start_line":75,"start_character":12,"end_line":75,"end_character":16},"in_reply_to":"ff82abbf_2d35aff7","updated":"2017-11-24 06:51:37.000000000","message":"+1 for debug","commit_id":"c743326f5666ae2ab55049e0342967fabaf87c61"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"a5e38ce11b2c83d98af01f43f0f6f6477a9fd77c","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        if data.get(DSProps.EVENT_TYPE) \u003d\u003d GraphAction.END_MESSAGE:"},{"line_number":73,"context_line":"            LOG.info(\u0027Ignoring Event %s\u0027, data.get(DSProps.EVENT_TYPE))"},{"line_number":74,"context_line":"            return"},{"line_number":75,"context_line":"        LOG.info(\u0027Storing Event %s %s\u0027, data.get(DSProps.ENTITY_TYPE),"},{"line_number":76,"context_line":"                 data.get(DSProps.DATASOURCE_ACTION))"},{"line_number":77,"context_line":"        collector_timestamp \u003d \\"},{"line_number":78,"context_line":"            dateutil.parser.parse(data.get(DSProps.SAMPLE_DATE))"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff82abbf_877ef3ac","line":75,"range":{"start_line":75,"start_character":12,"end_line":75,"end_character":16},"in_reply_to":"ff82abbf_550f4e36","updated":"2017-11-26 15:15:37.000000000","message":"I decided to remove this line because I print to debug log the payload of the event","commit_id":"c743326f5666ae2ab55049e0342967fabaf87c61"}],"vitrage/storage/base.py":[{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"d08ee0f3e8056300bb9dfd0fef613da7bc4f5469","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        \"\"\"Yields a lists of active actions that match filters."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        :rtype: list of vitrage.storage.sqlalchemy.models.ActiveAction"},{"line_number":78,"context_line":"        \"\"\""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @abc.abstractmethod"},{"line_number":81,"context_line":"    def delete(self,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_1faadf17","line":78,"range":{"start_line":78,"start_character":7,"end_line":78,"end_character":11},"updated":"2017-11-19 13:52:46.000000000","message":"Why was the NotImplementError removed?","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"b9e96e206b82065366d7ee93f358f4a5c83caf7d","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        \"\"\"Yields a lists of active actions that match filters."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        :rtype: list of vitrage.storage.sqlalchemy.models.ActiveAction"},{"line_number":78,"context_line":"        \"\"\""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @abc.abstractmethod"},{"line_number":81,"context_line":"    def delete(self,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_e2266617","line":78,"range":{"start_line":78,"start_character":7,"end_line":78,"end_character":11},"in_reply_to":"1f485f77_1faadf17","updated":"2017-11-20 02:29:03.000000000","message":"+1 with the same question","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"299d92ea5993756845fe6e0ce2ee49ccf8e1d4d7","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        \"\"\"Yields a lists of active actions that match filters."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        :rtype: list of vitrage.storage.sqlalchemy.models.ActiveAction"},{"line_number":78,"context_line":"        \"\"\""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @abc.abstractmethod"},{"line_number":81,"context_line":"    def delete(self,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_3c9eb107","line":78,"range":{"start_line":78,"start_character":7,"end_line":78,"end_character":11},"in_reply_to":"1f485f77_1faadf17","updated":"2017-11-20 10:05:05.000000000","message":"Done","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"d08ee0f3e8056300bb9dfd0fef613da7bc4f5469","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        raise NotImplementedError(\u0027update event not implemented\u0027)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def query(self,"},{"line_number":111,"context_line":"              id\u003dNone,"},{"line_number":112,"context_line":"              collector_timestamp\u003dNone,"},{"line_number":113,"context_line":"              payload\u003dNone,"},{"line_number":114,"context_line":"              gt_collector_timestamp\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_9f6b6fef","line":111,"range":{"start_line":111,"start_character":14,"end_line":111,"end_character":16},"updated":"2017-11-19 13:52:46.000000000","message":"id is a reserved word, can rename to id_","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"299d92ea5993756845fe6e0ce2ee49ccf8e1d4d7","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        raise NotImplementedError(\u0027update event not implemented\u0027)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def query(self,"},{"line_number":111,"context_line":"              id\u003dNone,"},{"line_number":112,"context_line":"              collector_timestamp\u003dNone,"},{"line_number":113,"context_line":"              payload\u003dNone,"},{"line_number":114,"context_line":"              gt_collector_timestamp\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_9cf49d5d","line":111,"range":{"start_line":111,"start_character":14,"end_line":111,"end_character":16},"in_reply_to":"1f485f77_9f6b6fef","updated":"2017-11-20 10:05:05.000000000","message":"Done","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"d08ee0f3e8056300bb9dfd0fef613da7bc4f5469","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        raise NotImplementedError(\u0027query event not implemented\u0027)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def delete(self,"},{"line_number":123,"context_line":"               id\u003dNone,"},{"line_number":124,"context_line":"               collector_timestamp\u003dNone,"},{"line_number":125,"context_line":"               payload\u003dNone,"},{"line_number":126,"context_line":"               gt_collector_timestamp\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_5f7977c5","line":123,"range":{"start_line":123,"start_character":15,"end_line":123,"end_character":17},"updated":"2017-11-19 13:52:46.000000000","message":"same","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"299d92ea5993756845fe6e0ce2ee49ccf8e1d4d7","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        raise NotImplementedError(\u0027query event not implemented\u0027)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def delete(self,"},{"line_number":123,"context_line":"               id\u003dNone,"},{"line_number":124,"context_line":"               collector_timestamp\u003dNone,"},{"line_number":125,"context_line":"               payload\u003dNone,"},{"line_number":126,"context_line":"               gt_collector_timestamp\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_5cee1589","line":123,"range":{"start_line":123,"start_character":15,"end_line":123,"end_character":17},"in_reply_to":"1f485f77_5f7977c5","updated":"2017-11-20 10:05:05.000000000","message":"Done","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"943b0a786cc8283dc3b04fedb2d5b11d9b4e3b21","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        :rtype: list of vitrage.storage.sqlalchemy.models.Event"},{"line_number":120,"context_line":"        \"\"\""},{"line_number":121,"context_line":"        raise NotImplementedError(\u0027query event not implemented\u0027)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def delete(self,"},{"line_number":124,"context_line":"               event_id\u003dNone,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff82abbf_ad20dfb1","line":121,"range":{"start_line":121,"start_character":41,"end_line":121,"end_character":46},"updated":"2017-11-23 15:26:26.000000000","message":"events","commit_id":"c743326f5666ae2ab55049e0342967fabaf87c61"}],"vitrage/storage/impl_sqlalchemy.py":[{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"d08ee0f3e8056300bb9dfd0fef613da7bc4f5469","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            session.merge(event)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def query(self,"},{"line_number":106,"context_line":"              id\u003dNone,"},{"line_number":107,"context_line":"              collector_timestamp\u003dNone,"},{"line_number":108,"context_line":"              payload\u003dNone,"},{"line_number":109,"context_line":"              gt_collector_timestamp\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_df4e8795","line":106,"range":{"start_line":106,"start_character":14,"end_line":106,"end_character":16},"updated":"2017-11-19 13:52:46.000000000","message":"is is a reserved word","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"299d92ea5993756845fe6e0ce2ee49ccf8e1d4d7","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            session.merge(event)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def query(self,"},{"line_number":106,"context_line":"              id\u003dNone,"},{"line_number":107,"context_line":"              collector_timestamp\u003dNone,"},{"line_number":108,"context_line":"              payload\u003dNone,"},{"line_number":109,"context_line":"              gt_collector_timestamp\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_bc588156","line":106,"range":{"start_line":106,"start_character":14,"end_line":106,"end_character":16},"in_reply_to":"1f485f77_df4e8795","updated":"2017-11-20 10:05:05.000000000","message":"Done","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"d08ee0f3e8056300bb9dfd0fef613da7bc4f5469","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        return query.all()"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def delete(self,"},{"line_number":128,"context_line":"               id\u003dNone,"},{"line_number":129,"context_line":"               collector_timestamp\u003dNone,"},{"line_number":130,"context_line":"               payload\u003dNone,"},{"line_number":131,"context_line":"               gt_collector_timestamp\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_9f448f75","line":128,"range":{"start_line":128,"start_character":15,"end_line":128,"end_character":17},"updated":"2017-11-19 13:52:46.000000000","message":"same","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"299d92ea5993756845fe6e0ce2ee49ccf8e1d4d7","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        return query.all()"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def delete(self,"},{"line_number":128,"context_line":"               id\u003dNone,"},{"line_number":129,"context_line":"               collector_timestamp\u003dNone,"},{"line_number":130,"context_line":"               payload\u003dNone,"},{"line_number":131,"context_line":"               gt_collector_timestamp\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_1c5c0d4a","line":128,"range":{"start_line":128,"start_character":15,"end_line":128,"end_character":17},"in_reply_to":"1f485f77_9f448f75","updated":"2017-11-20 10:05:05.000000000","message":"Done","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"d08ee0f3e8056300bb9dfd0fef613da7bc4f5469","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            collector_timestamp\u003dcollector_timestamp,"},{"line_number":137,"context_line":"            payload\u003dpayload)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        if gt_collector_timestamp is not None:"},{"line_number":140,"context_line":"            query \u003d query.filter(models.Event.collector_timestamp \u003e\u003d"},{"line_number":141,"context_line":"                                 gt_collector_timestamp)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        if lt_collector_timestamp is not None:"},{"line_number":144,"context_line":"            query \u003d query.filter(models.Event.collector_timestamp \u003c\u003d"},{"line_number":145,"context_line":"                                 lt_collector_timestamp)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        query.delete()"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_1f589f53","line":145,"range":{"start_line":139,"start_character":0,"end_line":145,"end_character":56},"updated":"2017-11-19 13:52:46.000000000","message":"Duplicate code, extract to a method","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"299d92ea5993756845fe6e0ce2ee49ccf8e1d4d7","unresolved":false,"context_lines":[{"line_number":136,"context_line":"            collector_timestamp\u003dcollector_timestamp,"},{"line_number":137,"context_line":"            payload\u003dpayload)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        if gt_collector_timestamp is not None:"},{"line_number":140,"context_line":"            query \u003d query.filter(models.Event.collector_timestamp \u003e\u003d"},{"line_number":141,"context_line":"                                 gt_collector_timestamp)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        if lt_collector_timestamp is not None:"},{"line_number":144,"context_line":"            query \u003d query.filter(models.Event.collector_timestamp \u003c\u003d"},{"line_number":145,"context_line":"                                 lt_collector_timestamp)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        query.delete()"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_fc492932","line":145,"range":{"start_line":139,"start_character":0,"end_line":145,"end_character":56},"in_reply_to":"1f485f77_1f589f53","updated":"2017-11-20 10:05:05.000000000","message":"Done","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"}],"vitrage/storage/sqlalchemy/models.py":[{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"d08ee0f3e8056300bb9dfd0fef613da7bc4f5469","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    __tablename__ \u003d \u0027events\u0027"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    id \u003d Column(INTEGER, primary_key\u003dTrue, nullable\u003dFalse, autoincrement\u003dTrue)"},{"line_number":47,"context_line":"    collector_timestamp \u003d Column(DateTime, index\u003dTrue, nullable\u003dFalse)"},{"line_number":48,"context_line":"    payload \u003d Column(Text, nullable\u003dFalse)"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_df332713","line":46,"range":{"start_line":46,"start_character":4,"end_line":46,"end_character":6},"updated":"2017-11-19 13:52:46.000000000","message":"reserved word","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"},{"author":{"_account_id":26339,"name":"Muhamad Najjar","email":"muhamad.najjar@nokia.com","username":"7mode3294"},"change_message_id":"299d92ea5993756845fe6e0ce2ee49ccf8e1d4d7","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    __tablename__ \u003d \u0027events\u0027"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    id \u003d Column(INTEGER, primary_key\u003dTrue, nullable\u003dFalse, autoincrement\u003dTrue)"},{"line_number":47,"context_line":"    collector_timestamp \u003d Column(DateTime, index\u003dTrue, nullable\u003dFalse)"},{"line_number":48,"context_line":"    payload \u003d Column(Text, nullable\u003dFalse)"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_fc0cc943","line":46,"range":{"start_line":46,"start_character":4,"end_line":46,"end_character":6},"in_reply_to":"1f485f77_df332713","updated":"2017-11-20 10:05:05.000000000","message":"Done","commit_id":"84970d60d8f0cc6bee28e43458dc62093e48bcdf"}],"vitrage_tempest_tests/tests/database/test_persistor.py":[{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"eccea0b8bec35344ee9adb7ea4a526096747541f","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class TestEvents(BaseVitrageTempest):"},{"line_number":29,"context_line":"    \"\"\"Test class for Vitrage persisror service\"\"\""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_023edf28","line":27,"updated":"2017-11-20 12:06:45.000000000","message":"Throughout this file, you use event[\u0027field_name\u0027]\nbut the event is an instance of class Event, so please change this usage to use the member.\nevent.payload\nevent.collector_timestamp\nevent.event_id","commit_id":"14b2570bbb653777d44229ea8d486ebac076191c"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"6a8b6f3ed25256b7a7b5689ef7dd9db33caada37","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        for event in writen_events:"},{"line_number":45,"context_line":"            event[\u0027payload\u0027] \u003d jsonutils.loads(event[\u0027payload\u0027])"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        if self._contains_compute_instance_create_event(writen_events) is None:"},{"line_number":48,"context_line":"            return False, writen_events"},{"line_number":49,"context_line":"        return True, writen_events"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_4245c76f","line":47,"range":{"start_line":47,"start_character":11,"end_line":47,"end_character":78},"updated":"2017-11-20 12:16:53.000000000","message":"if not _get...","commit_id":"14b2570bbb653777d44229ea8d486ebac076191c"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"6a8b6f3ed25256b7a7b5689ef7dd9db33caada37","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"            # Calculate expected results"},{"line_number":96,"context_line":"            writen_events \u003d \\"},{"line_number":97,"context_line":"                wait_for_answer(30, 2,"},{"line_number":98,"context_line":"                                self._wait_for_compute_create_instance_event,"},{"line_number":99,"context_line":"                                time_before_action\u003dtime_before_action)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_8262ef15","line":97,"range":{"start_line":97,"start_character":32,"end_line":97,"end_character":37},"updated":"2017-11-20 12:16:53.000000000","message":"write the parameter name it will be more readable to know what is 2 and what is 30","commit_id":"14b2570bbb653777d44229ea8d486ebac076191c"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"1d05846780b5682a9659593b839e8eb669c1f50d","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"            # Calculate expected results"},{"line_number":96,"context_line":"            writen_events \u003d \\"},{"line_number":97,"context_line":"                wait_for_answer(30, 2,"},{"line_number":98,"context_line":"                                self._wait_for_compute_create_instance_event,"},{"line_number":99,"context_line":"                                time_before_action\u003dtime_before_action)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_e1888772","line":97,"range":{"start_line":97,"start_character":32,"end_line":97,"end_character":37},"in_reply_to":"ff82abbf_8262ef15","updated":"2017-11-21 01:42:36.000000000","message":"+1","commit_id":"14b2570bbb653777d44229ea8d486ebac076191c"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"234062274990597d4a712678f54c864557be77bb","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"            # Test Assertions"},{"line_number":102,"context_line":"            neutron_port_create_event \u003d \\"},{"line_number":103,"context_line":"                self._contains_neutron_port_create_event(writen_events)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"            self.assertIsNotNone(neutron_port_create_event,"},{"line_number":106,"context_line":"                                 \"port.create.end event is not writen to db\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_62132b0f","line":103,"range":{"start_line":103,"start_character":21,"end_line":103,"end_character":56},"updated":"2017-11-20 11:57:22.000000000","message":"change the name to _get..","commit_id":"14b2570bbb653777d44229ea8d486ebac076191c"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"234062274990597d4a712678f54c864557be77bb","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                neutron_port_create_event[\u0027payload\u0027][\u0027port\u0027][\u0027device_id\u0027]"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"            neutron_port_update_event \u003d \\"},{"line_number":112,"context_line":"                self._contains_neutron_port_update_event(writen_events,"},{"line_number":113,"context_line":"                                                         instance_id)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"            self.assertIsNotNone(neutron_port_update_event,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_82042fc8","line":112,"range":{"start_line":112,"start_character":21,"end_line":112,"end_character":56},"updated":"2017-11-20 11:57:22.000000000","message":"change the name to _get..","commit_id":"14b2570bbb653777d44229ea8d486ebac076191c"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"234062274990597d4a712678f54c864557be77bb","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                                 \"port.update.end event is not writen to db\")"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"            compute_instance_create_event \u003d \\"},{"line_number":119,"context_line":"                self._contains_compute_instance_create_event(writen_events)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"            self.assertIsNotNone(compute_instance_create_event,"},{"line_number":122,"context_line":"                                 \"compute.instance.create.end event is not \""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_e2697b8b","line":119,"range":{"start_line":119,"start_character":21,"end_line":119,"end_character":30},"updated":"2017-11-20 11:57:22.000000000","message":"change the name to _get...","commit_id":"14b2570bbb653777d44229ea8d486ebac076191c"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"234062274990597d4a712678f54c864557be77bb","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                                 \"writen to db\")"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"            # Check correct timestamp order"},{"line_number":126,"context_line":"            self.assertEqual("},{"line_number":127,"context_line":"                True,"},{"line_number":128,"context_line":"                neutron_port_create_event[\"collector_timestamp\"] \u003c"},{"line_number":129,"context_line":"                neutron_port_update_event[\"collector_timestamp\"] \u003c"},{"line_number":130,"context_line":"                compute_instance_create_event[\"collector_timestamp\"],"},{"line_number":131,"context_line":"                \"Timestamp order is wrong\")"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"            # Check correct id order"},{"line_number":134,"context_line":"            self.assertEqual("},{"line_number":135,"context_line":"                True,"},{"line_number":136,"context_line":"                neutron_port_create_event[\"event_id\"] \u003c"},{"line_number":137,"context_line":"                neutron_port_update_event[\"event_id\"] \u003c"},{"line_number":138,"context_line":"                compute_instance_create_event[\"event_id\"],"},{"line_number":139,"context_line":"                \"Id order is wrong\")"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff82abbf_0221ff4d","line":138,"range":{"start_line":126,"start_character":11,"end_line":138,"end_character":58},"updated":"2017-11-20 11:57:22.000000000","message":"the test will clearer if you sort the events and compared them to the order expected this way when assertion fails you will know what when wrong","commit_id":"14b2570bbb653777d44229ea8d486ebac076191c"}]}
