)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"37e57c7476acd9c44eb665003ae57877fda6b5b5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Thai Tran \u003ctqtran@us.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-09-08 14:23:39 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Supporting JSON format for Account ACL in keystoneauth"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the ability to store Account ACL in JSON format for"},{"line_number":10,"context_line":"KeystoneAuth. Right now it only supports storing user ids as discussed."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9a89bdaa_c488b0c9","line":7,"updated":"2016-09-09 11:32:10.000000000","message":"\"JSON format for\" seems unnecessary, the patch is adding support for account ACLs, no other format is currently supported.","commit_id":"e2e99e78ef5bbf12881eb50fb9e128911f264e0c"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"88d217e0e91caa568777cef124c1d338a2fda2db","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Thai Tran \u003ctqtran@us.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-09-08 14:23:39 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Supporting JSON format for Account ACL in keystoneauth"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the ability to store Account ACL in JSON format for"},{"line_number":10,"context_line":"KeystoneAuth. Right now it only supports storing user ids as discussed."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9a89bdaa_cfba726e","line":7,"in_reply_to":"9a89bdaa_c488b0c9","updated":"2016-09-09 18:15:24.000000000","message":"Done","commit_id":"e2e99e78ef5bbf12881eb50fb9e128911f264e0c"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"37e57c7476acd9c44eb665003ae57877fda6b5b5","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Supporting JSON format for Account ACL in keystoneauth"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the ability to store Account ACL in JSON format for"},{"line_number":10,"context_line":"KeystoneAuth. Right now it only supports storing user ids as discussed."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"In addition, this patch extracted common code from TempAuth into"},{"line_number":13,"context_line":"AuthMixin. KeystoneAuth and TempAuth both inherit from AuthMixin."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9a89bdaa_44ed808d","line":10,"updated":"2016-09-09 11:32:10.000000000","message":"\"as discussed\" where? This is tricky, because ephemeral hyperlinks aren\u0027t great in commit messages. Maybe it would be best to include a brief discussion of why only user_ids are supported here in the commit message, and whether other ACLs could be supported in future or are precluded by this change. An obvious improvement would be to support combinations of project and user IDs.","commit_id":"e2e99e78ef5bbf12881eb50fb9e128911f264e0c"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"88d217e0e91caa568777cef124c1d338a2fda2db","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Supporting JSON format for Account ACL in keystoneauth"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the ability to store Account ACL in JSON format for"},{"line_number":10,"context_line":"KeystoneAuth. Right now it only supports storing user ids as discussed."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"In addition, this patch extracted common code from TempAuth into"},{"line_number":13,"context_line":"AuthMixin. KeystoneAuth and TempAuth both inherit from AuthMixin."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9a89bdaa_efaf3629","line":10,"in_reply_to":"9a89bdaa_44ed808d","updated":"2016-09-09 18:15:24.000000000","message":"Done","commit_id":"e2e99e78ef5bbf12881eb50fb9e128911f264e0c"}],"swift/common/middleware/authmixin.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"b8630988f90c8c93538f2dab09eb993998d29be7","unresolved":false,"context_lines":[{"line_number":39,"context_line":"         * :func:`swift.common.middleware.acl.parse_acl()`"},{"line_number":40,"context_line":"         * :func:`swift.common.middleware.acl.format_acl()`"},{"line_number":41,"context_line":"         \"\"\""},{"line_number":42,"context_line":"        info \u003d get_account_info(req.environ, self.app, self.swift_source)"},{"line_number":43,"context_line":"        try:"},{"line_number":44,"context_line":"            acls \u003d swift_acl.acls_from_account_info(info)"},{"line_number":45,"context_line":"        except ValueError as e1:"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a8ec9b2_42fd796d","line":42,"updated":"2016-09-19 20:23:42.000000000","message":"Do we know there\u0027s actually an account to get info for? What should happen if there isn\u0027t?","commit_id":"16434e969a8a8e681ea3c997f99f28e317cebe44"}],"swift/common/middleware/keystoneauth.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"37e57c7476acd9c44eb665003ae57877fda6b5b5","unresolved":false,"context_lines":[{"line_number":175,"context_line":"    def __init__(self, app, conf):"},{"line_number":176,"context_line":"        self.app \u003d app"},{"line_number":177,"context_line":"        self.conf \u003d conf"},{"line_number":178,"context_line":"        self.swift_source \u003d \u0027KA\u0027"},{"line_number":179,"context_line":"        self.logger \u003d swift_utils.get_logger(conf, log_route\u003d\u0027keystoneauth\u0027)"},{"line_number":180,"context_line":"        self.reseller_prefixes, self.account_rules \u003d \\"},{"line_number":181,"context_line":"            config_read_reseller_options(conf,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_044b785a","line":178,"updated":"2016-09-09 11:32:10.000000000","message":"we already use \u0027KS\u0027 as the swift source for keystoneauth\n\nhttps://github.com/openstack/swift/blob/e2e99e78ef5bbf12881eb50fb9e128911f264e0c/swift/common/middleware/keystoneauth.py#L294-L294","commit_id":"e2e99e78ef5bbf12881eb50fb9e128911f264e0c"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"ca1593513673ab24d795d18805f784fb356ca8b3","unresolved":false,"context_lines":[{"line_number":175,"context_line":"    def __init__(self, app, conf):"},{"line_number":176,"context_line":"        self.app \u003d app"},{"line_number":177,"context_line":"        self.conf \u003d conf"},{"line_number":178,"context_line":"        self.swift_source \u003d \u0027KA\u0027"},{"line_number":179,"context_line":"        self.logger \u003d swift_utils.get_logger(conf, log_route\u003d\u0027keystoneauth\u0027)"},{"line_number":180,"context_line":"        self.reseller_prefixes, self.account_rules \u003d \\"},{"line_number":181,"context_line":"            config_read_reseller_options(conf,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_2d762ad7","line":178,"in_reply_to":"9a89bdaa_044b785a","updated":"2016-09-13 19:04:20.000000000","message":"Ah, nice catch. I\u0027ll update swift_source to use KS as well.","commit_id":"e2e99e78ef5bbf12881eb50fb9e128911f264e0c"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"37e57c7476acd9c44eb665003ae57877fda6b5b5","unresolved":false,"context_lines":[{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        self._set_project_domain_id(req, part, env_identity)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        # Check if user sent access control header"},{"line_number":419,"context_line":"        acl_data \u003d req.headers.get(\u0027x-account-access-control\u0027)"},{"line_number":420,"context_line":"        if acl_data is not None:"},{"line_number":421,"context_line":"            error \u003d self.extract_acl_and_report_errors(req)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_649fe4b4","line":418,"updated":"2016-09-09 11:32:10.000000000","message":"please clarify comment to refer to *account* acls","commit_id":"e2e99e78ef5bbf12881eb50fb9e128911f264e0c"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"88d217e0e91caa568777cef124c1d338a2fda2db","unresolved":false,"context_lines":[{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        self._set_project_domain_id(req, part, env_identity)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        # Check if user sent access control header"},{"line_number":419,"context_line":"        acl_data \u003d req.headers.get(\u0027x-account-access-control\u0027)"},{"line_number":420,"context_line":"        if acl_data is not None:"},{"line_number":421,"context_line":"            error \u003d self.extract_acl_and_report_errors(req)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_4f9022ed","line":418,"in_reply_to":"9a89bdaa_649fe4b4","updated":"2016-09-09 18:15:24.000000000","message":"Done","commit_id":"e2e99e78ef5bbf12881eb50fb9e128911f264e0c"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"37e57c7476acd9c44eb665003ae57877fda6b5b5","unresolved":false,"context_lines":[{"line_number":463,"context_line":"        if acl_authorized:"},{"line_number":464,"context_line":"            return"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"        # Check if user has permission in ACL"},{"line_number":467,"context_line":"        acct_acls \u003d self.account_acls(req)"},{"line_number":468,"context_line":"        if acct_acls is not None:"},{"line_number":469,"context_line":"            user_groups \u003d [user_id]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_4481004d","line":466,"updated":"2016-09-09 11:32:10.000000000","message":"again, please make comment clearly be about account ACLs","commit_id":"e2e99e78ef5bbf12881eb50fb9e128911f264e0c"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"88d217e0e91caa568777cef124c1d338a2fda2db","unresolved":false,"context_lines":[{"line_number":463,"context_line":"        if acl_authorized:"},{"line_number":464,"context_line":"            return"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"        # Check if user has permission in ACL"},{"line_number":467,"context_line":"        acct_acls \u003d self.account_acls(req)"},{"line_number":468,"context_line":"        if acct_acls is not None:"},{"line_number":469,"context_line":"            user_groups \u003d [user_id]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_6fbb2676","line":466,"in_reply_to":"9a89bdaa_4481004d","updated":"2016-09-09 18:15:24.000000000","message":"Done","commit_id":"e2e99e78ef5bbf12881eb50fb9e128911f264e0c"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"37e57c7476acd9c44eb665003ae57877fda6b5b5","unresolved":false,"context_lines":[{"line_number":466,"context_line":"        # Check if user has permission in ACL"},{"line_number":467,"context_line":"        acct_acls \u003d self.account_acls(req)"},{"line_number":468,"context_line":"        if acct_acls is not None:"},{"line_number":469,"context_line":"            user_groups \u003d [user_id]"},{"line_number":470,"context_line":"            user_group_set \u003d set(user_groups)"},{"line_number":471,"context_line":"            if self.acl_in_sysmeta(req, acct_acls, user_group_set, container):"},{"line_number":472,"context_line":"                return None"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_64936450","line":469,"updated":"2016-09-09 11:32:10.000000000","message":"The name \u0027user_groups\u0027 doesn\u0027t seem relevant in keystoneauth context.\n\nBut, see comment line 471","commit_id":"e2e99e78ef5bbf12881eb50fb9e128911f264e0c"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"88d217e0e91caa568777cef124c1d338a2fda2db","unresolved":false,"context_lines":[{"line_number":466,"context_line":"        # Check if user has permission in ACL"},{"line_number":467,"context_line":"        acct_acls \u003d self.account_acls(req)"},{"line_number":468,"context_line":"        if acct_acls is not None:"},{"line_number":469,"context_line":"            user_groups \u003d [user_id]"},{"line_number":470,"context_line":"            user_group_set \u003d set(user_groups)"},{"line_number":471,"context_line":"            if self.acl_in_sysmeta(req, acct_acls, user_group_set, container):"},{"line_number":472,"context_line":"                return None"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_f988e4c8","line":469,"in_reply_to":"9a89bdaa_64936450","updated":"2016-09-09 18:15:24.000000000","message":"user_groups can actually be (project_id + \u0027:\u0027 + user_id) as well. Keeping it in this format might be more readable in the future. What do you think?\n\nI wanted to keep the first iteration of this patch simple, then add support for the project_id in a later patch. This makes review of the patch a bit easier to follow.","commit_id":"e2e99e78ef5bbf12881eb50fb9e128911f264e0c"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"37e57c7476acd9c44eb665003ae57877fda6b5b5","unresolved":false,"context_lines":[{"line_number":468,"context_line":"        if acct_acls is not None:"},{"line_number":469,"context_line":"            user_groups \u003d [user_id]"},{"line_number":470,"context_line":"            user_group_set \u003d set(user_groups)"},{"line_number":471,"context_line":"            if self.acl_in_sysmeta(req, acct_acls, user_group_set, container):"},{"line_number":472,"context_line":"                return None"},{"line_number":473,"context_line":""},{"line_number":474,"context_line":"        # Check if a user tries to access an account that does not match their"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_e4f4d488","line":471,"updated":"2016-09-09 11:32:10.000000000","message":"or:\n\n  if self.acl_in_sysmeta(req, acct_acls, {user_id}, container):","commit_id":"e2e99e78ef5bbf12881eb50fb9e128911f264e0c"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"ca1593513673ab24d795d18805f784fb356ca8b3","unresolved":false,"context_lines":[{"line_number":468,"context_line":"        if acct_acls is not None:"},{"line_number":469,"context_line":"            user_groups \u003d [user_id]"},{"line_number":470,"context_line":"            user_group_set \u003d set(user_groups)"},{"line_number":471,"context_line":"            if self.acl_in_sysmeta(req, acct_acls, user_group_set, container):"},{"line_number":472,"context_line":"                return None"},{"line_number":473,"context_line":""},{"line_number":474,"context_line":"        # Check if a user tries to access an account that does not match their"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_a19498e8","line":471,"in_reply_to":"9a89bdaa_e4f4d488","updated":"2016-09-13 19:04:20.000000000","message":"Done","commit_id":"e2e99e78ef5bbf12881eb50fb9e128911f264e0c"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"b8630988f90c8c93538f2dab09eb993998d29be7","unresolved":false,"context_lines":[{"line_number":462,"context_line":"        if acl_authorized:"},{"line_number":463,"context_line":"            return"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"        # Check if user has permission in account ACL"},{"line_number":466,"context_line":"        acct_acls \u003d self.account_acls(req)"},{"line_number":467,"context_line":"        if acct_acls is not None:"},{"line_number":468,"context_line":"            if self.acl_in_sysmeta(req, acct_acls, {user_id}, container):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a8ec9b2_823ea127","line":465,"updated":"2016-09-19 20:23:42.000000000","message":"I think you want a\n\n if account:\n\nbefore you do this.","commit_id":"16434e969a8a8e681ea3c997f99f28e317cebe44"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"6c0d7440e0cfd412af06a786f0f77812a1b1ffed","unresolved":false,"context_lines":[{"line_number":462,"context_line":"        if acl_authorized:"},{"line_number":463,"context_line":"            return"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"        # Check if user has permission in account ACL"},{"line_number":466,"context_line":"        acct_acls \u003d self.account_acls(req)"},{"line_number":467,"context_line":"        if acct_acls is not None:"},{"line_number":468,"context_line":"            if self.acl_in_sysmeta(req, acct_acls, {user_id}, container):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a8ec9b2_fdafc7e0","line":465,"in_reply_to":"7a8ec9b2_823ea127","updated":"2016-09-20 20:47:29.000000000","message":"I compared the successful log and the failed log, the difference was that one was hitting self.account_acls while the other didn\u0027t. This is due entirely to the /info path, so having the \u0027if account\u0027 check here makes a lot of sense. Thanks for the suggestion!","commit_id":"16434e969a8a8e681ea3c997f99f28e317cebe44"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"f20a58734c1f2f1a658e727a9a388210e34ffd09","unresolved":false,"context_lines":[{"line_number":462,"context_line":"        if acl_authorized:"},{"line_number":463,"context_line":"            return"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"        # Check if user has permission in account ACL"},{"line_number":466,"context_line":"        acct_acls \u003d self.account_acls(req)"},{"line_number":467,"context_line":"        if acct_acls is not None:"},{"line_number":468,"context_line":"            if self.acl_in_sysmeta(req, acct_acls, {user_id}, container):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a8ec9b2_1dc0f37b","line":465,"in_reply_to":"7a8ec9b2_fdafc7e0","updated":"2016-09-20 20:48:59.000000000","message":"My only question is... why arent we doing the same check in tempauth? seems to work without it.","commit_id":"16434e969a8a8e681ea3c997f99f28e317cebe44"}],"test/unit/common/middleware/test_keystoneauth.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"37e57c7476acd9c44eb665003ae57877fda6b5b5","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    return res"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"class FakeMemcache(object):"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def __init__(self):"},{"line_number":81,"context_line":"        self.store \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_de36bde6","line":78,"updated":"2016-09-09 11:32:10.000000000","message":"can we not use the FakeMemcache from test/unit/__init__?","commit_id":"e2e99e78ef5bbf12881eb50fb9e128911f264e0c"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"ca1593513673ab24d795d18805f784fb356ca8b3","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    return res"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"class FakeMemcache(object):"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def __init__(self):"},{"line_number":81,"context_line":"        self.store \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_c4b202e5","line":78,"in_reply_to":"9a89bdaa_de36bde6","updated":"2016-09-13 19:04:20.000000000","message":"Done","commit_id":"e2e99e78ef5bbf12881eb50fb9e128911f264e0c"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"37e57c7476acd9c44eb665003ae57877fda6b5b5","unresolved":false,"context_lines":[{"line_number":1271,"context_line":"        resp \u003d req.get_response(test_auth)"},{"line_number":1272,"context_line":"        self.assertEqual(resp.status_int, 403)"},{"line_number":1273,"context_line":""},{"line_number":1274,"context_line":"    def test_account_priveleges_success(self):"},{"line_number":1275,"context_line":"        for user, path, action in self.success_cases:"},{"line_number":1276,"context_line":"            status \u003d self._get_account_privelege(user, path, action)"},{"line_number":1277,"context_line":"            self.assertEqual(status, 204)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_811f7a5a","line":1274,"updated":"2016-09-09 11:32:10.000000000","message":"s/priveleges/privileges/ here and elsewhere","commit_id":"e2e99e78ef5bbf12881eb50fb9e128911f264e0c"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"ca1593513673ab24d795d18805f784fb356ca8b3","unresolved":false,"context_lines":[{"line_number":1271,"context_line":"        resp \u003d req.get_response(test_auth)"},{"line_number":1272,"context_line":"        self.assertEqual(resp.status_int, 403)"},{"line_number":1273,"context_line":""},{"line_number":1274,"context_line":"    def test_account_priveleges_success(self):"},{"line_number":1275,"context_line":"        for user, path, action in self.success_cases:"},{"line_number":1276,"context_line":"            status \u003d self._get_account_privelege(user, path, action)"},{"line_number":1277,"context_line":"            self.assertEqual(status, 204)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_a4fb3e7a","line":1274,"in_reply_to":"9a89bdaa_811f7a5a","updated":"2016-09-13 19:04:20.000000000","message":"Done","commit_id":"e2e99e78ef5bbf12881eb50fb9e128911f264e0c"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"37e57c7476acd9c44eb665003ae57877fda6b5b5","unresolved":false,"context_lines":[{"line_number":1272,"context_line":"        self.assertEqual(resp.status_int, 403)"},{"line_number":1273,"context_line":""},{"line_number":1274,"context_line":"    def test_account_priveleges_success(self):"},{"line_number":1275,"context_line":"        for user, path, action in self.success_cases:"},{"line_number":1276,"context_line":"            status \u003d self._get_account_privelege(user, path, action)"},{"line_number":1277,"context_line":"            self.assertEqual(status, 204)"},{"line_number":1278,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_a171dee2","line":1275,"updated":"2016-09-09 11:32:10.000000000","message":"I\u0027m getting up to spped on this patch, but here you appear to have a \"user\" of form \"AUTH_admin\" and then in keystoneauth I see env_identity such as :\n\n  {\u0027service_roles\u0027: [], \u0027roles\u0027: [], \u0027project_domain\u0027: (None, None), \u0027auth_version\u0027: 0, \u0027user\u0027: (\u0027AUTH_admin\u0027, \u0027user_name\u0027), \u0027user_domain\u0027: (None, None), \u0027tenant\u0027: (\u0027tenant_id\u0027, \u0027tenant_name\u0027)}\n\nwith keystone a user would not have the AUTH_ prefix (at least, a username could but it would be nothing to do with the reseller prefix) so this is at best confusing, but likely there is something wrong with the logic here.\n\nThe Swift account would have name AUTH_\u003cproject_id\u003e, but the AUTH prefix would never appear in the identity dict derived form the keystone token information.","commit_id":"e2e99e78ef5bbf12881eb50fb9e128911f264e0c"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"ca1593513673ab24d795d18805f784fb356ca8b3","unresolved":false,"context_lines":[{"line_number":1272,"context_line":"        self.assertEqual(resp.status_int, 403)"},{"line_number":1273,"context_line":""},{"line_number":1274,"context_line":"    def test_account_priveleges_success(self):"},{"line_number":1275,"context_line":"        for user, path, action in self.success_cases:"},{"line_number":1276,"context_line":"            status \u003d self._get_account_privelege(user, path, action)"},{"line_number":1277,"context_line":"            self.assertEqual(status, 204)"},{"line_number":1278,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_0d2bbd31","line":1275,"in_reply_to":"9a89bdaa_a171dee2","updated":"2016-09-13 19:04:20.000000000","message":"Disregard my other comment. Updated the tests to use user_id and removed user_groups.","commit_id":"e2e99e78ef5bbf12881eb50fb9e128911f264e0c"},{"author":{"_account_id":9576,"name":"Thai Tran","email":"tqtran@us.ibm.com","username":"tqtran"},"change_message_id":"88d217e0e91caa568777cef124c1d338a2fda2db","unresolved":false,"context_lines":[{"line_number":1272,"context_line":"        self.assertEqual(resp.status_int, 403)"},{"line_number":1273,"context_line":""},{"line_number":1274,"context_line":"    def test_account_priveleges_success(self):"},{"line_number":1275,"context_line":"        for user, path, action in self.success_cases:"},{"line_number":1276,"context_line":"            status \u003d self._get_account_privelege(user, path, action)"},{"line_number":1277,"context_line":"            self.assertEqual(status, 204)"},{"line_number":1278,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_2a62ecd8","line":1275,"in_reply_to":"9a89bdaa_a171dee2","updated":"2016-09-09 18:15:24.000000000","message":"This test class actually comes from test_tempauth. The tests are nearly identical with the exception of my refactors. https://github.com/openstack/swift/blob/master/test/unit/common/middleware/test_tempauth.py#L1045\n\nOrginally, my plans were to re-use the testing code in test_tempauth, but it was a bit more complicated since keystoneauth needed the env_identity. https://github.com/openstack/swift/blob/master/swift/common/middleware/keystoneauth.py#L208\n\nI had to borrow self._make_request from test_tempauth to make it work with the least amount of work, hence the reason for using AUTH_admin. If this is confusing, we can definitely change it to user_id instead.","commit_id":"e2e99e78ef5bbf12881eb50fb9e128911f264e0c"}]}
