)]}'
{"monasca_setup/detection/plugins/kafka_consumer.py":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"f89c4c695c6aeb87add3007c423267e2aefccc6a","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            elif not kafka_has_scripts:"},{"line_number":72,"context_line":"                log.error((\u0027Kafka process exists, has \u0027"},{"line_number":73,"context_line":"                           \u0027dependencies but neither %s nor %s \u0027"},{"line_number":74,"context_line":"                           \u0027could not been found.\u0027),"},{"line_number":75,"context_line":"                          _KAFKA_CONSUMER_GROUP_COMMAND,"},{"line_number":76,"context_line":"                          _KAFKA_CONSUMER_GROUP_COMMAND)"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa7ab95a_6bfc313f","line":74,"updated":"2016-08-25 21:01:20.000000000","message":"I think this is typo.","commit_id":"14f27fdaed7db9c3c4e18ded95c9903021ef5afd"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"8936356bb31ef0979a22f201a11e6e31863ad9f3","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                           \u0027dependency kafka-python is \u0027"},{"line_number":70,"context_line":"                           \u0027not installed.\u0027))"},{"line_number":71,"context_line":"            elif not kafka_has_scripts:"},{"line_number":72,"context_line":"                log.error((\u0027Kafka process exists, has \u0027"},{"line_number":73,"context_line":"                           \u0027dependencies but neither %s nor %s \u0027"},{"line_number":74,"context_line":"                           \u0027executable was found.\u0027),"},{"line_number":75,"context_line":"                          _KAFKA_CONSUMER_GROUP_COMMAND,"},{"line_number":76,"context_line":"                          _KAFKA_CONSUMER_GROUP_COMMAND)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a89bdaa_b567f8e7","line":73,"range":{"start_line":72,"start_character":50,"end_line":73,"end_character":40},"updated":"2016-09-06 22:36:21.000000000","message":"Replace with \u0027dependencies are installed\u0027. \"has dependencies\u0027 sounds like it needs dependencies are not installed","commit_id":"0e1ed6f4c501c519a24423ddddb21abb4242adf8"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"a61256155a667b604ba04fe4ddd87d5896712add","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                           \u0027dependency kafka-python is \u0027"},{"line_number":70,"context_line":"                           \u0027not installed.\u0027))"},{"line_number":71,"context_line":"            elif not kafka_has_scripts:"},{"line_number":72,"context_line":"                log.error((\u0027Kafka process exists, has \u0027"},{"line_number":73,"context_line":"                           \u0027dependencies but neither %s nor %s \u0027"},{"line_number":74,"context_line":"                           \u0027executable was found.\u0027),"},{"line_number":75,"context_line":"                          _KAFKA_CONSUMER_GROUP_COMMAND,"},{"line_number":76,"context_line":"                          _KAFKA_CONSUMER_GROUP_COMMAND)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a89bdaa_f1bc2b08","line":73,"range":{"start_line":72,"start_character":50,"end_line":73,"end_character":40},"in_reply_to":"9a89bdaa_b567f8e7","updated":"2016-09-07 04:57:15.000000000","message":"Done","commit_id":"0e1ed6f4c501c519a24423ddddb21abb4242adf8"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"8936356bb31ef0979a22f201a11e6e31863ad9f3","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            if not consumers and self._zookeeper_shell_exists:"},{"line_number":90,"context_line":"                consumers \u003d self._detect_consumer_via_zookeeper()"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"            if not consumers:"},{"line_number":93,"context_line":"                log.info(\u0027Did not found any consumers for kafka at %s\u0027,"},{"line_number":94,"context_line":"                         kafka_connect_str)"},{"line_number":95,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a89bdaa_b571b878","line":92,"range":{"start_line":92,"start_character":12,"end_line":92,"end_character":29},"updated":"2016-09-06 22:36:21.000000000","message":"This is a change in behavior from the old plugin. If there were no consumers previously, the instances was still created and returned and the check plugin at least monitored the topics.\n\nIt is possible this plugin is configured before the consumers are started but after the topics are defined. It should still monitor what it can in that case.\n\nI didn\u0027t actually test this so I suppose the check plugin could fail in that case, but this does seem different.","commit_id":"0e1ed6f4c501c519a24423ddddb21abb4242adf8"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"a61256155a667b604ba04fe4ddd87d5896712add","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            if not consumers and self._zookeeper_shell_exists:"},{"line_number":90,"context_line":"                consumers \u003d self._detect_consumer_via_zookeeper()"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"            if not consumers:"},{"line_number":93,"context_line":"                log.info(\u0027Did not found any consumers for kafka at %s\u0027,"},{"line_number":94,"context_line":"                         kafka_connect_str)"},{"line_number":95,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a89bdaa_51a8778d","line":92,"range":{"start_line":92,"start_character":12,"end_line":92,"end_character":29},"in_reply_to":"9a89bdaa_b571b878","updated":"2016-09-07 04:57:15.000000000","message":"Ok, will keep default behaviour.","commit_id":"0e1ed6f4c501c519a24423ddddb21abb4242adf8"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"8936356bb31ef0979a22f201a11e6e31863ad9f3","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                # string like \"Could not fetch offset from zookeeper...\""},{"line_number":139,"context_line":"                # check if that is true and if"},{"line_number":140,"context_line":"                # so move start_index forward by one"},{"line_number":141,"context_line":"                if lines[line_index].startswith(\u0027Could not fetch offset from\u0027):"},{"line_number":142,"context_line":"                    line_index \u003d 2"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"                # -1 because last character is ,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a89bdaa_f54420b8","line":141,"range":{"start_line":141,"start_character":49,"end_line":141,"end_character":76},"updated":"2016-09-06 22:36:21.000000000","message":"Is it possible instead to check that line looks like what we expect instead of using this check? This is very fragile, for example, if they changed the error message to \"Could not fetch the offset from .....\", then this would break.\n\nBut, I know sometimes we are stuck with junk like this because there is no option.","commit_id":"0e1ed6f4c501c519a24423ddddb21abb4242adf8"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"6bbed58e77a31bccf53f50966f5b6a7b9f4a0219","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                # string like \"Could not fetch offset from zookeeper...\""},{"line_number":139,"context_line":"                # check if that is true and if"},{"line_number":140,"context_line":"                # so move start_index forward by one"},{"line_number":141,"context_line":"                if lines[line_index].startswith(\u0027Could not fetch offset from\u0027):"},{"line_number":142,"context_line":"                    line_index \u003d 2"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"                # -1 because last character is ,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a89bdaa_ecc37287","line":141,"range":{"start_line":141,"start_character":49,"end_line":141,"end_character":76},"in_reply_to":"9a89bdaa_f54420b8","updated":"2016-09-07 05:16:37.000000000","message":"Done","commit_id":"0e1ed6f4c501c519a24423ddddb21abb4242adf8"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"a61256155a667b604ba04fe4ddd87d5896712add","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                # string like \"Could not fetch offset from zookeeper...\""},{"line_number":139,"context_line":"                # check if that is true and if"},{"line_number":140,"context_line":"                # so move start_index forward by one"},{"line_number":141,"context_line":"                if lines[line_index].startswith(\u0027Could not fetch offset from\u0027):"},{"line_number":142,"context_line":"                    line_index \u003d 2"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"                # -1 because last character is ,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a89bdaa_11734f16","line":141,"range":{"start_line":141,"start_character":49,"end_line":141,"end_character":76},"in_reply_to":"9a89bdaa_f54420b8","updated":"2016-09-07 04:57:15.000000000","message":"Ok, I think that maybe a safer way would to be traverse list in reversed order and loop until it\u0027s possible to split line by ,.\n\nIf result won\u0027t be an array or we first element was reached, we know we must stop there.","commit_id":"0e1ed6f4c501c519a24423ddddb21abb4242adf8"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"27151d74f4e83f4854e454a26db90bf96406535c","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        process_exist \u003d find_process_cmdline(\u0027kafka\u0027) is not None"},{"line_number":52,"context_line":"        has_dependencies \u003d self.dependencies_installed()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        kafka_consumer_group_exists \u003d os.path.isfile("},{"line_number":55,"context_line":"            _KAFKA_CONSUMER_GROUP_COMMAND)"},{"line_number":56,"context_line":"        kafka_zookeeper_shell_exists \u003d os.path.isfile("},{"line_number":57,"context_line":"            _KAFKA_ZOOKEEPER_SHELL_COMMAND)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a8ec9b2_f17d47b2","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":35},"updated":"2016-09-14 19:03:56.000000000","message":"Can we assign the output to self._consumer_group_shell_exists directly here? same question for self._zookeeper_shell_exists","commit_id":"bfc3b7c596d86c3a49b62425eec6c6e4e82788fd"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"ed4975e556fe50519a65a5595ed5fe059364bb70","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        process_exist \u003d find_process_cmdline(\u0027kafka\u0027) is not None"},{"line_number":52,"context_line":"        has_dependencies \u003d self.dependencies_installed()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        kafka_consumer_group_exists \u003d os.path.isfile("},{"line_number":55,"context_line":"            _KAFKA_CONSUMER_GROUP_COMMAND)"},{"line_number":56,"context_line":"        kafka_zookeeper_shell_exists \u003d os.path.isfile("},{"line_number":57,"context_line":"            _KAFKA_ZOOKEEPER_SHELL_COMMAND)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a8ec9b2_839ca0c1","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":35},"in_reply_to":"7a8ec9b2_f17d47b2","updated":"2016-09-15 08:02:57.000000000","message":"Done","commit_id":"bfc3b7c596d86c3a49b62425eec6c6e4e82788fd"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"6c2d3b7b631af4b89b25a6bf6713b9017ea9c497","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _detect(self):"},{"line_number":50,"context_line":"        \"\"\"Run detection, set self.available True if the service is detected.\"\"\""},{"line_number":51,"context_line":"        process_exist \u003d find_process_cmdline(\u0027kafka\u0027) is not None"},{"line_number":52,"context_line":"        has_dependencies \u003d self.dependencies_installed()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        self._consumer_group_shell_exists \u003d os.path.isfile("}],"source_content_type":"text/x-python","patch_set":12,"id":"7a8ec9b2_7b535b17","line":51,"range":{"start_line":51,"start_character":8,"end_line":51,"end_character":21},"updated":"2016-09-16 19:51:27.000000000","message":"Should be process_exists","commit_id":"36ea14f465219422c5c3a1fc2e15f41f6e42e383"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"af20a9256aa4514f558bb30d532caa50cbbcb81d","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _detect(self):"},{"line_number":50,"context_line":"        \"\"\"Run detection, set self.available True if the service is detected.\"\"\""},{"line_number":51,"context_line":"        process_exist \u003d find_process_cmdline(\u0027kafka\u0027) is not None"},{"line_number":52,"context_line":"        has_dependencies \u003d self.dependencies_installed()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        self._consumer_group_shell_exists \u003d os.path.isfile("}],"source_content_type":"text/x-python","patch_set":12,"id":"7a8ec9b2_69438313","line":51,"range":{"start_line":51,"start_character":8,"end_line":51,"end_character":21},"in_reply_to":"7a8ec9b2_7b535b17","updated":"2016-09-17 17:40:17.000000000","message":"Done","commit_id":"36ea14f465219422c5c3a1fc2e15f41f6e42e383"}]}
