)]}'
{"keystone/logic/extension_reader.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"2e8025ff1125283c22e4a37f6e2444f3caf0873c","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    extension_name - extension name"},{"line_number":26,"context_line":"    extension_name is case-sensitive."},{"line_number":27,"context_line":"    \"\"\""},{"line_number":28,"context_line":"    if extension_name is not None and options is not None:"},{"line_number":29,"context_line":"        return extension_name in get_supported_extensions(options)"},{"line_number":30,"context_line":"    return False"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAADH%2F%2F%2FsE%3D","line":28,"updated":"2011-12-29 17:38:34.000000000","message":"Use parens to make the separate conditions clearer:\n\nif (extension_name is not None) and (options is not None):","commit_id":"c0ad55d99264409009e7c297fc0ead2744c82a29"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"298c12b0315b88a6ace510dfe935a5e5534071e2","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    extension_name - extension name"},{"line_number":26,"context_line":"    extension_name is case-sensitive."},{"line_number":27,"context_line":"    \"\"\""},{"line_number":28,"context_line":"    if extension_name is not None and options is not None:"},{"line_number":29,"context_line":"        return extension_name in get_supported_extensions(options)"},{"line_number":30,"context_line":"    return False"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAADH%2F%2F%2Fo4%3D","line":28,"in_reply_to":"AAAADH%2F%2F%2FsE%3D","updated":"2011-12-29 19:13:54.000000000","message":"Done","commit_id":"c0ad55d99264409009e7c297fc0ead2744c82a29"}],"keystone/logic/service.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"2e8025ff1125283c22e4a37f6e2444f3caf0873c","unresolved":false,"context_lines":[{"line_number":339,"context_line":"    \"\"\""},{"line_number":340,"context_line":"    if service_ids:"},{"line_number":341,"context_line":"        service_ids \u003d service_ids.rstrip()"},{"line_number":342,"context_line":"        return service_ids.split(\u0027,\u0027)"},{"line_number":343,"context_line":"    return []"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAADH%2F%2F%2FsA%3D","line":342,"updated":"2011-12-29 17:38:34.000000000","message":"Only one line needed here:\n\nreturn service_ids.rstrip().split(\u0027,\u0027)","commit_id":"c0ad55d99264409009e7c297fc0ead2744c82a29"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"298c12b0315b88a6ace510dfe935a5e5534071e2","unresolved":false,"context_lines":[{"line_number":339,"context_line":"    \"\"\""},{"line_number":340,"context_line":"    if service_ids:"},{"line_number":341,"context_line":"        service_ids \u003d service_ids.rstrip()"},{"line_number":342,"context_line":"        return service_ids.split(\u0027,\u0027)"},{"line_number":343,"context_line":"    return []"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAADH%2F%2F%2Fow%3D","line":342,"in_reply_to":"AAAADH%2F%2F%2FsA%3D","updated":"2011-12-29 19:13:54.000000000","message":"Done","commit_id":"c0ad55d99264409009e7c297fc0ead2744c82a29"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"2e8025ff1125283c22e4a37f6e2444f3caf0873c","unresolved":false,"context_lines":[{"line_number":352,"context_line":"    \"\"\""},{"line_number":353,"context_line":"    if not service_ids:"},{"line_number":354,"context_line":"        raise fault.UnauthorizedFault(\"Missing service IDs\")"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    for service_id in service_ids:"},{"line_number":357,"context_line":"        if not service_id \u003d\u003d backends.GLOBAL_SERVICE_ID:"},{"line_number":358,"context_line":"            service \u003d api.SERVICE.get(service_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAADH%2F%2F%2Fr8%3D","line":355,"updated":"2011-12-29 17:38:34.000000000","message":"The following block could be made much more efficient:\n\nservices \u003d [api.SERVICE.get(service_id) for service_id in service_ids\n        if not service_id \u003d\u003d backends.GLOBAL_SERVICE_ID]\nif not all(services):\n    raise fault.UnauthorizedFault(\"Invalid service ID: %s\" % (service_id))","commit_id":"c0ad55d99264409009e7c297fc0ead2744c82a29"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"298c12b0315b88a6ace510dfe935a5e5534071e2","unresolved":false,"context_lines":[{"line_number":352,"context_line":"    \"\"\""},{"line_number":353,"context_line":"    if not service_ids:"},{"line_number":354,"context_line":"        raise fault.UnauthorizedFault(\"Missing service IDs\")"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    for service_id in service_ids:"},{"line_number":357,"context_line":"        if not service_id \u003d\u003d backends.GLOBAL_SERVICE_ID:"},{"line_number":358,"context_line":"            service \u003d api.SERVICE.get(service_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAADH%2F%2F%2Fos%3D","line":355,"in_reply_to":"AAAADH%2F%2F%2Fr8%3D","updated":"2011-12-29 19:13:54.000000000","message":"Done","commit_id":"c0ad55d99264409009e7c297fc0ead2744c82a29"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"2e8025ff1125283c22e4a37f6e2444f3caf0873c","unresolved":false,"context_lines":[{"line_number":372,"context_line":"            sroles \u003d api.ROLE.get_by_service(service_id\u003dservice_id)"},{"line_number":373,"context_line":"            if sroles:"},{"line_number":374,"context_line":"                roles \u003d roles + sroles"},{"line_number":375,"context_line":"    return map(lambda role: role.name, roles)"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"def get_global_roles_for_user(user_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAADH%2F%2F%2Fr4%3D","line":375,"updated":"2011-12-29 17:38:34.000000000","message":"Don\u0027t use map if avoidable; use a list comprehension instead:\n\nreturn [role.name for role in roles]","commit_id":"c0ad55d99264409009e7c297fc0ead2744c82a29"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"298c12b0315b88a6ace510dfe935a5e5534071e2","unresolved":false,"context_lines":[{"line_number":372,"context_line":"            sroles \u003d api.ROLE.get_by_service(service_id\u003dservice_id)"},{"line_number":373,"context_line":"            if sroles:"},{"line_number":374,"context_line":"                roles \u003d roles + sroles"},{"line_number":375,"context_line":"    return map(lambda role: role.name, roles)"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"def get_global_roles_for_user(user_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAADH%2F%2F%2Fok%3D","line":375,"in_reply_to":"AAAADH%2F%2F%2Fr4%3D","updated":"2011-12-29 19:13:54.000000000","message":"Done","commit_id":"c0ad55d99264409009e7c297fc0ead2744c82a29"}],"keystone/manage/api.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"2e8025ff1125283c22e4a37f6e2444f3caf0873c","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        # name has service name prefix, use it instead"},{"line_number":62,"context_line":"        names \u003d name.split(\":\")"},{"line_number":63,"context_line":"        if len(names) \u003d\u003d 2 and len(names[0]) \u003e 0:"},{"line_number":64,"context_line":"            service_name \u003d names[0]"},{"line_number":65,"context_line":"    if service_name:"},{"line_number":66,"context_line":"        # we have a role with service prefix, fill in the service ID"},{"line_number":67,"context_line":"        service \u003d db_api.SERVICE.get_by_name(name\u003dservice_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAADH%2F%2F%2Fro%3D","line":64,"updated":"2011-12-29 17:38:34.000000000","message":"The block from 60-64 could be simplified:\n\nnames \u003d name.split(\":\")\nif len(names) \u003d\u003d 2:\n\tservice_name \u003d names[0] or service_name","commit_id":"c0ad55d99264409009e7c297fc0ead2744c82a29"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"298c12b0315b88a6ace510dfe935a5e5534071e2","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        # name has service name prefix, use it instead"},{"line_number":62,"context_line":"        names \u003d name.split(\":\")"},{"line_number":63,"context_line":"        if len(names) \u003d\u003d 2 and len(names[0]) \u003e 0:"},{"line_number":64,"context_line":"            service_name \u003d names[0]"},{"line_number":65,"context_line":"    if service_name:"},{"line_number":66,"context_line":"        # we have a role with service prefix, fill in the service ID"},{"line_number":67,"context_line":"        service \u003d db_api.SERVICE.get_by_name(name\u003dservice_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAADH%2F%2F%2FoY%3D","line":64,"in_reply_to":"AAAADH%2F%2F%2Fro%3D","updated":"2011-12-29 19:13:54.000000000","message":"Done","commit_id":"c0ad55d99264409009e7c297fc0ead2744c82a29"}],"keystone/middleware/quantum_auth_token.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"2e8025ff1125283c22e4a37f6e2444f3caf0873c","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    def _build_token_uri(self, claims\u003dNone):"},{"line_number":134,"context_line":"        uri \u003d \"/v\" + self.auth_api_version + \"/tokens\" + \\"},{"line_number":135,"context_line":"              (claims and \u0027/\u0027 + claims or \u0027\u0027)"},{"line_number":136,"context_line":"        return uri"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def __init__(self, app, conf):"},{"line_number":139,"context_line":"        \"\"\" Common initialization code \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAADH%2F%2F%2Frk%3D","side":"PARENT","line":136,"updated":"2011-12-29 17:38:34.000000000","message":"I had commented about the confusion of this code in your previous commit. Please change this to make it more readable:\n\ndef _build_token_uri(self, claims\u003dNone):\n    claim_str \u003d \"/%s\" % claims if claims else \"\"\n    return \"/v%s/tokens%s\" % (self.auth_api_version, claim_str)","commit_id":"3f2b53586ca804115d8cf91e43f63ec7a300e82c"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"298c12b0315b88a6ace510dfe935a5e5534071e2","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    def _build_token_uri(self, claims\u003dNone):"},{"line_number":134,"context_line":"        uri \u003d \"/v\" + self.auth_api_version + \"/tokens\" + \\"},{"line_number":135,"context_line":"              (claims and \u0027/\u0027 + claims or \u0027\u0027)"},{"line_number":136,"context_line":"        return uri"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def __init__(self, app, conf):"},{"line_number":139,"context_line":"        \"\"\" Common initialization code \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAADH%2F%2F%2FoQ%3D","side":"PARENT","line":136,"in_reply_to":"AAAADH%2F%2F%2Frk%3D","updated":"2011-12-29 19:13:54.000000000","message":"Done","commit_id":"3f2b53586ca804115d8cf91e43f63ec7a300e82c"}],"keystone/test/etc/ldap.conf.template":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"2e8025ff1125283c22e4a37f6e2444f3caf0873c","unresolved":false,"context_lines":[{"line_number":5,"context_line":"log_file \u003d %(test_dir)s/keystone.ldap.log"},{"line_number":6,"context_line":"log_dir \u003d %(test_dir)s"},{"line_number":7,"context_line":"backends \u003d keystone.backends.sqlalchemy,keystone.backends.ldap"},{"line_number":8,"context_line":"extensions\u003d osksadm,oskscatalog,hpidm"},{"line_number":9,"context_line":"service-header-mappings \u003d {"},{"line_number":10,"context_line":"    \u0027nova\u0027 : \u0027X-Server-Management-Url\u0027,"},{"line_number":11,"context_line":"    \u0027swift\u0027 : \u0027X-Storage-Url\u0027,"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAADH%2F%2F%2Frg%3D","line":8,"updated":"2011-12-29 17:38:34.000000000","message":"I know that the old code was also incorrectly formatted, but if you are changing the code, you should also correct the formatting. There should be a space on either side of the equals sign in this line. Please correct this here and in the other template files.","commit_id":"c0ad55d99264409009e7c297fc0ead2744c82a29"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"298c12b0315b88a6ace510dfe935a5e5534071e2","unresolved":false,"context_lines":[{"line_number":5,"context_line":"log_file \u003d %(test_dir)s/keystone.ldap.log"},{"line_number":6,"context_line":"log_dir \u003d %(test_dir)s"},{"line_number":7,"context_line":"backends \u003d keystone.backends.sqlalchemy,keystone.backends.ldap"},{"line_number":8,"context_line":"extensions\u003d osksadm,oskscatalog,hpidm"},{"line_number":9,"context_line":"service-header-mappings \u003d {"},{"line_number":10,"context_line":"    \u0027nova\u0027 : \u0027X-Server-Management-Url\u0027,"},{"line_number":11,"context_line":"    \u0027swift\u0027 : \u0027X-Storage-Url\u0027,"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAADH%2F%2F%2Fns%3D","line":8,"in_reply_to":"AAAADH%2F%2F%2Frg%3D","updated":"2011-12-29 19:13:54.000000000","message":"This is a config file, does that still apply?\nDone anyway, just asking...\n\nWhat I do think is the code should not be sensitive to spacing here. And that was a bug in the existing code which I just fixed.","commit_id":"c0ad55d99264409009e7c297fc0ead2744c82a29"}],"keystone/test/functional/common.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"2e8025ff1125283c22e4a37f6e2444f3caf0873c","unresolved":false,"context_lines":[{"line_number":1220,"context_line":"        The role name and description are generated from UUIDs."},{"line_number":1221,"context_line":"        \"\"\""},{"line_number":1222,"context_line":"        if service_name and not role_name:"},{"line_number":1223,"context_line":"            role_name \u003d service_name + \":\" + optional_str(role_name)"},{"line_number":1224,"context_line":"        else:"},{"line_number":1225,"context_line":"            role_name \u003d optional_str(role_name)"},{"line_number":1226,"context_line":"        role_description \u003d optional_str(role_description)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAADH%2F%2F%2Frc%3D","line":1223,"updated":"2011-12-29 17:38:34.000000000","message":"Not a huge issue, but generally string concatenation in Python is to be avoided, and string formatting used instead:\n\nrole_name \u003d \"%s:%s\" % service_name, optional_str(role_name))","commit_id":"c0ad55d99264409009e7c297fc0ead2744c82a29"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"298c12b0315b88a6ace510dfe935a5e5534071e2","unresolved":false,"context_lines":[{"line_number":1220,"context_line":"        The role name and description are generated from UUIDs."},{"line_number":1221,"context_line":"        \"\"\""},{"line_number":1222,"context_line":"        if service_name and not role_name:"},{"line_number":1223,"context_line":"            role_name \u003d service_name + \":\" + optional_str(role_name)"},{"line_number":1224,"context_line":"        else:"},{"line_number":1225,"context_line":"            role_name \u003d optional_str(role_name)"},{"line_number":1226,"context_line":"        role_description \u003d optional_str(role_description)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAADH%2F%2F%2Fno%3D","line":1223,"in_reply_to":"AAAADH%2F%2F%2Frc%3D","updated":"2011-12-29 19:13:54.000000000","message":"Done (with parens).\nrole_name \u003d \"%s:%s\" % (service_name, optional_str(role_name))","commit_id":"c0ad55d99264409009e7c297fc0ead2744c82a29"}]}
