)]}'
{"keystone/federation/backends/sql.py":[{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"5ccdea90ecf92faaea1b90b88938c569a251c393","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"class Federation(core.FederationDriverV8):"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    _conflict_msg \u003d \u0027Conflict %(conflict_type)s: %(details)s\u0027"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    # Identity Provider CRUD"},{"line_number":169,"context_line":"    def create_idp(self, idp_id, idp):"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6ed579_28dd8742","line":166,"updated":"2016-01-12 12:49:23.000000000","message":"(nit) It would be better to make clear it is a log message. At first look, I thought this was the exception message. Also, as this is a constant, use uppercase.\n\nWhat about _CONFLICT_LOG_MSG","commit_id":"f094a03d71d0704c865f5de2f45e592a879b7326"}],"keystone/tests/unit/backend/legacy_drivers/federation/V8/api_v3.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"4b89a22ec0e2cc409a2502f68656e26ccfb98486","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        A remote_id is the same for both so the second IdP is not"},{"line_number":44,"context_line":"        created because of the uniqueness of the remote_ids"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        Expect HTTP 409 Conflict code for the latter call."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        \"\"\""},{"line_number":49,"context_line":"        body \u003d self.default_body.copy()"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_0fafbb2a","line":46,"range":{"start_line":46,"start_character":8,"end_line":46,"end_character":58},"updated":"2016-01-15 03:13:58.000000000","message":"maybe add some text here to explain why we are overriding, e.g.:\n\nV9 drivers and later augment the conflict message with additional information, which won\u0027t be present if we are running a V8 driver - so override the newer tests to just ensure a conflict message is raised.","commit_id":"d9e7bc2c692298bca3bb9abff4195fce28df3c85"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"b513cbc3cf26543e414402261dd857baf86d480f","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        A remote_id is the same for both so the second IdP is not"},{"line_number":44,"context_line":"        created because of the uniqueness of the remote_ids"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        Expect HTTP 409 Conflict code for the latter call."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        \"\"\""},{"line_number":49,"context_line":"        body \u003d self.default_body.copy()"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_1c8b6020","line":46,"range":{"start_line":46,"start_character":8,"end_line":46,"end_character":58},"in_reply_to":"da6ed579_0fafbb2a","updated":"2016-01-15 13:26:20.000000000","message":"I completely agree with this, it isn\u0027t obvious why we are overriding this testcases.","commit_id":"d9e7bc2c692298bca3bb9abff4195fce28df3c85"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"5408e73cd77530e0ac214cd4dfeacacfc22e077f","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        A remote_id is the same for both so the second IdP is not"},{"line_number":44,"context_line":"        created because of the uniqueness of the remote_ids"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        Expect HTTP 409 Conflict code for the latter call."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        \"\"\""},{"line_number":49,"context_line":"        body \u003d self.default_body.copy()"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_3da9677c","line":46,"range":{"start_line":46,"start_character":8,"end_line":46,"end_character":58},"in_reply_to":"da6ed579_1c8b6020","updated":"2016-01-15 21:14:04.000000000","message":"Done","commit_id":"d9e7bc2c692298bca3bb9abff4195fce28df3c85"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"eaf0d2475c49b23b21c6b7a58b106fc3bcaa604e","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        body[\u0027remote_ids\u0027] \u003d [uuid.uuid4().hex,"},{"line_number":52,"context_line":"                              uuid.uuid4().hex,"},{"line_number":53,"context_line":"                              uuid.uuid4().hex,"},{"line_number":54,"context_line":"                              repeated_remote_id]"},{"line_number":55,"context_line":"        self._create_default_idp(body\u003dbody)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        url \u003d self.base_url(suffix\u003duuid.uuid4().hex)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_ef70270d","line":54,"updated":"2016-01-15 03:07:41.000000000","message":"maybe just `repeated_remote_id` here is enough to prove the fix. \n\nDo we need to assert the error message here like what you did in test_v3_federation.py?","commit_id":"d9e7bc2c692298bca3bb9abff4195fce28df3c85"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"2ee12c59b3107e9ee14002efa2ec8a99d31e8aa2","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        body[\u0027remote_ids\u0027] \u003d [uuid.uuid4().hex,"},{"line_number":52,"context_line":"                              uuid.uuid4().hex,"},{"line_number":53,"context_line":"                              uuid.uuid4().hex,"},{"line_number":54,"context_line":"                              repeated_remote_id]"},{"line_number":55,"context_line":"        self._create_default_idp(body\u003dbody)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        url \u003d self.base_url(suffix\u003duuid.uuid4().hex)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_8f696bfb","line":54,"in_reply_to":"da6ed579_ef70270d","updated":"2016-01-15 03:12:00.000000000","message":"oh, you did this intentionally to bypass the issue from legacy driver interface, forgot it!","commit_id":"d9e7bc2c692298bca3bb9abff4195fce28df3c85"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"b513cbc3cf26543e414402261dd857baf86d480f","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def test_check_idp_uniqueness(self):"},{"line_number":64,"context_line":"        \"\"\"Add same IdP twice."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        Expect HTTP 409 Conflict code for the latter call."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        url \u003d self.base_url(suffix\u003duuid.uuid4().hex)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_3c8e642e","line":66,"updated":"2016-01-15 13:26:20.000000000","message":"Same here","commit_id":"d9e7bc2c692298bca3bb9abff4195fce28df3c85"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"5408e73cd77530e0ac214cd4dfeacacfc22e077f","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    def test_check_idp_uniqueness(self):"},{"line_number":64,"context_line":"        \"\"\"Add same IdP twice."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        Expect HTTP 409 Conflict code for the latter call."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        url \u003d self.base_url(suffix\u003duuid.uuid4().hex)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_1dc3433a","line":66,"in_reply_to":"da6ed579_3c8e642e","updated":"2016-01-15 21:14:04.000000000","message":"Done","commit_id":"d9e7bc2c692298bca3bb9abff4195fce28df3c85"}],"keystone/tests/unit/test_v3_federation.py":[{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"dcdf9367f753b628dac8fbdf2df4db15c664532d","unresolved":false,"context_lines":[{"line_number":902,"context_line":"        resp \u003d self.put(url, body\u003d{\u0027identity_provider\u0027: body},"},{"line_number":903,"context_line":"                        expected_status\u003dhttp_client.CONFLICT)"},{"line_number":904,"context_line":""},{"line_number":905,"context_line":"        j \u003d jsonutils.loads(resp.body)"},{"line_number":906,"context_line":"        self.assertIn(\u0027Duplicate remote ID\u0027,"},{"line_number":907,"context_line":"                      j.get(\u0027error\u0027, {}).get(\u0027message\u0027))"},{"line_number":908,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_8841cf0d","line":905,"range":{"start_line":905,"start_character":8,"end_line":905,"end_character":9},"updated":"2016-01-08 22:54:38.000000000","message":"maybe a more descriptive variable name: r_body\n\nIf you need to post another patch","commit_id":"d7477f285aad1a223d338a362be90eb635eaca95"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"6739aade79486eafbb39d163c4f3ea469bc4f5bb","unresolved":false,"context_lines":[{"line_number":902,"context_line":"        resp \u003d self.put(url, body\u003d{\u0027identity_provider\u0027: body},"},{"line_number":903,"context_line":"                        expected_status\u003dhttp_client.CONFLICT)"},{"line_number":904,"context_line":""},{"line_number":905,"context_line":"        j \u003d jsonutils.loads(resp.body)"},{"line_number":906,"context_line":"        self.assertIn(\u0027Duplicate remote ID\u0027,"},{"line_number":907,"context_line":"                      j.get(\u0027error\u0027, {}).get(\u0027message\u0027))"},{"line_number":908,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_617463fd","line":905,"range":{"start_line":905,"start_character":8,"end_line":905,"end_character":9},"in_reply_to":"fa69d971_8841cf0d","updated":"2016-01-11 17:50:07.000000000","message":"Done","commit_id":"d7477f285aad1a223d338a362be90eb635eaca95"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"dcdf9367f753b628dac8fbdf2df4db15c664532d","unresolved":false,"context_lines":[{"line_number":1031,"context_line":"        resp \u003d self.put(url, body\u003d{\u0027identity_provider\u0027: body},"},{"line_number":1032,"context_line":"                        expected_status\u003dhttp_client.CONFLICT)"},{"line_number":1033,"context_line":""},{"line_number":1034,"context_line":"        j \u003d jsonutils.loads(resp.body)"},{"line_number":1035,"context_line":"        self.assertIn(\u0027Duplicate entry\u0027,"},{"line_number":1036,"context_line":"                      j.get(\u0027error\u0027, {}).get(\u0027message\u0027))"},{"line_number":1037,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_c80587c2","line":1034,"range":{"start_line":1034,"start_character":8,"end_line":1034,"end_character":9},"updated":"2016-01-08 22:54:38.000000000","message":"ditto","commit_id":"d7477f285aad1a223d338a362be90eb635eaca95"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"6739aade79486eafbb39d163c4f3ea469bc4f5bb","unresolved":false,"context_lines":[{"line_number":1031,"context_line":"        resp \u003d self.put(url, body\u003d{\u0027identity_provider\u0027: body},"},{"line_number":1032,"context_line":"                        expected_status\u003dhttp_client.CONFLICT)"},{"line_number":1033,"context_line":""},{"line_number":1034,"context_line":"        j \u003d jsonutils.loads(resp.body)"},{"line_number":1035,"context_line":"        self.assertIn(\u0027Duplicate entry\u0027,"},{"line_number":1036,"context_line":"                      j.get(\u0027error\u0027, {}).get(\u0027message\u0027))"},{"line_number":1037,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_a16edb2c","line":1034,"range":{"start_line":1034,"start_character":8,"end_line":1034,"end_character":9},"in_reply_to":"fa69d971_c80587c2","updated":"2016-01-11 17:50:07.000000000","message":"Done","commit_id":"d7477f285aad1a223d338a362be90eb635eaca95"}]}
