)]}'
{"keystone/backends/backendutils.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"0de01fd7ba2b589f1e886afe9ba8173695dbd268","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"def __get_hashed_password(password):"},{"line_number":15,"context_line":"    if password is not None and len(password) \u003e 0:"},{"line_number":16,"context_line":"        return __make_password(password)"},{"line_number":17,"context_line":"    else:"},{"line_number":18,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAADH%2F%2F%2FTU%3D","line":15,"updated":"2011-12-30 21:50:26.000000000","message":"Shorten to:\n\nif password:","commit_id":"49ee2acbaca78f95707ae09f4316f444522c38c1"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"7b40520c47421c357ba99bdcbe97bf265b324620","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"def __get_hashed_password(password):"},{"line_number":15,"context_line":"    if password is not None and len(password) \u003e 0:"},{"line_number":16,"context_line":"        return __make_password(password)"},{"line_number":17,"context_line":"    else:"},{"line_number":18,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAADH%2F%2F%2FSY%3D","line":15,"in_reply_to":"AAAADH%2F%2F%2FTU%3D","updated":"2011-12-30 22:43:11.000000000","message":"Done","commit_id":"49ee2acbaca78f95707ae09f4316f444522c38c1"}],"keystone/frontends/d5_compat.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"0de01fd7ba2b589f1e886afe9ba8173695dbd268","unresolved":false,"context_lines":[{"line_number":383,"context_line":"        \"\"\" Common initialization code \"\"\""},{"line_number":384,"context_line":"        msg \u003d _(\"Starting the %s component\" % PROTOCOL_NAME)"},{"line_number":385,"context_line":"        logger.debug(msg)"},{"line_number":386,"context_line":"        print msg"},{"line_number":387,"context_line":"        self.conf \u003d conf"},{"line_number":388,"context_line":"        self.app \u003d app"},{"line_number":389,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAADH%2F%2F%2FTY%3D","line":386,"updated":"2011-12-30 21:50:26.000000000","message":"Why print the msg?","commit_id":"49ee2acbaca78f95707ae09f4316f444522c38c1"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"7b40520c47421c357ba99bdcbe97bf265b324620","unresolved":false,"context_lines":[{"line_number":383,"context_line":"        \"\"\" Common initialization code \"\"\""},{"line_number":384,"context_line":"        msg \u003d _(\"Starting the %s component\" % PROTOCOL_NAME)"},{"line_number":385,"context_line":"        logger.debug(msg)"},{"line_number":386,"context_line":"        print msg"},{"line_number":387,"context_line":"        self.conf \u003d conf"},{"line_number":388,"context_line":"        self.app \u003d app"},{"line_number":389,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAADH%2F%2F%2FRs%3D","line":386,"in_reply_to":"AAAADH%2F%2F%2FTY%3D","updated":"2011-12-30 22:43:11.000000000","message":"OK. Implemented utils.print_to_console()","commit_id":"49ee2acbaca78f95707ae09f4316f444522c38c1"}],"keystone/frontends/legacy_token_auth.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"0de01fd7ba2b589f1e886afe9ba8173695dbd268","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    def __init__(self, app, conf):"},{"line_number":45,"context_line":"        \"\"\" Common initialization code \"\"\""},{"line_number":46,"context_line":"        msg \u003d \"Starting the %s component\" % PROTOCOL_NAME"},{"line_number":47,"context_line":"        print msg"},{"line_number":48,"context_line":"        logger.info(msg)"},{"line_number":49,"context_line":"        self.conf \u003d conf"},{"line_number":50,"context_line":"        self.app \u003d app"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAADH%2F%2F%2FTo%3D","line":47,"updated":"2011-12-30 21:50:26.000000000","message":"Why are we printing the msg? Console output should be handled by the loggers.","commit_id":"49ee2acbaca78f95707ae09f4316f444522c38c1"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"7b40520c47421c357ba99bdcbe97bf265b324620","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    def __init__(self, app, conf):"},{"line_number":45,"context_line":"        \"\"\" Common initialization code \"\"\""},{"line_number":46,"context_line":"        msg \u003d \"Starting the %s component\" % PROTOCOL_NAME"},{"line_number":47,"context_line":"        print msg"},{"line_number":48,"context_line":"        logger.info(msg)"},{"line_number":49,"context_line":"        self.conf \u003d conf"},{"line_number":50,"context_line":"        self.app \u003d app"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAADH%2F%2F%2FRk%3D","line":47,"in_reply_to":"AAAADH%2F%2F%2FTo%3D","updated":"2011-12-30 22:43:11.000000000","message":"Done","commit_id":"49ee2acbaca78f95707ae09f4316f444522c38c1"}],"keystone/frontends/normalizer.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"e36eb37217504743b4e6df507873560b4f95b4b0","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            try:"},{"line_number":125,"context_line":"                accept \u003d webob.acceptparse.Accept(accept_value)"},{"line_number":126,"context_line":"            except TypeError:"},{"line_number":127,"context_line":"                # ."},{"line_number":128,"context_line":"                logger.warn(\"Falling back to `webob` v1.1 and older support. \""},{"line_number":129,"context_line":"                            \"Check your version of webob\")"},{"line_number":130,"context_line":"                accept \u003d webob.acceptparse.Accept(\u0027Accept\u0027, accept_value)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAD3%2F%2F%2F%2BQ%3D","line":127,"updated":"2012-01-06 22:42:22.000000000","message":"...","commit_id":"eba50d6750a13f2bcb7500b42030582803ae2fd2"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"0644eb54a2ee5fe5090264bb66747e063965e798","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            try:"},{"line_number":125,"context_line":"                accept \u003d webob.acceptparse.Accept(accept_value)"},{"line_number":126,"context_line":"            except TypeError:"},{"line_number":127,"context_line":"                # ."},{"line_number":128,"context_line":"                logger.warn(\"Falling back to `webob` v1.1 and older support. \""},{"line_number":129,"context_line":"                            \"Check your version of webob\")"},{"line_number":130,"context_line":"                accept \u003d webob.acceptparse.Accept(\u0027Accept\u0027, accept_value)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAD3%2F%2F%2F9s%3D","line":127,"in_reply_to":"AAAAD3%2F%2F%2F%2BQ%3D","updated":"2012-01-06 23:12:14.000000000","message":"WTH is that?!\n\nDone...","commit_id":"eba50d6750a13f2bcb7500b42030582803ae2fd2"}],"keystone/manage/__init__.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"e36eb37217504743b4e6df507873560b4f95b4b0","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    elif (object_type, action) \u003d\u003d (\u0027user\u0027, \u0027list\u0027):"},{"line_number":158,"context_line":"        print (Table(\u0027Users\u0027, [\u0027id\u0027, \u0027name\u0027, \u0027enabled\u0027,"},{"line_number":159,"context_line":"                                               \u0027tenant\u0027], api.list_users()))"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    elif (object_type, action) \u003d\u003d (\u0027user\u0027, \u0027disable\u0027):"},{"line_number":162,"context_line":"        if api.disable_user(name\u003dobject_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAD3%2F%2F%2F%2B8%3D","line":159,"updated":"2012-01-06 22:42:22.000000000","message":"arbitrary indentation?","commit_id":"eba50d6750a13f2bcb7500b42030582803ae2fd2"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"0644eb54a2ee5fe5090264bb66747e063965e798","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    elif (object_type, action) \u003d\u003d (\u0027user\u0027, \u0027list\u0027):"},{"line_number":158,"context_line":"        print (Table(\u0027Users\u0027, [\u0027id\u0027, \u0027name\u0027, \u0027enabled\u0027,"},{"line_number":159,"context_line":"                                               \u0027tenant\u0027], api.list_users()))"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    elif (object_type, action) \u003d\u003d (\u0027user\u0027, \u0027disable\u0027):"},{"line_number":162,"context_line":"        if api.disable_user(name\u003dobject_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAD3%2F%2F%2F9o%3D","line":159,"in_reply_to":"AAAAD3%2F%2F%2F%2B8%3D","updated":"2012-01-06 23:12:14.000000000","message":"Done","commit_id":"eba50d6750a13f2bcb7500b42030582803ae2fd2"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"e36eb37217504743b4e6df507873560b4f95b4b0","unresolved":false,"context_lines":[{"line_number":182,"context_line":"    elif (object_type, action) \u003d\u003d (\u0027role\u0027, \u0027add\u0027):"},{"line_number":183,"context_line":"        if api.add_role(name\u003dobject_id, service_name\u003doptional_arg(args, 3)):"},{"line_number":184,"context_line":"            print (\"SUCCESS: Role %s created successfully.\" %"},{"line_number":185,"context_line":"                                   object_id)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    elif (object_type, action) \u003d\u003d (\u0027role\u0027, \u0027list\u0027):"},{"line_number":188,"context_line":"        tenant \u003d optional_arg(args, 2)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAD3%2F%2F%2F%2B4%3D","line":185,"updated":"2012-01-06 22:42:22.000000000","message":"more","commit_id":"eba50d6750a13f2bcb7500b42030582803ae2fd2"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"0644eb54a2ee5fe5090264bb66747e063965e798","unresolved":false,"context_lines":[{"line_number":182,"context_line":"    elif (object_type, action) \u003d\u003d (\u0027role\u0027, \u0027add\u0027):"},{"line_number":183,"context_line":"        if api.add_role(name\u003dobject_id, service_name\u003doptional_arg(args, 3)):"},{"line_number":184,"context_line":"            print (\"SUCCESS: Role %s created successfully.\" %"},{"line_number":185,"context_line":"                                   object_id)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    elif (object_type, action) \u003d\u003d (\u0027role\u0027, \u0027list\u0027):"},{"line_number":188,"context_line":"        tenant \u003d optional_arg(args, 2)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAD3%2F%2F%2F9k%3D","line":185,"in_reply_to":"AAAAD3%2F%2F%2F%2B4%3D","updated":"2012-01-06 23:12:14.000000000","message":"Done","commit_id":"eba50d6750a13f2bcb7500b42030582803ae2fd2"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"e36eb37217504743b4e6df507873560b4f95b4b0","unresolved":false,"context_lines":[{"line_number":190,"context_line":"            # print with users"},{"line_number":191,"context_line":"            print (Table(\u0027Role assignments for tenant %s\u0027 %"},{"line_number":192,"context_line":"                                         tenant, [\u0027User\u0027, \u0027Role\u0027],"},{"line_number":193,"context_line":"                                         api.list_roles(tenant\u003dtenant)))"},{"line_number":194,"context_line":"        else:"},{"line_number":195,"context_line":"            # print without tenants"},{"line_number":196,"context_line":"            print (Table(\u0027Roles\u0027, [\u0027id\u0027, \u0027name\u0027, \u0027service_id\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAD3%2F%2F%2F%2B0%3D","line":193,"updated":"2012-01-06 22:42:22.000000000","message":"more","commit_id":"eba50d6750a13f2bcb7500b42030582803ae2fd2"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"0644eb54a2ee5fe5090264bb66747e063965e798","unresolved":false,"context_lines":[{"line_number":190,"context_line":"            # print with users"},{"line_number":191,"context_line":"            print (Table(\u0027Role assignments for tenant %s\u0027 %"},{"line_number":192,"context_line":"                                         tenant, [\u0027User\u0027, \u0027Role\u0027],"},{"line_number":193,"context_line":"                                         api.list_roles(tenant\u003dtenant)))"},{"line_number":194,"context_line":"        else:"},{"line_number":195,"context_line":"            # print without tenants"},{"line_number":196,"context_line":"            print (Table(\u0027Roles\u0027, [\u0027id\u0027, \u0027name\u0027, \u0027service_id\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAD3%2F%2F%2F9g%3D","line":193,"in_reply_to":"AAAAD3%2F%2F%2F%2B0%3D","updated":"2012-01-06 23:12:14.000000000","message":"Done","commit_id":"eba50d6750a13f2bcb7500b42030582803ae2fd2"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"e36eb37217504743b4e6df507873560b4f95b4b0","unresolved":false,"context_lines":[{"line_number":195,"context_line":"            # print without tenants"},{"line_number":196,"context_line":"            print (Table(\u0027Roles\u0027, [\u0027id\u0027, \u0027name\u0027, \u0027service_id\u0027,"},{"line_number":197,"context_line":"                                                   \u0027description\u0027],"},{"line_number":198,"context_line":"                                        api.list_roles()))"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    elif (object_type, action) \u003d\u003d (\u0027role\u0027, \u0027grant\u0027):"},{"line_number":201,"context_line":"        require_args(args, 4, \"Missing arguments: role grant \u0027role\u0027 \u0027user\u0027 \""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAD3%2F%2F%2F%2Bw%3D","line":198,"updated":"2012-01-06 22:42:22.000000000","message":"more","commit_id":"eba50d6750a13f2bcb7500b42030582803ae2fd2"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"0644eb54a2ee5fe5090264bb66747e063965e798","unresolved":false,"context_lines":[{"line_number":195,"context_line":"            # print without tenants"},{"line_number":196,"context_line":"            print (Table(\u0027Roles\u0027, [\u0027id\u0027, \u0027name\u0027, \u0027service_id\u0027,"},{"line_number":197,"context_line":"                                                   \u0027description\u0027],"},{"line_number":198,"context_line":"                                        api.list_roles()))"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    elif (object_type, action) \u003d\u003d (\u0027role\u0027, \u0027grant\u0027):"},{"line_number":201,"context_line":"        require_args(args, 4, \"Missing arguments: role grant \u0027role\u0027 \u0027user\u0027 \""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAD3%2F%2F%2F9c%3D","line":198,"in_reply_to":"AAAAD3%2F%2F%2F%2Bw%3D","updated":"2012-01-06 23:12:14.000000000","message":"Done","commit_id":"eba50d6750a13f2bcb7500b42030582803ae2fd2"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"e36eb37217504743b4e6df507873560b4f95b4b0","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        if api.add_service(name\u003dobject_id, type\u003dtype, desc\u003ddesc,"},{"line_number":275,"context_line":"                           owner_id\u003downer_id):"},{"line_number":276,"context_line":"            print (\"SUCCESS: Service %s created successfully.\""},{"line_number":277,"context_line":"                                   % (object_id,))"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    elif (object_type, action) \u003d\u003d (\u0027service\u0027, \u0027list\u0027):"},{"line_number":280,"context_line":"        print (Table(\u0027Services\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAD3%2F%2F%2F%2Bs%3D","line":277,"updated":"2012-01-06 22:42:22.000000000","message":"ahh","commit_id":"eba50d6750a13f2bcb7500b42030582803ae2fd2"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"0644eb54a2ee5fe5090264bb66747e063965e798","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        if api.add_service(name\u003dobject_id, type\u003dtype, desc\u003ddesc,"},{"line_number":275,"context_line":"                           owner_id\u003downer_id):"},{"line_number":276,"context_line":"            print (\"SUCCESS: Service %s created successfully.\""},{"line_number":277,"context_line":"                                   % (object_id,))"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    elif (object_type, action) \u003d\u003d (\u0027service\u0027, \u0027list\u0027):"},{"line_number":280,"context_line":"        print (Table(\u0027Services\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAD3%2F%2F%2F9Y%3D","line":277,"in_reply_to":"AAAAD3%2F%2F%2F%2Bs%3D","updated":"2012-01-06 23:12:14.000000000","message":"Done","commit_id":"eba50d6750a13f2bcb7500b42030582803ae2fd2"}],"keystone/middleware/ec2_token.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"2d66dac224f6171c0d7b7fab21a03a963ea9bffc","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from nova import utils"},{"line_number":31,"context_line":"from nova import wsgi"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"logger \u003d logging.getLogger(__name__)  # pylint: disable\u003dC0103"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":36,"context_line":"flags.DEFINE_string(\u0027keystone_ec2_url\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAADH%2F%2F%2BQ0%3D","line":33,"updated":"2012-01-05 01:27:04.000000000","message":"For the middle-ware filters, shouldn\u0027t we be leveraging the service\u0027s native logger?\n\ndef get_logger(conf, service\u003dNone):\n    logger \u003d None\n    log_name \u003d \u0027keystone.middleware\u0027\n    if service:\n        if service \u003d\u003d \u0027swift\u0027:\n            try:\n                from swift.common.utils import get_logger\n                logger \u003d get_logger(conf, log_route\u003dlog_name)\n            except:\n                # unable to get the swift logger\n                # will create a default one later\n                pass\n        elif service \u003d\u003d \u0027nova\u0027:\n            try:\n                from nova import log as logging\n                logger \u003d logging.getLogger(log_name)\n            except:\n                # unable to get the nova logger\n                # will create a default later\n                pass\n        \n            # use default one\n    if not logger:\n            try:\n                logger \u003d logging.getLogger(log_name)\n            except:\n                # shouldn\u0027t happen, but what can we do?\n                pass\n\n    return logger","commit_id":"eba50d6750a13f2bcb7500b42030582803ae2fd2"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"276dc21f435c4fe4c4d28eb10e661d473110675d","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from nova import utils"},{"line_number":31,"context_line":"from nova import wsgi"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"logger \u003d logging.getLogger(__name__)  # pylint: disable\u003dC0103"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":36,"context_line":"flags.DEFINE_string(\u0027keystone_ec2_url\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAADX%2F%2F%2Fw0%3D","line":33,"in_reply_to":"AAAADH%2F%2F%2BQ0%3D","updated":"2012-01-06 06:31:05.000000000","message":"I like the attempt to integrate well into the consuming service, but I\u0027m concerned about the drawbacks:\n- we have to hard code services (nova, swift, etc...)\n- our log events now have different sources depending on where we are running, so any central logging anyone implements won\u0027t have the same data for the what is effectively the same event...","commit_id":"eba50d6750a13f2bcb7500b42030582803ae2fd2"}],"keystone/middleware/nova_auth_token.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"e36eb37217504743b4e6df507873560b4f95b4b0","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        # find or create user"},{"line_number":65,"context_line":"        try:"},{"line_number":66,"context_line":"            user_id \u003d req.headers[\u0027X_USER\u0027]"},{"line_number":67,"context_line":"        except Exception, e:"},{"line_number":68,"context_line":"            logger.exception(e)"},{"line_number":69,"context_line":"            return webob.exc.HTTPUnauthorized()"},{"line_number":70,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAD3%2F%2F%2F%2Bc%3D","line":67,"updated":"2012-01-06 22:42:22.000000000","message":"If your\u0027e going to name an exception, be specific (e.g. KeyError)","commit_id":"eba50d6750a13f2bcb7500b42030582803ae2fd2"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"0644eb54a2ee5fe5090264bb66747e063965e798","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        # find or create user"},{"line_number":65,"context_line":"        try:"},{"line_number":66,"context_line":"            user_id \u003d req.headers[\u0027X_USER\u0027]"},{"line_number":67,"context_line":"        except Exception, e:"},{"line_number":68,"context_line":"            logger.exception(e)"},{"line_number":69,"context_line":"            return webob.exc.HTTPUnauthorized()"},{"line_number":70,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAD3%2F%2F%2F9U%3D","line":67,"in_reply_to":"AAAAD3%2F%2F%2F%2Bc%3D","updated":"2012-01-06 23:12:14.000000000","message":"I want to pick them all up...","commit_id":"eba50d6750a13f2bcb7500b42030582803ae2fd2"}],"keystone/middleware/url.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"e36eb37217504743b4e6df507873560b4f95b4b0","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    In this case, we return the class that has been moved\"\"\""},{"line_number":38,"context_line":"    logger.warning(\"\u0027%s\u0027 has been moved to \u0027keystone.frontends.normalizer\u0027. \""},{"line_number":39,"context_line":"                    \"Update your configuration file to reflect the change\" %"},{"line_number":40,"context_line":"                    __name__)"},{"line_number":41,"context_line":"    return new_filter_factory(global_conf, **local_conf)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAD3%2F%2F%2F%2BU%3D","line":39,"updated":"2012-01-06 22:42:22.000000000","message":"arbitrary indentation","commit_id":"eba50d6750a13f2bcb7500b42030582803ae2fd2"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"0644eb54a2ee5fe5090264bb66747e063965e798","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    In this case, we return the class that has been moved\"\"\""},{"line_number":38,"context_line":"    logger.warning(\"\u0027%s\u0027 has been moved to \u0027keystone.frontends.normalizer\u0027. \""},{"line_number":39,"context_line":"                    \"Update your configuration file to reflect the change\" %"},{"line_number":40,"context_line":"                    __name__)"},{"line_number":41,"context_line":"    return new_filter_factory(global_conf, **local_conf)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAD3%2F%2F%2F9Q%3D","line":39,"in_reply_to":"AAAAD3%2F%2F%2F%2BU%3D","updated":"2012-01-06 23:12:14.000000000","message":"Done","commit_id":"eba50d6750a13f2bcb7500b42030582803ae2fd2"}],"keystone/utils.py":[{"author":{"_account_id":494,"name":"termie","email":"termie@openstack.org","username":"termie"},"change_message_id":"344c0549e784f7a4a1f75097680742b310ff37cf","unresolved":false,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"def print_to_console(msg):"},{"line_number":199,"context_line":"    \"\"\" Print message to console."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    This will be used to distinguish a message that we intend to output to the"},{"line_number":202,"context_line":"    console as interactive feedback to someone vs debugging and other uses for"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAADH%2F%2F%2FQw%3D","line":199,"updated":"2011-12-30 23:07:44.000000000","message":"Extra whitspace, brah","commit_id":"2501e78dce506736649e2f04b2e57a9d3b21636a"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"ada3c3c8411295afe2de22847a02ef9556ecc79f","unresolved":false,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"def print_to_console(msg):"},{"line_number":199,"context_line":"    \"\"\" Print message to console."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    This will be used to distinguish a message that we intend to output to the"},{"line_number":202,"context_line":"    console as interactive feedback to someone vs debugging and other uses for"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAADH%2F%2F%2FQQ%3D","line":199,"in_reply_to":"AAAADH%2F%2F%2FQw%3D","updated":"2011-12-30 23:23:53.000000000","message":"I\u0027m trying to follow nova hacking doc. What\u0027s the right way to do this?\n\nFrom nova HACKING:\n\"\"\"A multiline docstring has a one-line summary, less than 80 characters.\n\n  Then a new paragraph after a newline that explains in more detail any\n  general information about the function, class or method. Example usages\n  are also great to have here if it is a complex class for function. After\n  you have finished your descriptions add an extra newline and close the\n  quotations.\n\n  When writing the docstring for a class, an extra line should be placed\n  after the closing quotations. For more in-depth explanations for these\n  decisions see http://www.python.org/dev/peps/pep-0257/\n\n  If you are going to describe parameters and return values, use Sphinx, the\n  appropriate syntax is as follows.\n\n  :param foo: the foo parameter\n  :param bar: the bar parameter\n  :returns: return_type -- description of the return value\n  :returns: description of the return value\n  :raises: AttributeError, KeyError\n\n  \"\"\"","commit_id":"2501e78dce506736649e2f04b2e57a9d3b21636a"},{"author":{"_account_id":1816,"name":"Gabriel Hurley","email":"gabriel.hurley@nebula.com","username":"gabriel-hurley"},"change_message_id":"80c7999031ca00aedd197fe8c463a0f25c8a07ae","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    print."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    \"\"\""},{"line_number":206,"context_line":"    print msg"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAADH%2F%2F%2FQo%3D","line":206,"updated":"2011-12-30 23:09:19.000000000","message":"I\u0027m unclear on why you need to print to the console at all. This should be handled either by logging, or, if *really* necessary, should write to sys.stdout.\n\nAll this function does right now is call print by another name.","commit_id":"2501e78dce506736649e2f04b2e57a9d3b21636a"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"177eccc3267fa2be31b2daed159c74ede545abea","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    print."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    \"\"\""},{"line_number":206,"context_line":"    print msg"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAADH%2F%2F%2B18%3D","line":206,"in_reply_to":"AAAADH%2F%2F%2FQM%3D","updated":"2012-01-03 21:12:48.000000000","message":"Stating the obvious: casual debugging output shouldn\u0027t be checked in at all.","commit_id":"2501e78dce506736649e2f04b2e57a9d3b21636a"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"ada3c3c8411295afe2de22847a02ef9556ecc79f","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    print."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    \"\"\""},{"line_number":206,"context_line":"    print msg"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAADH%2F%2F%2FQM%3D","line":206,"in_reply_to":"AAAADH%2F%2F%2FQo%3D","updated":"2011-12-30 23:23:53.000000000","message":"Do you have an example of the correct way to output to the console?\n\nUse case 1: I run ./keystone and want to know it ran without going to a log!\nUse case 2: I check the \u0027screen\u0027 in devstack to see if keystone started on the right ports with the right middleware.","commit_id":"2501e78dce506736649e2f04b2e57a9d3b21636a"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"bbeff818e828da551b8f01593e8d369fe6d01d97","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    print."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    \"\"\""},{"line_number":206,"context_line":"    print msg"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAADH%2F%2F%2FQc%3D","line":206,"in_reply_to":"AAAADH%2F%2F%2FQo%3D","updated":"2011-12-30 23:20:47.000000000","message":"I had suggested doing something like this to replace the print statements that were in the code to display output that wasn\u0027t logging, but informational in nature. I thought having a clear separation between deliberate console output and casual debugging output was preferable.","commit_id":"2501e78dce506736649e2f04b2e57a9d3b21636a"}]}
