)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"9eee255a0f6a159f6739b179c85579b9f9cc371d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add snmp_parsing service"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Parsing part and devstack deploy part will be added"},{"line_number":10,"context_line":"lator, with unit tests and tempest tests."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I4c3afd735a8301c215cfc50f970ecde6b2a04c6e"},{"line_number":13,"context_line":"Signed-off-by: xupeipei \u003cxu.peipei1@zte.com.cn\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"df87a7cf_17e46c3b","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":5},"updated":"2017-12-07 02:26:32.000000000","message":"later?","commit_id":"87b3dcc9b2dc89982920bdf3a41153619c9ba27c"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"4fa7aaa633d4c1bae711352e63de64e178814a77","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Parsing part and devstack deploy part will be added"},{"line_number":10,"context_line":"lator, with unit tests and tempest tests."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I4c3afd735a8301c215cfc50f970ecde6b2a04c6e"},{"line_number":13,"context_line":"Signed-off-by: xupeipei \u003cxu.peipei1@zte.com.cn\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"df87a7cf_c2a889dc","line":11,"updated":"2017-12-06 19:54:54.000000000","message":"Put a link to blueprint by inserting into commit message:\n\nImplements: blueprint snmp-support","commit_id":"87b3dcc9b2dc89982920bdf3a41153619c9ba27c"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"9eee255a0f6a159f6739b179c85579b9f9cc371d","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Parsing part and devstack deploy part will be added"},{"line_number":10,"context_line":"lator, with unit tests and tempest tests."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I4c3afd735a8301c215cfc50f970ecde6b2a04c6e"},{"line_number":13,"context_line":"Signed-off-by: xupeipei \u003cxu.peipei1@zte.com.cn\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"df87a7cf_b7f580ef","line":11,"in_reply_to":"df87a7cf_c2a889dc","updated":"2017-12-07 02:26:32.000000000","message":"+1","commit_id":"87b3dcc9b2dc89982920bdf3a41153619c9ba27c"}],"vitrage/snmp_parsing/service.py":[{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"9eee255a0f6a159f6739b179c85579b9f9cc371d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        super(SnmpParsingService, self).start()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        transportDispatcher \u003d AsyncoreDispatcher()"},{"line_number":37,"context_line":"        transportDispatcher.registerRecvCbFun(self.cbFun)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        trans \u003d udp.UdpSocketTransport()"},{"line_number":40,"context_line":"        udp_transport \u003d trans.openServerMode((\u00270.0.0.0\u0027, self.listening_port))"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_f7530816","line":37,"range":{"start_line":37,"start_character":51,"end_line":37,"end_character":56},"updated":"2017-12-07 02:26:32.000000000","message":"callbackFunc?","commit_id":"87b3dcc9b2dc89982920bdf3a41153619c9ba27c"},{"author":{"_account_id":25301,"name":"xupeipei","email":"xu.peipei1@zte.com.cn","username":"xupeipei"},"change_message_id":"93b5f23188e6b1fe2ddc51ba5402f620ab8337d5","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        super(SnmpParsingService, self).start()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        transportDispatcher \u003d AsyncoreDispatcher()"},{"line_number":37,"context_line":"        transportDispatcher.registerRecvCbFun(self.cbFun)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        trans \u003d udp.UdpSocketTransport()"},{"line_number":40,"context_line":"        udp_transport \u003d trans.openServerMode((\u00270.0.0.0\u0027, self.listening_port))"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_f38bafbc","line":37,"range":{"start_line":37,"start_character":51,"end_line":37,"end_character":56},"in_reply_to":"df87a7cf_f7530816","updated":"2017-12-12 07:19:43.000000000","message":"Yes.","commit_id":"87b3dcc9b2dc89982920bdf3a41153619c9ba27c"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"9eee255a0f6a159f6739b179c85579b9f9cc371d","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        transportDispatcher.registerTransport(udp6.domainName, udp6_transport)"},{"line_number":46,"context_line":"        LOG.info(\"Vitrage Snmp_parsing Service - Started!\")"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        transportDispatcher.jobStarted(1)"},{"line_number":49,"context_line":"        try:"},{"line_number":50,"context_line":"            transportDispatcher.runDispatcher()"},{"line_number":51,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_579994c1","line":48,"range":{"start_line":48,"start_character":39,"end_line":48,"end_character":40},"updated":"2017-12-07 02:26:32.000000000","message":"what\u0027s \u00271\u0027 mean?","commit_id":"87b3dcc9b2dc89982920bdf3a41153619c9ba27c"},{"author":{"_account_id":25301,"name":"xupeipei","email":"xu.peipei1@zte.com.cn","username":"xupeipei"},"change_message_id":"93b5f23188e6b1fe2ddc51ba5402f620ab8337d5","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        transportDispatcher.registerTransport(udp6.domainName, udp6_transport)"},{"line_number":46,"context_line":"        LOG.info(\"Vitrage Snmp_parsing Service - Started!\")"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        transportDispatcher.jobStarted(1)"},{"line_number":49,"context_line":"        try:"},{"line_number":50,"context_line":"            transportDispatcher.runDispatcher()"},{"line_number":51,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_d3fb0b44","line":48,"range":{"start_line":48,"start_character":39,"end_line":48,"end_character":40},"in_reply_to":"df87a7cf_579994c1","updated":"2017-12-12 07:19:43.000000000","message":"Dispatcher will finish as job reaches zero, 1 means Dispatcher\nnever finish.","commit_id":"87b3dcc9b2dc89982920bdf3a41153619c9ba27c"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"9eee255a0f6a159f6739b179c85579b9f9cc371d","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        try:"},{"line_number":50,"context_line":"            transportDispatcher.runDispatcher()"},{"line_number":51,"context_line":"        except Exception:"},{"line_number":52,"context_line":"            transportDispatcher.closeDispatcher()"},{"line_number":53,"context_line":"            raise"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def stop(self, graceful\u003dFalse):"},{"line_number":56,"context_line":"        LOG.info(\"Vitrage Snmp_parsing Service - Stopping...\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"df87a7cf_d7ea840d","line":53,"range":{"start_line":52,"start_character":11,"end_line":53,"end_character":17},"updated":"2017-12-07 02:26:32.000000000","message":"add a log for the exception","commit_id":"87b3dcc9b2dc89982920bdf3a41153619c9ba27c"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"b834615510e6a948f7ebea22368823a9476c5da5","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        self.listening_port \u003d conf.snmp_parsing.snmp_listening_port"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def start(self):"},{"line_number":33,"context_line":"        LOG.info(\"Vitrage Snmp_parsing Service - Starting...\")"},{"line_number":34,"context_line":"        super(SnmpParsingService, self).start()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        transportDispatcher \u003d AsyncoreDispatcher()"}],"source_content_type":"text/x-python","patch_set":2,"id":"df87a7cf_b296d34b","line":33,"range":{"start_line":33,"start_character":26,"end_line":33,"end_character":38},"updated":"2017-12-07 23:06:48.000000000","message":"Weird naming...\n\nSuggest to use `snmp_parsing` or `SNMP Parsing`.\n\nThe same for other occurrence.","commit_id":"19f4f3d777b4da7a986917150d32100b3e5b76dc"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"aa2ffdc5a91b178f1718ea5896223c1b50373ad5","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    def __init__(self, conf\u003dNone):"},{"line_number":28,"context_line":"        super(SnmpParsingService, self).__init__()"},{"line_number":29,"context_line":"        self.conf \u003d conf"},{"line_number":30,"context_line":"        self.listening_port \u003d conf.snmp_parsing.snmp_listening_port"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def start(self):"},{"line_number":33,"context_line":"        LOG.info(\"Vitrage SNMP Parsing Service - Starting...\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_b600b4ac","line":30,"range":{"start_line":30,"start_character":30,"end_line":30,"end_character":34},"updated":"2017-12-12 08:36:20.000000000","message":"It will raise an exception if \u0027conf\u0027 with the default \u0027None\u0027.\nI think we don\u0027t need to set the `conf` with default value.","commit_id":"b38638eb2f32287560419e44214c8cef30c75230"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"aa2ffdc5a91b178f1718ea5896223c1b50373ad5","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        transportDispatcher.registerTransport(udp6.domainName, udp6_transport)"},{"line_number":46,"context_line":"        LOG.info(\"Vitrage SNMP Parsing Service - Started!\")"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        transportDispatcher.jobStarted(1)"},{"line_number":49,"context_line":"        try:"},{"line_number":50,"context_line":"            transportDispatcher.runDispatcher()"},{"line_number":51,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_b652f4dc","line":48,"range":{"start_line":48,"start_character":39,"end_line":48,"end_character":40},"updated":"2017-12-12 08:36:20.000000000","message":"Use a macro to indicate what \u00271\u0027 means.","commit_id":"b38638eb2f32287560419e44214c8cef30c75230"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"354be649e340d879fbccc07e11d878ba8c809aea","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        LOG.info(\"Vitrage SNMP Parsing Service - Stopped!\")"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    # noinspection PyUnusedLocal"},{"line_number":66,"context_line":"    def cbFun(self, transportDispatcher, transportDomain,"},{"line_number":67,"context_line":"              transportAddress, wholeMsg):"},{"line_number":68,"context_line":"        # TODO(peipei): need to parse wholeMsg and send to message queue"},{"line_number":69,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":4,"id":"df87a7cf_d9700943","line":66,"range":{"start_line":66,"start_character":8,"end_line":66,"end_character":13},"updated":"2017-12-12 09:30:35.000000000","message":"I prefer to give it a more meaningful name. Like callback_func, or better parse_message. In any case, the convention is not to use capital letters in the function name.","commit_id":"6b186dc759de13c777f0fcdb4e58e115e61424d4"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"5be7c9aa683d094724f58096afb4d1455c34aa55","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        try:"},{"line_number":55,"context_line":"            transport_dispatcher.runDispatcher()"},{"line_number":56,"context_line":"        except Exception:"},{"line_number":57,"context_line":"            LOG.error(\"Run transport dispathcer failed.\")"},{"line_number":58,"context_line":"            transport_dispatcher.closeDispatcher()"},{"line_number":59,"context_line":"            raise"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"df87a7cf_5ccfd056","line":57,"range":{"start_line":57,"start_character":37,"end_line":57,"end_character":47},"updated":"2017-12-14 04:07:41.000000000","message":"typo of \"dispatcher\" ?","commit_id":"29cf6c3951cf81228f0f07b8f5be64891e11a6c8"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"dfe4f3f78d0ef2670c92a525bc3cf52dc259d015","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        try:"},{"line_number":55,"context_line":"            transport_dispatcher.runDispatcher()"},{"line_number":56,"context_line":"        except Exception:"},{"line_number":57,"context_line":"            LOG.error(\"Run transport dispathcer failed.\")"},{"line_number":58,"context_line":"            transport_dispatcher.closeDispatcher()"},{"line_number":59,"context_line":"            raise"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"df87a7cf_15cb5b1e","line":57,"range":{"start_line":57,"start_character":37,"end_line":57,"end_character":47},"in_reply_to":"df87a7cf_157d9be6","updated":"2017-12-14 07:55:55.000000000","message":"I think he meant \u0027dispatcher\u0027 instead of \u0027dispathcer\u0027 :-)","commit_id":"29cf6c3951cf81228f0f07b8f5be64891e11a6c8"},{"author":{"_account_id":25301,"name":"xupeipei","email":"xu.peipei1@zte.com.cn","username":"xupeipei"},"change_message_id":"f985f22a9d3a4ba1c6b335f7e04aad446595dd6c","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        try:"},{"line_number":55,"context_line":"            transport_dispatcher.runDispatcher()"},{"line_number":56,"context_line":"        except Exception:"},{"line_number":57,"context_line":"            LOG.error(\"Run transport dispathcer failed.\")"},{"line_number":58,"context_line":"            transport_dispatcher.closeDispatcher()"},{"line_number":59,"context_line":"            raise"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"df87a7cf_103b699c","line":57,"range":{"start_line":57,"start_character":37,"end_line":57,"end_character":47},"in_reply_to":"df87a7cf_15cb5b1e","updated":"2017-12-14 08:21:02.000000000","message":"Ok. I did not notice that..and the word has been modified.","commit_id":"29cf6c3951cf81228f0f07b8f5be64891e11a6c8"},{"author":{"_account_id":25301,"name":"xupeipei","email":"xu.peipei1@zte.com.cn","username":"xupeipei"},"change_message_id":"fb40361534b95bdc586cbbea7f174990b3598a50","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        try:"},{"line_number":55,"context_line":"            transport_dispatcher.runDispatcher()"},{"line_number":56,"context_line":"        except Exception:"},{"line_number":57,"context_line":"            LOG.error(\"Run transport dispathcer failed.\")"},{"line_number":58,"context_line":"            transport_dispatcher.closeDispatcher()"},{"line_number":59,"context_line":"            raise"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"df87a7cf_157d9be6","line":57,"range":{"start_line":57,"start_character":37,"end_line":57,"end_character":47},"in_reply_to":"df87a7cf_5ccfd056","updated":"2017-12-14 07:51:42.000000000","message":"You mean type? It\u0027s a socket frame supported by AsyncoreDispatcher, should I add to log?","commit_id":"29cf6c3951cf81228f0f07b8f5be64891e11a6c8"}]}
