)]}'
{"keystone/backends/ldap/api/tenant.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ece1c4a92e23aad4ab035a420415eca30c50cbb2","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        tenant \u003d self._ldap_get(tenant_id)"},{"line_number":73,"context_line":"        res \u003d []"},{"line_number":74,"context_line":"        if not role_id:"},{"line_number":75,"context_line":"            # Get users who have default tenant mapping"},{"line_number":76,"context_line":"            for user_dn in tenant[1].get(\u0027member\u0027, []):"},{"line_number":77,"context_line":"                if self.use_dumb_member and user_dn \u003d\u003d self.DUMB_MEMBER_DN:"},{"line_number":78,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F4vE%3D","line":75,"updated":"2011-11-03 16:19:25.000000000","message":"Support for default tenants is being removed, correct?","commit_id":"8cec79c79279c19c235df765efb1cc5d16dd56a4"},{"author":{"_account_id":8,"name":"Yogeshwar Srikrishnan","email":"yoga80@yahoo.com","username":"yogesh-srikrishnan"},"change_message_id":"23145fd748e56e765350eb01bf28de78fae5a6c3","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        tenant \u003d self._ldap_get(tenant_id)"},{"line_number":73,"context_line":"        res \u003d []"},{"line_number":74,"context_line":"        if not role_id:"},{"line_number":75,"context_line":"            # Get users who have default tenant mapping"},{"line_number":76,"context_line":"            for user_dn in tenant[1].get(\u0027member\u0027, []):"},{"line_number":77,"context_line":"                if self.use_dumb_member and user_dn \u003d\u003d self.DUMB_MEMBER_DN:"},{"line_number":78,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F4uU%3D","line":75,"in_reply_to":"AAAACX%2F%2F4vE%3D","updated":"2011-11-03 16:32:40.000000000","message":"Not yet.That is in the pending commit that is waiting for the migration script.","commit_id":"8cec79c79279c19c235df765efb1cc5d16dd56a4"}],"keystone/backends/sqlalchemy/api/user.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ece1c4a92e23aad4ab035a420415eca30c50cbb2","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            session\u003dNone):"},{"line_number":230,"context_line":"        # This is broken.  If a user has more than one role per project"},{"line_number":231,"context_line":"        # shit hits the fan because we\u0027re limiting the wrong model."},{"line_number":232,"context_line":"        # Also the user lookup is nasty and potentially injectiable."},{"line_number":233,"context_line":"        if not session:"},{"line_number":234,"context_line":"            session \u003d get_session()"},{"line_number":235,"context_line":"        user \u003d aliased(models.UserRoleAssociation)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F4u0%3D","line":232,"updated":"2011-11-03 16:19:25.000000000","message":"Can you address these comments since you\u0027re revising so much of this function?\n\nThe filter().param() stuff is pretty unsettling...","commit_id":"8cec79c79279c19c235df765efb1cc5d16dd56a4"},{"author":{"_account_id":8,"name":"Yogeshwar Srikrishnan","email":"yoga80@yahoo.com","username":"yogesh-srikrishnan"},"change_message_id":"23145fd748e56e765350eb01bf28de78fae5a6c3","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            session\u003dNone):"},{"line_number":230,"context_line":"        # This is broken.  If a user has more than one role per project"},{"line_number":231,"context_line":"        # shit hits the fan because we\u0027re limiting the wrong model."},{"line_number":232,"context_line":"        # Also the user lookup is nasty and potentially injectiable."},{"line_number":233,"context_line":"        if not session:"},{"line_number":234,"context_line":"            session \u003d get_session()"},{"line_number":235,"context_line":"        user \u003d aliased(models.UserRoleAssociation)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F4uQ%3D","line":232,"in_reply_to":"AAAACX%2F%2F4u0%3D","updated":"2011-11-03 16:32:40.000000000","message":"That should be a separate issue. Already this is doing lot of stuff.","commit_id":"8cec79c79279c19c235df765efb1cc5d16dd56a4"}],"keystone/test/functional/common.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ece1c4a92e23aad4ab035a420415eca30c50cbb2","unresolved":false,"context_lines":[{"line_number":235,"context_line":"    def get_tenant_users(self, tenant_id, **kwargs):"},{"line_number":236,"context_line":"        \"\"\"GET /tenants/{tenant_id}/users\"\"\""},{"line_number":237,"context_line":"        return self.admin_request(method\u003d\u0027GET\u0027,"},{"line_number":238,"context_line":"            path\u003d\u0027/tenants/%s\u0027 % (tenant_id,), **kwargs)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def delete_tenant(self, tenant_id, **kwargs):"},{"line_number":241,"context_line":"        \"\"\"DELETE /tenants/{tenant_id}\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F4uo%3D","side":"PARENT","line":238,"updated":"2011-11-03 16:19:25.000000000","message":"Glad to see this fixed, but ... were there absolutely no tests for this call?! I don\u0027t understand how that could have made it to trunk.","commit_id":"4d774dbdbf68b8e6ac267e6b2db359d4a7b49aff"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ece1c4a92e23aad4ab035a420415eca30c50cbb2","unresolved":false,"context_lines":[{"line_number":633,"context_line":"    def list_tenant_users(self, tenant_id, role_id\u003dNone, **kwargs):"},{"line_number":634,"context_line":"        tenant_id \u003d optional_str(tenant_id)"},{"line_number":635,"context_line":"        if role_id:"},{"line_number":636,"context_line":"            return self.get_tenant_users_by_role(tenant_id, role_id, **kwargs)"},{"line_number":637,"context_line":"        else:"},{"line_number":638,"context_line":"            return self.get_tenant_users(tenant_id, **kwargs)"},{"line_number":639,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F4ug%3D","line":636,"updated":"2011-11-03 16:19:25.000000000","message":"Seems like this decision should be made by get_tenant_users_by_role... if no role_id is provided to it, it should call the normal function.","commit_id":"8cec79c79279c19c235df765efb1cc5d16dd56a4"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"655902036d7d43e661ab575d032c647cb3053a60","unresolved":false,"context_lines":[{"line_number":633,"context_line":"    def list_tenant_users(self, tenant_id, role_id\u003dNone, **kwargs):"},{"line_number":634,"context_line":"        tenant_id \u003d optional_str(tenant_id)"},{"line_number":635,"context_line":"        if role_id:"},{"line_number":636,"context_line":"            return self.get_tenant_users_by_role(tenant_id, role_id, **kwargs)"},{"line_number":637,"context_line":"        else:"},{"line_number":638,"context_line":"            return self.get_tenant_users(tenant_id, **kwargs)"},{"line_number":639,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F4t8%3D","line":636,"in_reply_to":"AAAACX%2F%2F4uM%3D","updated":"2011-11-03 16:49:13.000000000","message":"You\u0027re correct -- I thought this was in the service layer -- not in tests!","commit_id":"8cec79c79279c19c235df765efb1cc5d16dd56a4"},{"author":{"_account_id":8,"name":"Yogeshwar Srikrishnan","email":"yoga80@yahoo.com","username":"yogesh-srikrishnan"},"change_message_id":"23145fd748e56e765350eb01bf28de78fae5a6c3","unresolved":false,"context_lines":[{"line_number":633,"context_line":"    def list_tenant_users(self, tenant_id, role_id\u003dNone, **kwargs):"},{"line_number":634,"context_line":"        tenant_id \u003d optional_str(tenant_id)"},{"line_number":635,"context_line":"        if role_id:"},{"line_number":636,"context_line":"            return self.get_tenant_users_by_role(tenant_id, role_id, **kwargs)"},{"line_number":637,"context_line":"        else:"},{"line_number":638,"context_line":"            return self.get_tenant_users(tenant_id, **kwargs)"},{"line_number":639,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F4uM%3D","line":636,"in_reply_to":"AAAACX%2F%2F4ug%3D","updated":"2011-11-03 16:32:40.000000000","message":"If you see get_tenant_users_by_role it also documents the actual call\n     \"\"\"GET /tenants/{tenant_id}/users?roleId\u003d{roleId}\"\"\"\nI wanted to keep them separate so that I could document calls in a clean way\n\"\"\"GET /tenants/{tenant_id}/users\"\"\"","commit_id":"8cec79c79279c19c235df765efb1cc5d16dd56a4"}],"keystone/test/functional/test_tenants.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ece1c4a92e23aad4ab035a420415eca30c50cbb2","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        super(TenantTest, self).setUp(*args, **kwargs)"},{"line_number":231,"context_line":"        self.tenant \u003d self.create_tenant().json[\u0027tenant\u0027]"},{"line_number":232,"context_line":"        password \u003d common.unique_str()"},{"line_number":233,"context_line":"        self.user \u003d self.create_user(user_password\u003dpassword).json[\u0027user\u0027]"},{"line_number":234,"context_line":"        self.user[\u0027password\u0027] \u003d password"},{"line_number":235,"context_line":"        self.role \u003d self.create_role().json[\u0027role\u0027]"},{"line_number":236,"context_line":"        self.grant_role_to_user(self.user[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F4uc%3D","line":233,"updated":"2011-11-03 16:19:25.000000000","message":"There\u0027s a shortcut for this in functional/common: see create_user_with_known_password()","commit_id":"8cec79c79279c19c235df765efb1cc5d16dd56a4"}]}
