)]}'
{"etc/keystone.conf.sample":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"f8cea606006192257fd8ff461e9e62dfb14a77d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ff570b3c_65a3d8b2","updated":"2020-05-26 21:05:53.000000000","message":"Why was this file changed?","commit_id":"20ad559e05dda18b1fb01bb331b644fa6d6faaee"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"4472ee9cabd1e49a266963bd07ab8c456de2f72c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ff570b3c_4f5a06f3","in_reply_to":"ff570b3c_65a3d8b2","updated":"2020-05-28 16:51:31.000000000","message":"My bad. That was the result of running tox. I inadvertently included it. Let me remove.","commit_id":"20ad559e05dda18b1fb01bb331b644fa6d6faaee"}],"keystone/credential/controllers.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"381645860506ea905983e65b4d6a62fe184967be","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            # ec2tokens happens"},{"line_number":63,"context_line":"            if trust_id is not None:"},{"line_number":64,"context_line":"                blob[\u0027trust_id\u0027] \u003d trust_id"},{"line_number":65,"context_line":"                ref_ref[\u0027blob\u0027] \u003d jsonutils.dumps(blob)"},{"line_number":66,"context_line":"            if access_token_id is not None:"},{"line_number":67,"context_line":"                blob[\u0027access_token_id\u0027] \u003d access_token_id"},{"line_number":68,"context_line":"                ref_ref[\u0027blob\u0027] \u003d jsonutils.dumps(blob)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_6699046d","line":65,"updated":"2020-05-07 18:25:53.000000000","message":"pep8: F821 undefined name \u0027ref_ref\u0027","commit_id":"5d8df6694d4d6752dbe5a95111d774cdd169890e"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"381645860506ea905983e65b4d6a62fe184967be","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                ref_ref[\u0027blob\u0027] \u003d jsonutils.dumps(blob)"},{"line_number":66,"context_line":"            if access_token_id is not None:"},{"line_number":67,"context_line":"                blob[\u0027access_token_id\u0027] \u003d access_token_id"},{"line_number":68,"context_line":"                ref_ref[\u0027blob\u0027] \u003d jsonutils.dumps(blob)"},{"line_number":69,"context_line":"            return ref_ref"},{"line_number":70,"context_line":"        else:"},{"line_number":71,"context_line":"            return super(CredentialV3, self)._assign_unique_id(ref)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_469cc85c","line":68,"updated":"2020-05-07 18:25:53.000000000","message":"pep8: F821 undefined name \u0027ref_ref\u0027","commit_id":"5d8df6694d4d6752dbe5a95111d774cdd169890e"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"381645860506ea905983e65b4d6a62fe184967be","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            if access_token_id is not None:"},{"line_number":67,"context_line":"                blob[\u0027access_token_id\u0027] \u003d access_token_id"},{"line_number":68,"context_line":"                ref_ref[\u0027blob\u0027] \u003d jsonutils.dumps(blob)"},{"line_number":69,"context_line":"            return ref_ref"},{"line_number":70,"context_line":"        else:"},{"line_number":71,"context_line":"            return super(CredentialV3, self)._assign_unique_id(ref)"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_a6a2ec98","line":69,"updated":"2020-05-07 18:25:53.000000000","message":"pep8: F821 undefined name \u0027ref_ref\u0027","commit_id":"5d8df6694d4d6752dbe5a95111d774cdd169890e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9603100d1d62fac87eff047ee56258d5a82bcc21","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    def create_credential(self, request, credential):"},{"line_number":75,"context_line":"        validation.lazy_validate(schema.credential_create, credential)"},{"line_number":76,"context_line":"        trust_id \u003d request.context.trust_id"},{"line_number":77,"context_line":"        access_token_id \u003d request.context.oauth_acess_token_id"},{"line_number":78,"context_line":"        ref \u003d self._assign_unique_id(self._normalize_dict(credential),"},{"line_number":79,"context_line":"                                     trust_id\u003dtrust_id,"},{"line_number":80,"context_line":"                                     access_token_id\u003daccess_token_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_d89423eb","line":77,"range":{"start_line":77,"start_character":42,"end_line":77,"end_character":62},"updated":"2020-05-08 15:03:10.000000000","message":"typo?","commit_id":"64c9d15ee49561c4fd2fa47af5e66105d5d1a80b"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"e9e4232bb2fe1e4db28e151f5dd44e77e5dc2575","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    def create_credential(self, request, credential):"},{"line_number":75,"context_line":"        validation.lazy_validate(schema.credential_create, credential)"},{"line_number":76,"context_line":"        trust_id \u003d request.context.trust_id"},{"line_number":77,"context_line":"        access_token_id \u003d request.context.oauth_acess_token_id"},{"line_number":78,"context_line":"        ref \u003d self._assign_unique_id(self._normalize_dict(credential),"},{"line_number":79,"context_line":"                                     trust_id\u003dtrust_id,"},{"line_number":80,"context_line":"                                     access_token_id\u003daccess_token_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_52a2af9b","line":77,"range":{"start_line":77,"start_character":42,"end_line":77,"end_character":62},"in_reply_to":"1f493fa4_d89423eb","updated":"2020-05-08 17:08:26.000000000","message":"No. For some reason we named it oauth_access_token_id when adding it to the request context here.\n\nhttps://opendev.org/openstack/keystone/src/branch/stable/pike/keystone/middleware/auth.py#L237","commit_id":"64c9d15ee49561c4fd2fa47af5e66105d5d1a80b"}],"keystone/tests/unit/test_v3_credential.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b5fc707ad393cf0f09a8903cebabc4ad15f0c3a9","unresolved":false,"context_lines":[{"line_number":295,"context_line":"            body\u003d{\u0027credential\u0027: update_ref},"},{"line_number":296,"context_line":"            expected_status\u003dhttp_client.BAD_REQUEST)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def test_update_ec2_credential_change_app_cred_id(self):"},{"line_number":299,"context_line":"        \"\"\"Call ``PATCH /credentials/{credential_id}``.\"\"\""},{"line_number":300,"context_line":"        blob, ref \u003d unit.new_ec2_credential(user_id\u003dself.user[\u0027id\u0027],"},{"line_number":301,"context_line":"                                            project_id\u003dself.project_id)"},{"line_number":302,"context_line":"        blob[\u0027app_cred_id\u0027] \u003d uuid.uuid4().hex"},{"line_number":303,"context_line":"        ref[\u0027blob\u0027] \u003d json.dumps(blob)"},{"line_number":304,"context_line":"        r \u003d self.post("},{"line_number":305,"context_line":"            \u0027/credentials\u0027,"},{"line_number":306,"context_line":"            body\u003d{\u0027credential\u0027: ref})"},{"line_number":307,"context_line":"        self.assertValidCredentialResponse(r, ref)"},{"line_number":308,"context_line":"        credential_id \u003d r.result.get(\u0027credential\u0027)[\u0027id\u0027]"},{"line_number":309,"context_line":"        # Try changing to a different app cred"},{"line_number":310,"context_line":"        blob[\u0027app_cred_id\u0027] \u003d uuid.uuid4().hex"},{"line_number":311,"context_line":"        update_ref \u003d {\u0027blob\u0027: json.dumps(blob)}"},{"line_number":312,"context_line":"        self.patch("},{"line_number":313,"context_line":"            \u0027/credentials/%(credential_id)s\u0027 % {"},{"line_number":314,"context_line":"                \u0027credential_id\u0027: credential_id},"},{"line_number":315,"context_line":"            body\u003d{\u0027credential\u0027: update_ref},"},{"line_number":316,"context_line":"            expected_status\u003dhttp_client.BAD_REQUEST)"},{"line_number":317,"context_line":"        # Try removing the app cred"},{"line_number":318,"context_line":"        del blob[\u0027app_cred_id\u0027]"},{"line_number":319,"context_line":"        update_ref \u003d {\u0027blob\u0027: json.dumps(blob)}"},{"line_number":320,"context_line":"        self.patch("},{"line_number":321,"context_line":"            \u0027/credentials/%(credential_id)s\u0027 % {"},{"line_number":322,"context_line":"                \u0027credential_id\u0027: credential_id},"},{"line_number":323,"context_line":"            body\u003d{\u0027credential\u0027: update_ref},"},{"line_number":324,"context_line":"            expected_status\u003dhttp_client.BAD_REQUEST)"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"    def test_update_ec2_credential_change_access_token_id(self):"},{"line_number":327,"context_line":"        \"\"\"Call ``PATCH /credentials/{credential_id}``.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_9c5c1e4c","line":324,"range":{"start_line":298,"start_character":0,"end_line":324,"end_character":52},"updated":"2020-06-02 15:47:58.000000000","message":"I don\u0027t think this is applicable to this branch. Application credentials were introduced in Queens.","commit_id":"bc165157ebed5b5c60dafb7eca343b21156f006e"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3e780bbb724c4290974a3d83e7fa4a2ee5469c66","unresolved":false,"context_lines":[{"line_number":295,"context_line":"            body\u003d{\u0027credential\u0027: update_ref},"},{"line_number":296,"context_line":"            expected_status\u003dhttp_client.BAD_REQUEST)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def test_update_ec2_credential_change_app_cred_id(self):"},{"line_number":299,"context_line":"        \"\"\"Call ``PATCH /credentials/{credential_id}``.\"\"\""},{"line_number":300,"context_line":"        blob, ref \u003d unit.new_ec2_credential(user_id\u003dself.user[\u0027id\u0027],"},{"line_number":301,"context_line":"                                            project_id\u003dself.project_id)"},{"line_number":302,"context_line":"        blob[\u0027app_cred_id\u0027] \u003d uuid.uuid4().hex"},{"line_number":303,"context_line":"        ref[\u0027blob\u0027] \u003d json.dumps(blob)"},{"line_number":304,"context_line":"        r \u003d self.post("},{"line_number":305,"context_line":"            \u0027/credentials\u0027,"},{"line_number":306,"context_line":"            body\u003d{\u0027credential\u0027: ref})"},{"line_number":307,"context_line":"        self.assertValidCredentialResponse(r, ref)"},{"line_number":308,"context_line":"        credential_id \u003d r.result.get(\u0027credential\u0027)[\u0027id\u0027]"},{"line_number":309,"context_line":"        # Try changing to a different app cred"},{"line_number":310,"context_line":"        blob[\u0027app_cred_id\u0027] \u003d uuid.uuid4().hex"},{"line_number":311,"context_line":"        update_ref \u003d {\u0027blob\u0027: json.dumps(blob)}"},{"line_number":312,"context_line":"        self.patch("},{"line_number":313,"context_line":"            \u0027/credentials/%(credential_id)s\u0027 % {"},{"line_number":314,"context_line":"                \u0027credential_id\u0027: credential_id},"},{"line_number":315,"context_line":"            body\u003d{\u0027credential\u0027: update_ref},"},{"line_number":316,"context_line":"            expected_status\u003dhttp_client.BAD_REQUEST)"},{"line_number":317,"context_line":"        # Try removing the app cred"},{"line_number":318,"context_line":"        del blob[\u0027app_cred_id\u0027]"},{"line_number":319,"context_line":"        update_ref \u003d {\u0027blob\u0027: json.dumps(blob)}"},{"line_number":320,"context_line":"        self.patch("},{"line_number":321,"context_line":"            \u0027/credentials/%(credential_id)s\u0027 % {"},{"line_number":322,"context_line":"                \u0027credential_id\u0027: credential_id},"},{"line_number":323,"context_line":"            body\u003d{\u0027credential\u0027: update_ref},"},{"line_number":324,"context_line":"            expected_status\u003dhttp_client.BAD_REQUEST)"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"    def test_update_ec2_credential_change_access_token_id(self):"},{"line_number":327,"context_line":"        \"\"\"Call ``PATCH /credentials/{credential_id}``.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_72a7b1bd","line":324,"range":{"start_line":298,"start_character":0,"end_line":324,"end_character":52},"in_reply_to":"ff570b3c_37f08b67","updated":"2020-06-02 16:54:02.000000000","message":"It\u0027s not applicable but it doesn\u0027t hurt to have it here either.\n\nGuang: There was some code introduced in rocky but the API wasn\u0027t exposed until queens.","commit_id":"bc165157ebed5b5c60dafb7eca343b21156f006e"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"6d325ad1eab8785bb2b9d4a7db2d6e378824cf6d","unresolved":false,"context_lines":[{"line_number":295,"context_line":"            body\u003d{\u0027credential\u0027: update_ref},"},{"line_number":296,"context_line":"            expected_status\u003dhttp_client.BAD_REQUEST)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def test_update_ec2_credential_change_app_cred_id(self):"},{"line_number":299,"context_line":"        \"\"\"Call ``PATCH /credentials/{credential_id}``.\"\"\""},{"line_number":300,"context_line":"        blob, ref \u003d unit.new_ec2_credential(user_id\u003dself.user[\u0027id\u0027],"},{"line_number":301,"context_line":"                                            project_id\u003dself.project_id)"},{"line_number":302,"context_line":"        blob[\u0027app_cred_id\u0027] \u003d uuid.uuid4().hex"},{"line_number":303,"context_line":"        ref[\u0027blob\u0027] \u003d json.dumps(blob)"},{"line_number":304,"context_line":"        r \u003d self.post("},{"line_number":305,"context_line":"            \u0027/credentials\u0027,"},{"line_number":306,"context_line":"            body\u003d{\u0027credential\u0027: ref})"},{"line_number":307,"context_line":"        self.assertValidCredentialResponse(r, ref)"},{"line_number":308,"context_line":"        credential_id \u003d r.result.get(\u0027credential\u0027)[\u0027id\u0027]"},{"line_number":309,"context_line":"        # Try changing to a different app cred"},{"line_number":310,"context_line":"        blob[\u0027app_cred_id\u0027] \u003d uuid.uuid4().hex"},{"line_number":311,"context_line":"        update_ref \u003d {\u0027blob\u0027: json.dumps(blob)}"},{"line_number":312,"context_line":"        self.patch("},{"line_number":313,"context_line":"            \u0027/credentials/%(credential_id)s\u0027 % {"},{"line_number":314,"context_line":"                \u0027credential_id\u0027: credential_id},"},{"line_number":315,"context_line":"            body\u003d{\u0027credential\u0027: update_ref},"},{"line_number":316,"context_line":"            expected_status\u003dhttp_client.BAD_REQUEST)"},{"line_number":317,"context_line":"        # Try removing the app cred"},{"line_number":318,"context_line":"        del blob[\u0027app_cred_id\u0027]"},{"line_number":319,"context_line":"        update_ref \u003d {\u0027blob\u0027: json.dumps(blob)}"},{"line_number":320,"context_line":"        self.patch("},{"line_number":321,"context_line":"            \u0027/credentials/%(credential_id)s\u0027 % {"},{"line_number":322,"context_line":"                \u0027credential_id\u0027: credential_id},"},{"line_number":323,"context_line":"            body\u003d{\u0027credential\u0027: update_ref},"},{"line_number":324,"context_line":"            expected_status\u003dhttp_client.BAD_REQUEST)"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"    def test_update_ec2_credential_change_access_token_id(self):"},{"line_number":327,"context_line":"        \"\"\"Call ``PATCH /credentials/{credential_id}``.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_37f08b67","line":324,"range":{"start_line":298,"start_character":0,"end_line":324,"end_character":52},"in_reply_to":"ff570b3c_9c5c1e4c","updated":"2020-06-02 16:28:13.000000000","message":"I do see application credential code in the rocky branch though. You mean we don\u0027t officially support this feature till Queens release? Not even as *experimental*?","commit_id":"bc165157ebed5b5c60dafb7eca343b21156f006e"}]}
