)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"46a907fdea4b247c530372e3098e4b67a4ce4742","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add service dynamic log change/query"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds 2 new APIs for microversion 3.30, one to dynamically"},{"line_number":10,"context_line":"change the log level of cinder services, and another that allows"},{"line_number":11,"context_line":"querying their current log levels."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"APIImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a1ced50_c10c0a45","line":10,"range":{"start_line":10,"start_character":45,"end_line":10,"end_character":52},"updated":"2017-03-17 14:35:14.000000000","message":"the other","commit_id":"99450a4d863ff0438bda50b274b03d62e35d6563"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b15d74dfe4d1e92886f0df9d3710d35b7dd2a209","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add service dynamic log change/query"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds 2 new APIs for microversion 3.30, one to dynamically"},{"line_number":10,"context_line":"change the log level of cinder services, and another that allows"},{"line_number":11,"context_line":"querying their current log levels."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"APIImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5ff73747_54d4d2e8","line":10,"range":{"start_line":10,"start_character":45,"end_line":10,"end_character":52},"in_reply_to":"1a1ced50_c10c0a45","updated":"2017-04-28 14:59:18.000000000","message":"Done","commit_id":"99450a4d863ff0438bda50b274b03d62e35d6563"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"fb469bb5d6a7820fc93d00cb4b3490069bdbfae2","unresolved":false,"context_lines":[{"line_number":10,"context_line":"change the log level of cinder services, and another that allows"},{"line_number":11,"context_line":"querying their current log levels."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"APIImpact"},{"line_number":14,"context_line":"Implements: blueprint dynamic-log-levels"},{"line_number":15,"context_line":"Change-Id: Ia5ef81135044733f1dd3970a116f97457b0371de"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bff0334d_2b535b41","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":9},"updated":"2017-04-22 07:41:10.000000000","message":"DocImpact as well.","commit_id":"99450a4d863ff0438bda50b274b03d62e35d6563"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b15d74dfe4d1e92886f0df9d3710d35b7dd2a209","unresolved":false,"context_lines":[{"line_number":10,"context_line":"change the log level of cinder services, and another that allows"},{"line_number":11,"context_line":"querying their current log levels."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"APIImpact"},{"line_number":14,"context_line":"Implements: blueprint dynamic-log-levels"},{"line_number":15,"context_line":"Change-Id: Ia5ef81135044733f1dd3970a116f97457b0371de"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5ff73747_34094695","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":9},"in_reply_to":"bff0334d_2b535b41","updated":"2017-04-28 14:59:18.000000000","message":"Done","commit_id":"99450a4d863ff0438bda50b274b03d62e35d6563"}],"cinder/api/contrib/services.py":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"fb469bb5d6a7820fc93d00cb4b3490069bdbfae2","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class ServiceController(wsgi.Controller):"},{"line_number":45,"context_line":"    LOG_BINARIES \u003d (constants.SCHEDULER_BINARY, constants.VOLUME_BINARY,"},{"line_number":46,"context_line":"                    constants.BACKUP_BINARY, \u0027cinder-api\u0027)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def __init__(self, ext_mgr\u003dNone):"},{"line_number":49,"context_line":"        self.ext_mgr \u003d ext_mgr"}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_2c12dbb2","line":46,"range":{"start_line":46,"start_character":44,"end_line":46,"end_character":58},"updated":"2017-04-22 07:41:10.000000000","message":"How about replace all of these \u0027cinder-api\u0027 with a new created constant in the common files?","commit_id":"99450a4d863ff0438bda50b274b03d62e35d6563"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b15d74dfe4d1e92886f0df9d3710d35b7dd2a209","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class ServiceController(wsgi.Controller):"},{"line_number":45,"context_line":"    LOG_BINARIES \u003d (constants.SCHEDULER_BINARY, constants.VOLUME_BINARY,"},{"line_number":46,"context_line":"                    constants.BACKUP_BINARY, \u0027cinder-api\u0027)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def __init__(self, ext_mgr\u003dNone):"},{"line_number":49,"context_line":"        self.ext_mgr \u003d ext_mgr"}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_f43f5e84","line":46,"range":{"start_line":46,"start_character":44,"end_line":46,"end_character":58},"in_reply_to":"5ff73747_2c12dbb2","updated":"2017-04-28 14:59:18.000000000","message":"I didn\u0027t do it initially because I think it\u0027s more confusing, since those constants are used on services that have heartbeats and the API doesn\u0027t.  But I don\u0027t really think it\u0027s all that important, so I\u0027ll just change it, because probably in the future we\u0027ll need it for something else.","commit_id":"99450a4d863ff0438bda50b274b03d62e35d6563"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"fb469bb5d6a7820fc93d00cb4b3490069bdbfae2","unresolved":false,"context_lines":[{"line_number":212,"context_line":"                                                                  log_req)"},{"line_number":213,"context_line":"            result.append({\u0027host\u0027: service.host,"},{"line_number":214,"context_line":"                           \u0027binary\u0027: service.binary,"},{"line_number":215,"context_line":"                           \u0027levels\u0027: {l.prefix: l.level for l in levels}})"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        return {\u0027log_levels\u0027: result}"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_6c3583f7","line":215,"range":{"start_line":215,"start_character":37,"end_line":215,"end_character":74},"updated":"2017-04-22 07:41:10.000000000","message":"Suggetsion, sort these levels with prefix to have a better user experience :)","commit_id":"99450a4d863ff0438bda50b274b03d62e35d6563"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b15d74dfe4d1e92886f0df9d3710d35b7dd2a209","unresolved":false,"context_lines":[{"line_number":212,"context_line":"                                                                  log_req)"},{"line_number":213,"context_line":"            result.append({\u0027host\u0027: service.host,"},{"line_number":214,"context_line":"                           \u0027binary\u0027: service.binary,"},{"line_number":215,"context_line":"                           \u0027levels\u0027: {l.prefix: l.level for l in levels}})"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        return {\u0027log_levels\u0027: result}"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_7476ae40","line":215,"range":{"start_line":215,"start_character":37,"end_line":215,"end_character":74},"in_reply_to":"5ff73747_6c3583f7","updated":"2017-04-28 14:59:18.000000000","message":"I think that should be done in the clients, not here, because even if I were to order it here and use an OrderedDict, they would get serialized to JSON, then the client would convert it to a normal dict and it would not be ordered again.\n\nI\u0027ll add it to the client patch.","commit_id":"99450a4d863ff0438bda50b274b03d62e35d6563"}],"cinder/common/constants.py":[{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"0ea9ebf16ed50f57fb5d8ec70a1abef217b10143","unresolved":false,"context_lines":[{"line_number":18,"context_line":"DB_MAX_INT \u003d 0x7FFFFFFF"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# The cinder services binaries and topics\u0027 names"},{"line_number":21,"context_line":"API_BINARY \u003d \"cinder-api\""},{"line_number":22,"context_line":"SCHEDULER_BINARY \u003d \"cinder-scheduler\""},{"line_number":23,"context_line":"VOLUME_BINARY \u003d \"cinder-volume\""},{"line_number":24,"context_line":"BACKUP_BINARY \u003d \"cinder-backup\""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff0f0b1f_591a4d7d","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":25},"updated":"2017-05-18 18:47:36.000000000","message":"Isn\u0027t this actually embedded as part of apache (or whatever web server is configured)?","commit_id":"a60a09ce5fec847ee4af1cf2661f04ad15459c98"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"cc48dce260c1102391bf8308e89e53ba4a5e839d","unresolved":false,"context_lines":[{"line_number":18,"context_line":"DB_MAX_INT \u003d 0x7FFFFFFF"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# The cinder services binaries and topics\u0027 names"},{"line_number":21,"context_line":"API_BINARY \u003d \"cinder-api\""},{"line_number":22,"context_line":"SCHEDULER_BINARY \u003d \"cinder-scheduler\""},{"line_number":23,"context_line":"VOLUME_BINARY \u003d \"cinder-volume\""},{"line_number":24,"context_line":"BACKUP_BINARY \u003d \"cinder-backup\""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff0f0b1f_ecbcacdd","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":25},"in_reply_to":"ff0f0b1f_591a4d7d","updated":"2017-05-19 08:23:37.000000000","message":"Yes, that\u0027s correct.  I\u0027m just defining it here as a constant as requested in path #2, but we are not actually creating a DB entry or anything like we do with the other binaries defined here, we\u0027ll just use it to check the requests [1].\n\n[1] https://review.openstack.org/#/c/445885/5/cinder/api/contrib/services.py@160","commit_id":"a60a09ce5fec847ee4af1cf2661f04ad15459c98"}],"cinder/objects/dynamic_log.py":[{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"46a907fdea4b247c530372e3098e4b67a4ce4742","unresolved":false,"context_lines":[{"line_number":21,"context_line":"@base.CinderObjectRegistry.register"},{"line_number":22,"context_line":"class LogLevel(base.CinderObject):"},{"line_number":23,"context_line":"    \"\"\"Versioned Object to send log change requests.\"\"\""},{"line_number":24,"context_line":"    # Version 1.0: Initial version"},{"line_number":25,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a1ced50_6d418d0b","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":34},"updated":"2017-03-17 14:35:14.000000000","message":"Maybe it\u0027s better to move version comment to docstring like in other situations we do. Like here [0]\n[0] - https://github.com/openstack/cinder/blob/e569188aa8045baf662068146e2c8968728f21c5/cinder/volume/drivers/dell_emc/vmax/fc.py#L38","commit_id":"99450a4d863ff0438bda50b274b03d62e35d6563"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c871b9ae82f1c8f74cfe8dab6ff72bcdefbfb4de","unresolved":false,"context_lines":[{"line_number":21,"context_line":"@base.CinderObjectRegistry.register"},{"line_number":22,"context_line":"class LogLevel(base.CinderObject):"},{"line_number":23,"context_line":"    \"\"\"Versioned Object to send log change requests.\"\"\""},{"line_number":24,"context_line":"    # Version 1.0: Initial version"},{"line_number":25,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_3c45e643","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":34},"in_reply_to":"1a1ced50_6d418d0b","updated":"2017-04-10 09:12:51.000000000","message":"I\u0027m following implicit convention, if you look at the other OVOs you\u0027ll see this is how we are doing it.","commit_id":"99450a4d863ff0438bda50b274b03d62e35d6563"}],"cinder/tests/unit/test_utils.py":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"fb469bb5d6a7820fc93d00cb4b3490069bdbfae2","unresolved":false,"context_lines":[{"line_number":1458,"context_line":"        self.assertRaises(exception.InvalidInput,"},{"line_number":1459,"context_line":"                          utils.get_log_method, level)"},{"line_number":1460,"context_line":""},{"line_number":1461,"context_line":"    @ddt.data((\u0027info\u0027, utils.logging.INFO), (\u0027warning\u0027, utils.logging.WARNING),"},{"line_number":1462,"context_line":"              (\u0027error\u0027, utils.logging.ERROR), (\u0027debug\u0027, utils.logging.DEBUG))"},{"line_number":1463,"context_line":"    @ddt.unpack"},{"line_number":1464,"context_line":"    def test_get_log_method(self, level, logger):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_4c3ac7e7","line":1461,"range":{"start_line":1461,"start_character":14,"end_line":1461,"end_character":42},"updated":"2017-04-22 07:41:10.000000000","message":"could you add one more testcase with uppercase level?","commit_id":"99450a4d863ff0438bda50b274b03d62e35d6563"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b15d74dfe4d1e92886f0df9d3710d35b7dd2a209","unresolved":false,"context_lines":[{"line_number":1458,"context_line":"        self.assertRaises(exception.InvalidInput,"},{"line_number":1459,"context_line":"                          utils.get_log_method, level)"},{"line_number":1460,"context_line":""},{"line_number":1461,"context_line":"    @ddt.data((\u0027info\u0027, utils.logging.INFO), (\u0027warning\u0027, utils.logging.WARNING),"},{"line_number":1462,"context_line":"              (\u0027error\u0027, utils.logging.ERROR), (\u0027debug\u0027, utils.logging.DEBUG))"},{"line_number":1463,"context_line":"    @ddt.unpack"},{"line_number":1464,"context_line":"    def test_get_log_method(self, level, logger):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_14a1aaf8","line":1461,"range":{"start_line":1461,"start_character":14,"end_line":1461,"end_character":42},"in_reply_to":"5ff73747_4c3ac7e7","updated":"2017-04-28 14:59:18.000000000","message":"Done","commit_id":"99450a4d863ff0438bda50b274b03d62e35d6563"}],"cinder/utils.py":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"fb469bb5d6a7820fc93d00cb4b3490069bdbfae2","unresolved":false,"context_lines":[{"line_number":1105,"context_line":"    return wrapped"},{"line_number":1106,"context_line":""},{"line_number":1107,"context_line":""},{"line_number":1108,"context_line":"LOG_LEVELS \u003d (\u0027INFO\u0027, \u0027WARNING\u0027, \u0027ERROR\u0027, \u0027DEBUG\u0027)"},{"line_number":1109,"context_line":""},{"line_number":1110,"context_line":""},{"line_number":1111,"context_line":"def get_log_method(level_string):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_ec687322","line":1108,"range":{"start_line":1108,"start_character":13,"end_line":1108,"end_character":50},"updated":"2017-04-22 07:41:10.000000000","message":"There are more than four log levels, can we add them all?","commit_id":"99450a4d863ff0438bda50b274b03d62e35d6563"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"fb469bb5d6a7820fc93d00cb4b3490069bdbfae2","unresolved":false,"context_lines":[{"line_number":1118,"context_line":""},{"line_number":1119,"context_line":""},{"line_number":1120,"context_line":"def set_log_levels(prefix, level_string):"},{"line_number":1121,"context_line":"    level \u003d get_log_method(level_string)"},{"line_number":1122,"context_line":"    prefix \u003d prefix or \u0027\u0027"},{"line_number":1123,"context_line":""},{"line_number":1124,"context_line":"    for k, v in logging._loggers.items():"}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_6c66a354","line":1121,"range":{"start_line":1121,"start_character":4,"end_line":1121,"end_character":40},"updated":"2017-04-22 07:41:10.000000000","message":"This method named \u0027get_log_method\u0027 but we assigned it to a var named \u0027level\u0027, a little confusing.","commit_id":"99450a4d863ff0438bda50b274b03d62e35d6563"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"46a907fdea4b247c530372e3098e4b67a4ce4742","unresolved":false,"context_lines":[{"line_number":1121,"context_line":"    level \u003d get_log_method(level_string)"},{"line_number":1122,"context_line":"    prefix \u003d prefix or \u0027\u0027"},{"line_number":1123,"context_line":""},{"line_number":1124,"context_line":"    for k, v in logging._loggers.items():"},{"line_number":1125,"context_line":"        if k and k.startswith(prefix):"},{"line_number":1126,"context_line":"            v.logger.setLevel(level)"},{"line_number":1127,"context_line":""},{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"def get_log_levels(prefix):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a1ced50_61cc3636","line":1126,"range":{"start_line":1124,"start_character":0,"end_line":1126,"end_character":36},"updated":"2017-03-17 14:35:14.000000000","message":"-1 We don\u0027t have any exception here. So we can provide any prefix and API won\u0027t tell us about our mistake. I don\u0027t think it is expected behavior.","commit_id":"99450a4d863ff0438bda50b274b03d62e35d6563"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"fb469bb5d6a7820fc93d00cb4b3490069bdbfae2","unresolved":false,"context_lines":[{"line_number":1123,"context_line":""},{"line_number":1124,"context_line":"    for k, v in logging._loggers.items():"},{"line_number":1125,"context_line":"        if k and k.startswith(prefix):"},{"line_number":1126,"context_line":"            v.logger.setLevel(level)"},{"line_number":1127,"context_line":""},{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"def get_log_levels(prefix):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5ff73747_ec099331","line":1126,"range":{"start_line":1126,"start_character":10,"end_line":1126,"end_character":36},"updated":"2017-04-22 07:41:10.000000000","message":"Could we get the item\u0027s current log level first and update when it\u0027s different?","commit_id":"99450a4d863ff0438bda50b274b03d62e35d6563"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c871b9ae82f1c8f74cfe8dab6ff72bcdefbfb4de","unresolved":false,"context_lines":[{"line_number":1121,"context_line":"    level \u003d get_log_method(level_string)"},{"line_number":1122,"context_line":"    prefix \u003d prefix or \u0027\u0027"},{"line_number":1123,"context_line":""},{"line_number":1124,"context_line":"    for k, v in logging._loggers.items():"},{"line_number":1125,"context_line":"        if k and k.startswith(prefix):"},{"line_number":1126,"context_line":"            v.logger.setLevel(level)"},{"line_number":1127,"context_line":""},{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"def get_log_levels(prefix):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_7c492e2f","line":1126,"range":{"start_line":1124,"start_character":0,"end_line":1126,"end_character":36},"in_reply_to":"1a1ced50_61cc3636","updated":"2017-04-10 09:12:51.000000000","message":"It is the intended behavior, so you can just make the request to change the log levels without having to worry about which services are actually using it or not.  So you could just ask to change the logs for cinder.volume.rpc_api without having to specify that you only want the cinder_volume service.  That way you\u0027ll get it changed in cinder_volume, cinder_backups, and cinder_scheduler, but not in the api.","commit_id":"99450a4d863ff0438bda50b274b03d62e35d6563"},{"author":{"_account_id":23602,"name":"Michael Dovgal","email":"dovgalmichael@gmail.com","username":"mdovgal"},"change_message_id":"46a907fdea4b247c530372e3098e4b67a4ce4742","unresolved":false,"context_lines":[{"line_number":1130,"context_line":"    prefix \u003d prefix or \u0027\u0027"},{"line_number":1131,"context_line":"    return {k: logging.logging.getLevelName(v.logger.getEffectiveLevel())"},{"line_number":1132,"context_line":"            for k, v in logging._loggers.items()"},{"line_number":1133,"context_line":"            if k and k.startswith(prefix)}"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a1ced50_e122e6b8","line":1133,"range":{"start_line":1133,"start_character":21,"end_line":1133,"end_character":42},"updated":"2017-03-17 14:35:14.000000000","message":"And is it ok, that we will return all loggers that are started with the prefix? What should I do, if I want just concrete one and I don\u0027t what to use grep? :)","commit_id":"99450a4d863ff0438bda50b274b03d62e35d6563"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c871b9ae82f1c8f74cfe8dab6ff72bcdefbfb4de","unresolved":false,"context_lines":[{"line_number":1130,"context_line":"    prefix \u003d prefix or \u0027\u0027"},{"line_number":1131,"context_line":"    return {k: logging.logging.getLevelName(v.logger.getEffectiveLevel())"},{"line_number":1132,"context_line":"            for k, v in logging._loggers.items()"},{"line_number":1133,"context_line":"            if k and k.startswith(prefix)}"}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_810c8d41","line":1133,"range":{"start_line":1133,"start_character":21,"end_line":1133,"end_character":42},"in_reply_to":"1a1ced50_e122e6b8","updated":"2017-04-10 09:12:51.000000000","message":"I don\u0027t follow, if you want a specific one you just have to pass it as the prefix and it will only have 1 match, the one you want.  r:-??","commit_id":"99450a4d863ff0438bda50b274b03d62e35d6563"}],"releasenotes/notes/service_dynamic_log_change-55147d288be903f1.yaml":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"fb469bb5d6a7820fc93d00cb4b3490069bdbfae2","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added new APIs to support dynamically changing log levels in Cinder"},{"line_number":5,"context_line":"    services without restart as well as retrieving current log levels, which is"},{"line_number":6,"context_line":"    and easy way to ping via the message broker a service."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"5ff73747_ac8eebcd","line":6,"range":{"start_line":6,"start_character":4,"end_line":6,"end_character":8},"updated":"2017-04-22 07:41:10.000000000","message":"an?","commit_id":"99450a4d863ff0438bda50b274b03d62e35d6563"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b15d74dfe4d1e92886f0df9d3710d35b7dd2a209","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added new APIs to support dynamically changing log levels in Cinder"},{"line_number":5,"context_line":"    services without restart as well as retrieving current log levels, which is"},{"line_number":6,"context_line":"    and easy way to ping via the message broker a service."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"5ff73747_342b8683","line":6,"range":{"start_line":6,"start_character":4,"end_line":6,"end_character":8},"in_reply_to":"5ff73747_ac8eebcd","updated":"2017-04-28 14:59:18.000000000","message":"Done","commit_id":"99450a4d863ff0438bda50b274b03d62e35d6563"}]}
