)]}'
{"keystone/logic/service.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"c0264e3ea23be199d1f6e23742f434a33962fbf0","unresolved":false,"context_lines":[{"line_number":531,"context_line":"        for dtenant in dtenants:"},{"line_number":532,"context_line":"            t \u003d Tenant(id\u003ddtenant.id, name\u003ddtenant.name,"},{"line_number":533,"context_line":"                description\u003ddtenant.desc, enabled\u003ddtenant.enabled)"},{"line_number":534,"context_line":"            ts.append(t)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        links \u003d self.get_links(url, prev_page, next_page, limit)"},{"line_number":537,"context_line":"        return Tenants(ts, links)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F6do%3D","side":"PARENT","line":534,"updated":"2011-12-27 16:39:56.000000000","message":"First, don\u0027t use single-letter names unless it\u0027s a standard loop counter like \u0027i\u0027 or \u0027j\u0027.\n\nSecond, a list comp would be much cleaner. Remove line 513, and then replace lines 542-545 with:\n\nts \u003d [Tenant(id\u003ddtenant.id, name\u003ddtenant.name, description\u003ddtenant.desc,\n\t\tenabled\u003ddtenant.enabled)\n\t\tfor dtenant in dtenants]","commit_id":"6c40cc9223f76f9242475b8f55165b38ff0999c7"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"c0264e3ea23be199d1f6e23742f434a33962fbf0","unresolved":false,"context_lines":[{"line_number":519,"context_line":"            default_tenant \u003d user.tenant_id"},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"            if scope is None or \\"},{"line_number":522,"context_line":"                (scope and default_tenant and scope \u003d\u003d default_tenant):"},{"line_number":523,"context_line":"                # Return all tenants specific to user if token has no scope"},{"line_number":524,"context_line":"                # or if token is scoped to a default tenant"},{"line_number":525,"context_line":"                dtenants \u003d api.TENANT.tenants_for_user_get_page("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F6dw%3D","line":522,"updated":"2011-12-27 16:39:56.000000000","message":"I would add more parens to make the comparisons explicit:\n\nif scope is None or \\\n    ((scope and default_tenant) and (scope \u003d\u003d default_tenant)):","commit_id":"adc1f1700f2b14812baea61ea8e4036c6d584e47"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"6a928fd23633383a0d8c2ad1506b03b5480e495b","unresolved":false,"context_lines":[{"line_number":519,"context_line":"            default_tenant \u003d user.tenant_id"},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"            if scope is None or \\"},{"line_number":522,"context_line":"                (scope and default_tenant and scope \u003d\u003d default_tenant):"},{"line_number":523,"context_line":"                # Return all tenants specific to user if token has no scope"},{"line_number":524,"context_line":"                # or if token is scoped to a default tenant"},{"line_number":525,"context_line":"                dtenants \u003d api.TENANT.tenants_for_user_get_page("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F6bQ%3D","line":522,"in_reply_to":"AAAAC3%2F%2F6dw%3D","updated":"2011-12-27 17:12:11.000000000","message":"Done","commit_id":"adc1f1700f2b14812baea61ea8e4036c6d584e47"}],"keystone/test/functional/test_authentication.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"c0264e3ea23be199d1f6e23742f434a33962fbf0","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        self.grant_role_to_user(self.nodefaultuser[\u0027id\u0027], self.role[\u0027id\u0027],"},{"line_number":252,"context_line":"                                self.tenant[\u0027id\u0027])"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        r \u003d self.authenticate(self.nodefaultuser[\u0027name\u0027],"},{"line_number":255,"context_line":"                              self.nodefaultuser[\u0027password\u0027],"},{"line_number":256,"context_line":"                              tenant_id \u003d None, assert_status\u003d200)"},{"line_number":257,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F6dc%3D","line":254,"updated":"2011-12-27 16:39:56.000000000","message":"Don\u0027t use single-letter names. Use something descriptive.","commit_id":"adc1f1700f2b14812baea61ea8e4036c6d584e47"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"6a928fd23633383a0d8c2ad1506b03b5480e495b","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        self.grant_role_to_user(self.nodefaultuser[\u0027id\u0027], self.role[\u0027id\u0027],"},{"line_number":252,"context_line":"                                self.tenant[\u0027id\u0027])"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        r \u003d self.authenticate(self.nodefaultuser[\u0027name\u0027],"},{"line_number":255,"context_line":"                              self.nodefaultuser[\u0027password\u0027],"},{"line_number":256,"context_line":"                              tenant_id \u003d None, assert_status\u003d200)"},{"line_number":257,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F6bI%3D","line":254,"in_reply_to":"AAAAC3%2F%2F6dc%3D","updated":"2011-12-27 17:12:11.000000000","message":"Done","commit_id":"adc1f1700f2b14812baea61ea8e4036c6d584e47"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"c0264e3ea23be199d1f6e23742f434a33962fbf0","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        r \u003d self.authenticate(self.nodefaultuser[\u0027name\u0027],"},{"line_number":255,"context_line":"                              self.nodefaultuser[\u0027password\u0027],"},{"line_number":256,"context_line":"                              tenant_id \u003d None, assert_status\u003d200)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        self.assertIsNotNone(r.json[\u0027access\u0027][\u0027token\u0027])"},{"line_number":259,"context_line":"        self.assertNotIn(\u0027tenant\u0027, r.json[\u0027access\u0027][\u0027token\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F6dg%3D","line":256,"updated":"2011-12-27 16:39:56.000000000","message":"Should not have spaces around the \u0027\u003d\u0027.","commit_id":"adc1f1700f2b14812baea61ea8e4036c6d584e47"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"6a928fd23633383a0d8c2ad1506b03b5480e495b","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        r \u003d self.authenticate(self.nodefaultuser[\u0027name\u0027],"},{"line_number":255,"context_line":"                              self.nodefaultuser[\u0027password\u0027],"},{"line_number":256,"context_line":"                              tenant_id \u003d None, assert_status\u003d200)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        self.assertIsNotNone(r.json[\u0027access\u0027][\u0027token\u0027])"},{"line_number":259,"context_line":"        self.assertNotIn(\u0027tenant\u0027, r.json[\u0027access\u0027][\u0027token\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F6bE%3D","line":256,"in_reply_to":"AAAAC3%2F%2F6dg%3D","updated":"2011-12-27 17:12:11.000000000","message":"Done","commit_id":"adc1f1700f2b14812baea61ea8e4036c6d584e47"}],"keystone/test/functional/test_tenants.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"c0264e3ea23be199d1f6e23742f434a33962fbf0","unresolved":false,"context_lines":[{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    def test_get_tenants_default_and_role(self):"},{"line_number":283,"context_line":"        \"\"\" Validates that the GET /tenants call returns tenants that are"},{"line_number":284,"context_line":"        assigned to the user by role AND by default tenant setting \"\"\""},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def test_get_tenants_blank(self):"},{"line_number":287,"context_line":"        # Create user with no default tenant set"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F6dU%3D","line":284,"updated":"2011-12-27 16:39:56.000000000","message":"Is this supposed to be an empty method? Either remove it, or add a \u0027pass\u0027 statement along with an explanation as to why this needs to be here.","commit_id":"adc1f1700f2b14812baea61ea8e4036c6d584e47"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"6a928fd23633383a0d8c2ad1506b03b5480e495b","unresolved":false,"context_lines":[{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    def test_get_tenants_default_and_role(self):"},{"line_number":283,"context_line":"        \"\"\" Validates that the GET /tenants call returns tenants that are"},{"line_number":284,"context_line":"        assigned to the user by role AND by default tenant setting \"\"\""},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def test_get_tenants_blank(self):"},{"line_number":287,"context_line":"        # Create user with no default tenant set"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F6bA%3D","line":284,"in_reply_to":"AAAAC3%2F%2F6dU%3D","updated":"2011-12-27 17:12:11.000000000","message":"Done","commit_id":"adc1f1700f2b14812baea61ea8e4036c6d584e47"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"c0264e3ea23be199d1f6e23742f434a33962fbf0","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        # Create user with no default tenant set"},{"line_number":288,"context_line":"        self.nodefaultuser \u003d self.create_user_with_known_password()\\"},{"line_number":289,"context_line":"                                            .json[\u0027user\u0027]"},{"line_number":290,"context_line":"        r \u003d self.authenticate(self.nodefaultuser[\u0027name\u0027],"},{"line_number":291,"context_line":"                              self.nodefaultuser[\u0027password\u0027],"},{"line_number":292,"context_line":"                              tenant_id \u003d None, assert_status\u003d200)"},{"line_number":293,"context_line":"        token_id \u003d r.json[\u0027access\u0027][\u0027token\u0027][\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F6dI%3D","line":290,"updated":"2011-12-27 16:39:56.000000000","message":"Same comment as in other scripts: don\u0027t use single-letter names. (multiple places in this script).","commit_id":"adc1f1700f2b14812baea61ea8e4036c6d584e47"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"6a928fd23633383a0d8c2ad1506b03b5480e495b","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        # Create user with no default tenant set"},{"line_number":288,"context_line":"        self.nodefaultuser \u003d self.create_user_with_known_password()\\"},{"line_number":289,"context_line":"                                            .json[\u0027user\u0027]"},{"line_number":290,"context_line":"        r \u003d self.authenticate(self.nodefaultuser[\u0027name\u0027],"},{"line_number":291,"context_line":"                              self.nodefaultuser[\u0027password\u0027],"},{"line_number":292,"context_line":"                              tenant_id \u003d None, assert_status\u003d200)"},{"line_number":293,"context_line":"        token_id \u003d r.json[\u0027access\u0027][\u0027token\u0027][\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F6aw%3D","line":290,"in_reply_to":"AAAAC3%2F%2F6dI%3D","updated":"2011-12-27 17:12:11.000000000","message":"Done","commit_id":"adc1f1700f2b14812baea61ea8e4036c6d584e47"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"c0264e3ea23be199d1f6e23742f434a33962fbf0","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        token_id \u003d r.json[\u0027access\u0027][\u0027token\u0027][\u0027id\u0027]"},{"line_number":310,"context_line":"        r \u003d self.get_tenants(request_type\u003d\u0027service\u0027, use_token\u003dtoken_id)"},{"line_number":311,"context_line":"        tenants \u003d r.json[\u0027tenants\u0027]"},{"line_number":312,"context_line":"        second_tenant \u003d [tenant for tenant in tenants \\"},{"line_number":313,"context_line":"                          if tenant[\u0027id\u0027] \u003d\u003d other_tenant[\u0027id\u0027]]"},{"line_number":314,"context_line":"        self.assertTrue(len(second_tenant) \u003e 0,"},{"line_number":315,"context_line":"                        \"Tenants with roles assigned should be returned\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F6c0%3D","line":312,"updated":"2011-12-27 16:39:56.000000000","message":"Continued lines inside of brackets/parens don\u0027t need trailing backslashes (applies to multiple places).","commit_id":"adc1f1700f2b14812baea61ea8e4036c6d584e47"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"6a928fd23633383a0d8c2ad1506b03b5480e495b","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        token_id \u003d r.json[\u0027access\u0027][\u0027token\u0027][\u0027id\u0027]"},{"line_number":310,"context_line":"        r \u003d self.get_tenants(request_type\u003d\u0027service\u0027, use_token\u003dtoken_id)"},{"line_number":311,"context_line":"        tenants \u003d r.json[\u0027tenants\u0027]"},{"line_number":312,"context_line":"        second_tenant \u003d [tenant for tenant in tenants \\"},{"line_number":313,"context_line":"                          if tenant[\u0027id\u0027] \u003d\u003d other_tenant[\u0027id\u0027]]"},{"line_number":314,"context_line":"        self.assertTrue(len(second_tenant) \u003e 0,"},{"line_number":315,"context_line":"                        \"Tenants with roles assigned should be returned\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F6as%3D","line":312,"in_reply_to":"AAAAC3%2F%2F6c0%3D","updated":"2011-12-27 17:12:11.000000000","message":"Done","commit_id":"adc1f1700f2b14812baea61ea8e4036c6d584e47"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"c0264e3ea23be199d1f6e23742f434a33962fbf0","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        self.grant_role_to_user(self.tenant_user[\u0027id\u0027], role[\u0027id\u0027],"},{"line_number":329,"context_line":"                                other_tenant[\u0027id\u0027])"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        # Authenticate scp[ed to the non-default tenant"},{"line_number":332,"context_line":"        r \u003d self.authenticate(self.tenant_user[\u0027name\u0027],"},{"line_number":333,"context_line":"                              self.tenant_user[\u0027password\u0027],"},{"line_number":334,"context_line":"                              tenant_id \u003d other_tenant[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F6dA%3D","line":331,"updated":"2011-12-27 16:39:56.000000000","message":"typo?","commit_id":"adc1f1700f2b14812baea61ea8e4036c6d584e47"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"6a928fd23633383a0d8c2ad1506b03b5480e495b","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        self.grant_role_to_user(self.tenant_user[\u0027id\u0027], role[\u0027id\u0027],"},{"line_number":329,"context_line":"                                other_tenant[\u0027id\u0027])"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        # Authenticate scp[ed to the non-default tenant"},{"line_number":332,"context_line":"        r \u003d self.authenticate(self.tenant_user[\u0027name\u0027],"},{"line_number":333,"context_line":"                              self.tenant_user[\u0027password\u0027],"},{"line_number":334,"context_line":"                              tenant_id \u003d other_tenant[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F6ao%3D","line":331,"in_reply_to":"AAAAC3%2F%2F6dA%3D","updated":"2011-12-27 17:12:11.000000000","message":"Done","commit_id":"adc1f1700f2b14812baea61ea8e4036c6d584e47"}],"keystone/test/unit/test_backends.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"c0264e3ea23be199d1f6e23742f434a33962fbf0","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            \"hash-password\": \"False\","},{"line_number":186,"context_line":"            \u0027keystone.backends.sqlalchemy\u0027: {"},{"line_number":187,"context_line":"                \"sql_connection\": \"sqlite:///%s\" % self.database_name,"},{"line_number":188,"context_line":"                \"backend_entities\": \"[\u0027Service\u0027, \u0027Endpoints\u0027, \u0027Tenant\u0027,\\"},{"line_number":189,"context_line":"                            \u0027EndpointTemplates\u0027]\","},{"line_number":190,"context_line":"                \"sql_idle_timeout\": \"30\""},{"line_number":191,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F6cs%3D","line":188,"updated":"2011-12-27 16:39:56.000000000","message":"No trailing backslash needed.","commit_id":"adc1f1700f2b14812baea61ea8e4036c6d584e47"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"6a928fd23633383a0d8c2ad1506b03b5480e495b","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            \"hash-password\": \"False\","},{"line_number":186,"context_line":"            \u0027keystone.backends.sqlalchemy\u0027: {"},{"line_number":187,"context_line":"                \"sql_connection\": \"sqlite:///%s\" % self.database_name,"},{"line_number":188,"context_line":"                \"backend_entities\": \"[\u0027Service\u0027, \u0027Endpoints\u0027, \u0027Tenant\u0027,\\"},{"line_number":189,"context_line":"                            \u0027EndpointTemplates\u0027]\","},{"line_number":190,"context_line":"                \"sql_idle_timeout\": \"30\""},{"line_number":191,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F6ak%3D","line":188,"in_reply_to":"AAAAC3%2F%2F6cs%3D","updated":"2011-12-27 17:12:11.000000000","message":"It\u0027s in a string (not in brackets)","commit_id":"adc1f1700f2b14812baea61ea8e4036c6d584e47"}]}
