)]}'
{"keystone/tests/unit/core.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"842f41479fac4e5d0600c4f7fb79b43ad3a0a911","unresolved":false,"context_lines":[{"line_number":247,"context_line":"    return ref"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"def new_endpoint_ref(service_id, interface\u003d\u0027public\u0027, default_region_id\u003dNone,"},{"line_number":251,"context_line":"                     **kwargs):"},{"line_number":252,"context_line":"    ref \u003d new_ref()"},{"line_number":253,"context_line":"    del ref[\u0027enabled\u0027]  # enabled is optional"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_03511f62","line":250,"updated":"2015-10-20 21:05:17.000000000","message":"can we rename default_region_id to just \u0027region_id\u0027? you can check if region_id is None, and set it to some uuid if it\u0027s None","commit_id":"1d69c1c9288e2d1129e4d7bb38f2b310ddfc43ed"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"bebcab27c9b373f62eb5be5ebf8572bf142f6fde","unresolved":false,"context_lines":[{"line_number":247,"context_line":"    return ref"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"def new_endpoint_ref(service_id, interface\u003d\u0027public\u0027, default_region_id\u003dNone,"},{"line_number":251,"context_line":"                     **kwargs):"},{"line_number":252,"context_line":"    ref \u003d new_ref()"},{"line_number":253,"context_line":"    del ref[\u0027enabled\u0027]  # enabled is optional"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_8afa1f42","line":250,"in_reply_to":"3a29b11f_03511f62","updated":"2015-10-20 23:17:01.000000000","message":"I would be ok with it if it is within scope.\n\nAs for None v. UUID that is going to be interesting. There is test code which fails if both region and region_id are set. Some want one or the other. That is why I added the \u0027region\u0027 below. It got rid of a bunch of special cased code.","commit_id":"1d69c1c9288e2d1129e4d7bb38f2b310ddfc43ed"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"842f41479fac4e5d0600c4f7fb79b43ad3a0a911","unresolved":false,"context_lines":[{"line_number":254,"context_line":"    ref[\u0027interface\u0027] \u003d interface"},{"line_number":255,"context_line":"    ref[\u0027service_id\u0027] \u003d service_id"},{"line_number":256,"context_line":"    ref[\u0027url\u0027] \u003d \u0027https://\u0027 + uuid.uuid4().hex + \u0027.com\u0027"},{"line_number":257,"context_line":"    ref[\u0027region\u0027] \u003d uuid.uuid4().hex"},{"line_number":258,"context_line":"    ref[\u0027region_id\u0027] \u003d default_region_id"},{"line_number":259,"context_line":"    ref.update(kwargs)"},{"line_number":260,"context_line":"    return ref"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_8df2406e","line":257,"updated":"2015-10-20 21:05:17.000000000","message":"according to the docs, only region_id is needed: http://specs.openstack.org/openstack/keystone-specs/api/v3/identity-api-v3.html#endpoints-v3-endpoints\n\nregion is deprecated, i\u0027d rather just see everything here just be `region_id`","commit_id":"1d69c1c9288e2d1129e4d7bb38f2b310ddfc43ed"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"bebcab27c9b373f62eb5be5ebf8572bf142f6fde","unresolved":false,"context_lines":[{"line_number":254,"context_line":"    ref[\u0027interface\u0027] \u003d interface"},{"line_number":255,"context_line":"    ref[\u0027service_id\u0027] \u003d service_id"},{"line_number":256,"context_line":"    ref[\u0027url\u0027] \u003d \u0027https://\u0027 + uuid.uuid4().hex + \u0027.com\u0027"},{"line_number":257,"context_line":"    ref[\u0027region\u0027] \u003d uuid.uuid4().hex"},{"line_number":258,"context_line":"    ref[\u0027region_id\u0027] \u003d default_region_id"},{"line_number":259,"context_line":"    ref.update(kwargs)"},{"line_number":260,"context_line":"    return ref"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_0a9daf09","line":257,"in_reply_to":"3a29b11f_8df2406e","updated":"2015-10-20 23:17:01.000000000","message":"I am willing to try and fix the broken tests then.","commit_id":"1d69c1c9288e2d1129e4d7bb38f2b310ddfc43ed"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"107efe6d1f323e28206c0d4a462b44b800885342","unresolved":false,"context_lines":[{"line_number":253,"context_line":"    ref[\u0027interface\u0027] \u003d interface"},{"line_number":254,"context_line":"    ref[\u0027service_id\u0027] \u003d service_id"},{"line_number":255,"context_line":"    ref[\u0027url\u0027] \u003d \u0027https://\u0027 + uuid.uuid4().hex + \u0027.com\u0027"},{"line_number":256,"context_line":"    ref[\u0027region_id\u0027] \u003d uuid.uuid4().hex if region_id is None else region_id"},{"line_number":257,"context_line":"    ref.update(kwargs)"},{"line_number":258,"context_line":"    return ref"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_e2ffcc63","line":256,"updated":"2015-10-23 06:24:29.000000000","message":"this change force region_id cannot be None, why?","commit_id":"2c870eb5cfb114f3af00ddae3d70a9762ab04f07"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"47877bfb1b62d452b3817be465496eccde82d223","unresolved":false,"context_lines":[{"line_number":253,"context_line":"    ref[\u0027interface\u0027] \u003d interface"},{"line_number":254,"context_line":"    ref[\u0027service_id\u0027] \u003d service_id"},{"line_number":255,"context_line":"    ref[\u0027url\u0027] \u003d \u0027https://\u0027 + uuid.uuid4().hex + \u0027.com\u0027"},{"line_number":256,"context_line":"    ref[\u0027region_id\u0027] \u003d uuid.uuid4().hex if region_id is None else region_id"},{"line_number":257,"context_line":"    ref.update(kwargs)"},{"line_number":258,"context_line":"    return ref"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_02375dff","line":256,"in_reply_to":"3a29b11f_e2ffcc63","updated":"2015-10-23 11:58:45.000000000","message":"++","commit_id":"2c870eb5cfb114f3af00ddae3d70a9762ab04f07"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"26187dc902091cc2031bc13aa131a426d1fe5411","unresolved":false,"context_lines":[{"line_number":251,"context_line":"    pass"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"bogus_region_id \u003d BogusRegionId()"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"def new_endpoint_ref(service_id, interface\u003d\u0027public\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_41518ed7","line":254,"updated":"2015-11-05 21:32:37.000000000","message":"I\u0027d rather see BogusRegionId removed and just do something like NEEDS_ID \u003d object()","commit_id":"3d0a2f5640b4ac5e53413a2ea029e3bd16e7b258"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f99ae5cae894955b35d610b205736dd158b8908c","unresolved":false,"context_lines":[{"line_number":251,"context_line":"    pass"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"bogus_region_id \u003d BogusRegionId()"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"def new_endpoint_ref(service_id, interface\u003d\u0027public\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_fe47dc1a","line":254,"updated":"2015-11-05 19:22:28.000000000","message":"Should this follow the convention for global variable naming? \n\n    BOGUS_REGION_ID \u003d BogusRegionId()","commit_id":"3d0a2f5640b4ac5e53413a2ea029e3bd16e7b258"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"53af989ed3ee1feaa30186531deec086ad81d966","unresolved":false,"context_lines":[{"line_number":251,"context_line":"    pass"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"bogus_region_id \u003d BogusRegionId()"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"def new_endpoint_ref(service_id, interface\u003d\u0027public\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_c0cb0d52","line":254,"in_reply_to":"fa80f949_41518ed7","updated":"2015-11-05 22:31:41.000000000","message":"I agree with David\u0027s comment. Make sure to use a suggestive name like NEEDS_REGION_ID.","commit_id":"3d0a2f5640b4ac5e53413a2ea029e3bd16e7b258"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f99ae5cae894955b35d610b205736dd158b8908c","unresolved":false,"context_lines":[{"line_number":273,"context_line":""},{"line_number":274,"context_line":"def new_endpoint_ref_with_region(service_id, region, interface\u003d\u0027public\u0027,"},{"line_number":275,"context_line":"                                 **kwargs):"},{"line_number":276,"context_line":"    ref \u003d new_endpoint_ref(service_id, interface, region\u003dregion,"},{"line_number":277,"context_line":"                           region_id\u003d\u0027invalid\u0027, **kwargs)"},{"line_number":278,"context_line":"    del ref[\u0027region_id\u0027]"},{"line_number":279,"context_line":"    return ref"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_513859a0","line":276,"updated":"2015-11-05 19:22:28.000000000","message":"so the main point of having these two separate methods is to be able to generate consistent endpoint references both before and after 3.2, right? \n\nhttps://github.com/openstack/keystone-specs/blob/master/api/v3/identity-api-v3.rst#endpoints-v3endpoints\n\nThat might make a good comment?","commit_id":"3d0a2f5640b4ac5e53413a2ea029e3bd16e7b258"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"f243ea178b9b1000e8655aad7575248ff200b1d7","unresolved":false,"context_lines":[{"line_number":273,"context_line":""},{"line_number":274,"context_line":"def new_endpoint_ref_with_region(service_id, region, interface\u003d\u0027public\u0027,"},{"line_number":275,"context_line":"                                 **kwargs):"},{"line_number":276,"context_line":"    ref \u003d new_endpoint_ref(service_id, interface, region\u003dregion,"},{"line_number":277,"context_line":"                           region_id\u003d\u0027invalid\u0027, **kwargs)"},{"line_number":278,"context_line":"    del ref[\u0027region_id\u0027]"},{"line_number":279,"context_line":"    return ref"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_a8b7cf38","line":276,"in_reply_to":"fa80f949_513859a0","updated":"2015-11-05 23:45:47.000000000","message":"Good call. The use is obvious where it is called but not here where it is defined.","commit_id":"3d0a2f5640b4ac5e53413a2ea029e3bd16e7b258"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"53af989ed3ee1feaa30186531deec086ad81d966","unresolved":false,"context_lines":[{"line_number":273,"context_line":""},{"line_number":274,"context_line":"def new_endpoint_ref_with_region(service_id, region, interface\u003d\u0027public\u0027,"},{"line_number":275,"context_line":"                                 **kwargs):"},{"line_number":276,"context_line":"    ref \u003d new_endpoint_ref(service_id, interface, region\u003dregion,"},{"line_number":277,"context_line":"                           region_id\u003d\u0027invalid\u0027, **kwargs)"},{"line_number":278,"context_line":"    del ref[\u0027region_id\u0027]"},{"line_number":279,"context_line":"    return ref"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_c2b47236","line":276,"in_reply_to":"fa80f949_513859a0","updated":"2015-11-05 22:31:41.000000000","message":"Yes I think that\u0027s the purpose of these methods.\n\nI think creating two separate methods, one that receives region_id and other just region, would be clearer. For me this code looks a bit confusing this way.\n\nAlso, we wouldn\u0027t need the bogus_region_id above.","commit_id":"3d0a2f5640b4ac5e53413a2ea029e3bd16e7b258"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"04a2963cb8e358a8727a6a853a55237a099fb65a","unresolved":false,"context_lines":[{"line_number":273,"context_line":""},{"line_number":274,"context_line":"def new_endpoint_ref_with_region(service_id, region, interface\u003d\u0027public\u0027,"},{"line_number":275,"context_line":"                                 **kwargs):"},{"line_number":276,"context_line":"    ref \u003d new_endpoint_ref(service_id, interface, region\u003dregion,"},{"line_number":277,"context_line":"                           region_id\u003d\u0027invalid\u0027, **kwargs)"},{"line_number":278,"context_line":"    del ref[\u0027region_id\u0027]"},{"line_number":279,"context_line":"    return ref"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_82f50a58","line":276,"in_reply_to":"fa80f949_c2b47236","updated":"2015-11-05 22:42:13.000000000","message":"Also, a good alternative to define old endpoint refs could be creating them by hand, as you do for services in the next patch in the chain. [1]\n\nThat way we only needed to keep 1 method here.\n\n[1] https://review.openstack.org/#/c/238283/4/keystone/tests/unit/test_sql_upgrade.py","commit_id":"3d0a2f5640b4ac5e53413a2ea029e3bd16e7b258"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"f243ea178b9b1000e8655aad7575248ff200b1d7","unresolved":false,"context_lines":[{"line_number":273,"context_line":""},{"line_number":274,"context_line":"def new_endpoint_ref_with_region(service_id, region, interface\u003d\u0027public\u0027,"},{"line_number":275,"context_line":"                                 **kwargs):"},{"line_number":276,"context_line":"    ref \u003d new_endpoint_ref(service_id, interface, region\u003dregion,"},{"line_number":277,"context_line":"                           region_id\u003d\u0027invalid\u0027, **kwargs)"},{"line_number":278,"context_line":"    del ref[\u0027region_id\u0027]"},{"line_number":279,"context_line":"    return ref"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_e8439740","line":276,"in_reply_to":"fa80f949_c2b47236","updated":"2015-11-05 23:45:47.000000000","message":"The bogus_region_id exists because there are 3 use cases:\n\n - region_id\u003dNone\n - region_id\u003dsome provided ID\n - user did not specify a region_id. Steve Martinelli asked me to have the code generate a UUID in this case.\n\nTherefore I need a way to have a default value but to not use None as the indicator for that value. I thought just passing in \"object()\" was not clear enough so I created the BogusRegionID.","commit_id":"3d0a2f5640b4ac5e53413a2ea029e3bd16e7b258"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"95e61b8f9f7d3660f8f8cee99c5a5da426f0c6a7","unresolved":false,"context_lines":[{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    Contains the deprecated \u0027region\u0027 instead of \u0027region_id\u0027."},{"line_number":276,"context_line":"    \"\"\""},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    ref \u003d new_endpoint_ref(service_id, interface, region\u003dregion,"},{"line_number":279,"context_line":"                           region_id\u003d\u0027invalid\u0027, **kwargs)"},{"line_number":280,"context_line":"    del ref[\u0027region_id\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_d1e0be98","line":277,"updated":"2015-11-06 02:00:50.000000000","message":"We have a check for no blank lines here. This is what is making pep8 checks to fail:\n\nD202  No blank lines allowed after function docstring\n\nHowever I agree that we don\u0027t get an useful message from the logs:\n\nhttp://logs.openstack.org/58/237758/5/check/gate-keystone-pep8/3005f83/console.html#_2015-11-05_23_56_22_971\n\nI was able to find it by looking at the logs of the next patches in the chain:\n\nhttp://logs.openstack.org/83/238283/5/check/gate-keystone-pep8/a844d24/console.html#_2015-11-06_00_46_49_428","commit_id":"2f2c6ad4868d2272f85c7c3dca33f7ba3bf7df57"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"9ca2666abc455ffb07cea5db85b0cd3c4b162a30","unresolved":false,"context_lines":[{"line_number":273,"context_line":"    ref[\u0027interface\u0027] \u003d interface"},{"line_number":274,"context_line":"    ref[\u0027service_id\u0027] \u003d service_id"},{"line_number":275,"context_line":"    ref[\u0027url\u0027] \u003d \u0027https://\u0027 + uuid.uuid4().hex + \u0027.com\u0027"},{"line_number":276,"context_line":"    if region_id is NEEDS_REGION_ID:"},{"line_number":277,"context_line":"        ref[\u0027region_id\u0027] \u003d uuid.uuid4().hex"},{"line_number":278,"context_line":"    elif region_id is None and kwargs.get(\u0027region\u0027, None) is not None:"},{"line_number":279,"context_line":"        # pre-3.2 form endpoints are not supported by this function"}],"source_content_type":"text/x-python","patch_set":9,"id":"da85f559_a8078b80","line":276,"updated":"2015-11-11 23:17:31.000000000","message":"I\u0027d prefer to have 2 separate methods. IMO, it\u0027d be much easier to understand than using this global var. But maybe that\u0027s just my personal preference.","commit_id":"563f91a36d90bb08243600cd769a82465a684e75"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"a7be16fae6b3da463cfd7817559b90999577eb77","unresolved":false,"context_lines":[{"line_number":273,"context_line":"    ref[\u0027interface\u0027] \u003d interface"},{"line_number":274,"context_line":"    ref[\u0027service_id\u0027] \u003d service_id"},{"line_number":275,"context_line":"    ref[\u0027url\u0027] \u003d \u0027https://\u0027 + uuid.uuid4().hex + \u0027.com\u0027"},{"line_number":276,"context_line":"    if region_id is NEEDS_REGION_ID:"},{"line_number":277,"context_line":"        ref[\u0027region_id\u0027] \u003d uuid.uuid4().hex"},{"line_number":278,"context_line":"    elif region_id is None and kwargs.get(\u0027region\u0027, None) is not None:"},{"line_number":279,"context_line":"        # pre-3.2 form endpoints are not supported by this function"}],"source_content_type":"text/x-python","patch_set":9,"id":"da85f559_c8f44f5c","line":276,"in_reply_to":"da85f559_a8078b80","updated":"2015-11-11 23:21:47.000000000","message":"This function is easy to use. call new_endpoint_ref(service_id\u003dservice_id). If you do this the region_id will be generated. If you pass anything as a region_id it is accepted and applied. The exception is raised just to catch anyone trying to make older style refs with this function. I would still need it with or without the NEEDS_REGION_ID.\n\nNEEDS_REGION_ID exists because I was asked to generated a region_id if none was provided. I need someway to differentiate between a value of None, and ID, and the need to make an ID.","commit_id":"563f91a36d90bb08243600cd769a82465a684e75"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"65cc7180e8fe203999fba57ee89e0a793e67343f","unresolved":false,"context_lines":[{"line_number":285,"context_line":""},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"def new_endpoint_ref_with_region(service_id, region, interface\u003d\u0027public\u0027,"},{"line_number":288,"context_line":"                                 **kwargs):"},{"line_number":289,"context_line":"    \"\"\"Define an endpoint_ref having a pre-3.2 form."},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"    Contains the deprecated \u0027region\u0027 instead of \u0027region_id\u0027."}],"source_content_type":"text/x-python","patch_set":9,"id":"da85f559_f757c157","line":288,"updated":"2015-11-11 18:35:07.000000000","message":"I am not quite sure whether we need this, conversion from region to region_id has been done in the controller layer, so it will actually pass \u0027region_id\u0027 if only \u0027region\u0027 is given.\n\nsee: https://github.com/openstack/keystone/blob/master/keystone/catalog/controllers.py#L329-L335\n\nAnd I also has a patch to tackle with this region_id/region stuff in the testcase (https://review.openstack.org/#/c/167534/) long time ago.","commit_id":"563f91a36d90bb08243600cd769a82465a684e75"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"cfd03173d2982ba8847ecf12b3684af9b072b172","unresolved":false,"context_lines":[{"line_number":285,"context_line":""},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"def new_endpoint_ref_with_region(service_id, region, interface\u003d\u0027public\u0027,"},{"line_number":288,"context_line":"                                 **kwargs):"},{"line_number":289,"context_line":"    \"\"\"Define an endpoint_ref having a pre-3.2 form."},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"    Contains the deprecated \u0027region\u0027 instead of \u0027region_id\u0027."}],"source_content_type":"text/x-python","patch_set":9,"id":"da85f559_2a287c85","line":288,"in_reply_to":"da85f559_f757c157","updated":"2015-11-11 18:39:09.000000000","message":"There are existing tests that depend on just region existing. This patch set is solely about refactoring for consistency. If there are old tests that need to be removed then we can do that and when nothing is using this function it can be removed as well.","commit_id":"563f91a36d90bb08243600cd769a82465a684e75"}],"keystone/tests/unit/test_auth.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"47877bfb1b62d452b3817be465496eccde82d223","unresolved":false,"context_lines":[{"line_number":1335,"context_line":""},{"line_number":1336,"context_line":"        def create_endpoint(service_id, region, **kwargs):"},{"line_number":1337,"context_line":"            endpoint \u003d unit.new_endpoint_ref(region_id\u003dregion,"},{"line_number":1338,"context_line":"                                             service_id\u003dservice_id, **kwargs)"},{"line_number":1339,"context_line":""},{"line_number":1340,"context_line":"            self.catalog_api.create_endpoint(endpoint[\u0027id\u0027], endpoint.copy())"},{"line_number":1341,"context_line":"            return endpoint"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_5d3d36c2","line":1338,"updated":"2015-10-23 11:58:45.000000000","message":"service_id isn\u0027t a kwarg in the method definition so it should just be passed as the first arg.","commit_id":"2c870eb5cfb114f3af00ddae3d70a9762ab04f07"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"107efe6d1f323e28206c0d4a462b44b800885342","unresolved":false,"context_lines":[{"line_number":1388,"context_line":""},{"line_number":1389,"context_line":"        self.assertEqual(endpoint_ref[\u0027id\u0027], endpoint[\u0027id\u0027])"},{"line_number":1390,"context_line":"        self.assertEqual(endpoint_ref[\u0027url\u0027], endpoint[\u0027publicURL\u0027])"},{"line_number":1391,"context_line":"        self.assertEqual(endpoint_ref[\u0027region_id\u0027], endpoint[\u0027region\u0027])"},{"line_number":1392,"context_line":""},{"line_number":1393,"context_line":"    def test_validate_catalog_disabled_endpoint(self):"},{"line_number":1394,"context_line":"        \"\"\"On validate, get back a catalog that excludes disabled endpoints.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_82d4d8eb","line":1391,"updated":"2015-10-23 06:24:29.000000000","message":"what\u0027s the points of these change?","commit_id":"2c870eb5cfb114f3af00ddae3d70a9762ab04f07"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"47877bfb1b62d452b3817be465496eccde82d223","unresolved":false,"context_lines":[{"line_number":1388,"context_line":""},{"line_number":1389,"context_line":"        self.assertEqual(endpoint_ref[\u0027id\u0027], endpoint[\u0027id\u0027])"},{"line_number":1390,"context_line":"        self.assertEqual(endpoint_ref[\u0027url\u0027], endpoint[\u0027publicURL\u0027])"},{"line_number":1391,"context_line":"        self.assertEqual(endpoint_ref[\u0027region_id\u0027], endpoint[\u0027region\u0027])"},{"line_number":1392,"context_line":""},{"line_number":1393,"context_line":"    def test_validate_catalog_disabled_endpoint(self):"},{"line_number":1394,"context_line":"        \"\"\"On validate, get back a catalog that excludes disabled endpoints.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_fd87625e","line":1391,"in_reply_to":"3a29b11f_82d4d8eb","updated":"2015-10-23 11:58:45.000000000","message":"It\u0027s just to replace the construction of an endpoint. The reason I don\u0027t like it is that it does change the semantics a little. Now the dictionaries don\u0027t have to be equal. If we are to do this then it should be a separate change with a commit message that explains why they can be different.","commit_id":"2c870eb5cfb114f3af00ddae3d70a9762ab04f07"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"47877bfb1b62d452b3817be465496eccde82d223","unresolved":false,"context_lines":[{"line_number":1414,"context_line":"        self.assertEqual("},{"line_number":1415,"context_line":"            1, len(token[\u0027access\u0027][\u0027serviceCatalog\u0027][0][\u0027endpoints\u0027]))"},{"line_number":1416,"context_line":""},{"line_number":1417,"context_line":"        self.assertEqual(endpoint_ref[\u0027id\u0027], endpoint[\u0027id\u0027])"},{"line_number":1418,"context_line":"        self.assertEqual(endpoint_ref[\u0027url\u0027], endpoint[\u0027publicURL\u0027])"},{"line_number":1419,"context_line":"        self.assertEqual(endpoint_ref[\u0027region_id\u0027], endpoint[\u0027region\u0027])"},{"line_number":1420,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_7d94b289","line":1417,"updated":"2015-10-23 11:58:45.000000000","message":"Same here.","commit_id":"2c870eb5cfb114f3af00ddae3d70a9762ab04f07"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f99ae5cae894955b35d610b205736dd158b8908c","unresolved":false,"context_lines":[{"line_number":1337,"context_line":"            endpoint \u003d unit.new_endpoint_ref(region_id\u003dregion,"},{"line_number":1338,"context_line":"                                             service_id\u003dservice_id, **kwargs)"},{"line_number":1339,"context_line":""},{"line_number":1340,"context_line":"            self.catalog_api.create_endpoint(endpoint[\u0027id\u0027], endpoint.copy())"},{"line_number":1341,"context_line":"            return endpoint"},{"line_number":1342,"context_line":""},{"line_number":1343,"context_line":"        # Create a service for use with the endpoints."}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_3eb804e5","line":1340,"updated":"2015-11-05 19:22:28.000000000","message":"nit: if we\u0027re not doing anything else to `endpoint` should we just pass that instead of passing `endpoint.copy()`?","commit_id":"3d0a2f5640b4ac5e53413a2ea029e3bd16e7b258"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"f243ea178b9b1000e8655aad7575248ff200b1d7","unresolved":false,"context_lines":[{"line_number":1337,"context_line":"            endpoint \u003d unit.new_endpoint_ref(region_id\u003dregion,"},{"line_number":1338,"context_line":"                                             service_id\u003dservice_id, **kwargs)"},{"line_number":1339,"context_line":""},{"line_number":1340,"context_line":"            self.catalog_api.create_endpoint(endpoint[\u0027id\u0027], endpoint.copy())"},{"line_number":1341,"context_line":"            return endpoint"},{"line_number":1342,"context_line":""},{"line_number":1343,"context_line":"        # Create a service for use with the endpoints."}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_45a2cc4c","line":1340,"in_reply_to":"fa80f949_3eb804e5","updated":"2015-11-05 23:45:47.000000000","message":"I was copying other code when I did this. I thought I removed these. Thanks for catching it.\n\nThere are tests where the copy is required because the ref passed into create_* is modified and the id replaced.","commit_id":"3d0a2f5640b4ac5e53413a2ea029e3bd16e7b258"}],"keystone/tests/unit/test_backend.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"47877bfb1b62d452b3817be465496eccde82d223","unresolved":false,"context_lines":[{"line_number":5459,"context_line":"        self.catalog_api.create_service(service[\u0027id\u0027], service)"},{"line_number":5460,"context_line":""},{"line_number":5461,"context_line":"        # create an endpoint attached to the service"},{"line_number":5462,"context_line":"        endpoint \u003d unit.new_endpoint_ref(service_id\u003dservice[\u0027id\u0027])"},{"line_number":5463,"context_line":"        endpoint[\u0027region_id\u0027] \u003d None"},{"line_number":5464,"context_line":"        self.catalog_api.create_endpoint(endpoint[\u0027id\u0027], endpoint)"},{"line_number":5465,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_dd6066a7","line":5462,"updated":"2015-10-23 11:58:45.000000000","message":"what about the interface? this is no longer using a uuid. Same issue with service_id.","commit_id":"2c870eb5cfb114f3af00ddae3d70a9762ab04f07"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"107efe6d1f323e28206c0d4a462b44b800885342","unresolved":false,"context_lines":[{"line_number":5460,"context_line":""},{"line_number":5461,"context_line":"        # create an endpoint attached to the service"},{"line_number":5462,"context_line":"        endpoint \u003d unit.new_endpoint_ref(service_id\u003dservice[\u0027id\u0027])"},{"line_number":5463,"context_line":"        endpoint[\u0027region_id\u0027] \u003d None"},{"line_number":5464,"context_line":"        self.catalog_api.create_endpoint(endpoint[\u0027id\u0027], endpoint)"},{"line_number":5465,"context_line":""},{"line_number":5466,"context_line":"        # deleting the service should also delete the endpoint"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_e236ec4f","line":5463,"updated":"2015-10-23 06:24:29.000000000","message":"Instead of assign None to endpoint[\u0027region_id\u0027], i\u0027d prefer to the old way -  let new_endpoint_ref accept None as the default value for region_id.","commit_id":"2c870eb5cfb114f3af00ddae3d70a9762ab04f07"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"47877bfb1b62d452b3817be465496eccde82d223","unresolved":false,"context_lines":[{"line_number":5460,"context_line":""},{"line_number":5461,"context_line":"        # create an endpoint attached to the service"},{"line_number":5462,"context_line":"        endpoint \u003d unit.new_endpoint_ref(service_id\u003dservice[\u0027id\u0027])"},{"line_number":5463,"context_line":"        endpoint[\u0027region_id\u0027] \u003d None"},{"line_number":5464,"context_line":"        self.catalog_api.create_endpoint(endpoint[\u0027id\u0027], endpoint)"},{"line_number":5465,"context_line":""},{"line_number":5466,"context_line":"        # deleting the service should also delete the endpoint"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_2257f926","line":5463,"in_reply_to":"3a29b11f_e236ec4f","updated":"2015-10-23 11:58:45.000000000","message":"++","commit_id":"2c870eb5cfb114f3af00ddae3d70a9762ab04f07"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"47877bfb1b62d452b3817be465496eccde82d223","unresolved":false,"context_lines":[{"line_number":5482,"context_line":"        self.catalog_api.create_service(service[\u0027id\u0027], service)"},{"line_number":5483,"context_line":""},{"line_number":5484,"context_line":"        # create an endpoint attached to the service"},{"line_number":5485,"context_line":"        endpoint \u003d unit.new_endpoint_ref(service_id\u003dservice[\u0027id\u0027])"},{"line_number":5486,"context_line":"        endpoint[\u0027region_id\u0027] \u003d None"},{"line_number":5487,"context_line":"        self.catalog_api.create_endpoint(endpoint[\u0027id\u0027], endpoint)"},{"line_number":5488,"context_line":"        # cache the result"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_7d703272","line":5485,"updated":"2015-10-23 11:58:45.000000000","message":"Same as above","commit_id":"2c870eb5cfb114f3af00ddae3d70a9762ab04f07"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"47877bfb1b62d452b3817be465496eccde82d223","unresolved":false,"context_lines":[{"line_number":5505,"context_line":"                          self.catalog_api.delete_endpoint,"},{"line_number":5506,"context_line":"                          endpoint[\u0027id\u0027])"},{"line_number":5507,"context_line":"        # multiple endpoints associated with a service"},{"line_number":5508,"context_line":"        second_endpoint \u003d unit.new_endpoint_ref(service_id\u003dservice[\u0027id\u0027])"},{"line_number":5509,"context_line":"        second_endpoint[\u0027region_id\u0027] \u003d None"},{"line_number":5510,"context_line":"        self.catalog_api.create_service(service[\u0027id\u0027], service)"},{"line_number":5511,"context_line":"        self.catalog_api.create_endpoint(endpoint[\u0027id\u0027], endpoint)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_fd0a02d1","line":5508,"updated":"2015-10-23 11:58:45.000000000","message":"Same as above","commit_id":"2c870eb5cfb114f3af00ddae3d70a9762ab04f07"}],"keystone/tests/unit/test_backend_sql.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"107efe6d1f323e28206c0d4a462b44b800885342","unresolved":false,"context_lines":[{"line_number":596,"context_line":"        malformed_url \u003d \"http://192.168.1.104:8774/v2/$(tenant)s\""},{"line_number":597,"context_line":"        endpoint \u003d unit.new_endpoint_ref(service_id\u003dservice[\u0027id\u0027],"},{"line_number":598,"context_line":"                                         url\u003dmalformed_url)"},{"line_number":599,"context_line":"        endpoint[\u0027region_id\u0027] \u003d None"},{"line_number":600,"context_line":"        self.catalog_api.create_endpoint(endpoint[\u0027id\u0027], endpoint.copy())"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"        # NOTE(dstanek): there are no valid URLs, so nothing is in the catalog"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_822938e8","line":599,"updated":"2015-10-23 06:24:29.000000000","message":"same here, why bother to do this change? keep the old way instead.","commit_id":"2c870eb5cfb114f3af00ddae3d70a9762ab04f07"}],"keystone/tests/unit/test_catalog.py":[{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"ff877db76521e83b8eec46ba33bf5f7352cfe3dd","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        super(TestV2CatalogAPISQL, self).config_overrides()"},{"line_number":310,"context_line":"        self.config_fixture.config(group\u003d\u0027catalog\u0027, driver\u003d\u0027sql\u0027)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    def new_endpoint_ref(self, service_id, **kwargs):"},{"line_number":313,"context_line":"        return unit.new_endpoint_ref(service_id\u003dservice_id,"},{"line_number":314,"context_line":"                                     **kwargs)"},{"line_number":315,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_0dadd030","line":312,"updated":"2015-10-20 20:52:28.000000000","message":"why even have this function anymore? Why not just call unit.new_endpoint_ref directly?  It looks like you would be changing 3 more function calls in this file.","commit_id":"1d69c1c9288e2d1129e4d7bb38f2b310ddfc43ed"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"7beec0ffd200511e159e06cfdfb7ac87349f42c3","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        super(TestV2CatalogAPISQL, self).config_overrides()"},{"line_number":310,"context_line":"        self.config_fixture.config(group\u003d\u0027catalog\u0027, driver\u003d\u0027sql\u0027)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    def new_endpoint_ref(self, service_id, **kwargs):"},{"line_number":313,"context_line":"        return unit.new_endpoint_ref(service_id\u003dservice_id,"},{"line_number":314,"context_line":"                                     **kwargs)"},{"line_number":315,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_e3cbc351","line":312,"in_reply_to":"3a29b11f_0dadd030","updated":"2015-10-20 20:59:12.000000000","message":"Hmm, good point. Thanks.","commit_id":"1d69c1c9288e2d1129e4d7bb38f2b310ddfc43ed"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"107efe6d1f323e28206c0d4a462b44b800885342","unresolved":false,"context_lines":[{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    def create_endpoint(self, service_id, **kwargs):"},{"line_number":306,"context_line":"        endpoint \u003d unit.new_endpoint_ref(service_id\u003dservice_id)"},{"line_number":307,"context_line":"        endpoint[\u0027region_id\u0027] \u003d None"},{"line_number":308,"context_line":"        self.catalog_api.create_endpoint(endpoint[\u0027id\u0027], endpoint)"},{"line_number":309,"context_line":"        return endpoint"},{"line_number":310,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_a224740c","line":307,"updated":"2015-10-23 06:24:29.000000000","message":"same here.","commit_id":"2c870eb5cfb114f3af00ddae3d70a9762ab04f07"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"107efe6d1f323e28206c0d4a462b44b800885342","unresolved":false,"context_lines":[{"line_number":324,"context_line":""},{"line_number":325,"context_line":"        # create a new, invalid endpoint - malformed type declaration"},{"line_number":326,"context_line":"        self.create_endpoint(self.service_id,"},{"line_number":327,"context_line":"                             url\u003d\u0027http://keystone/%(tenant_id)\u0027)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        # create a new, invalid endpoint - nonexistent key"},{"line_number":330,"context_line":"        self.create_endpoint(self.service_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_421fa0b6","line":327,"updated":"2015-10-23 06:24:29.000000000","message":"Good catch!","commit_id":"2c870eb5cfb114f3af00ddae3d70a9762ab04f07"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"26187dc902091cc2031bc13aa131a426d1fe5411","unresolved":false,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        self.create_endpoint(service_id\u003dself.service_id)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    def create_endpoint(self, service_id, **kwargs):"},{"line_number":306,"context_line":"        endpoint \u003d unit.new_endpoint_ref(service_id\u003dservice_id, region_id\u003dNone)"},{"line_number":307,"context_line":"        self.catalog_api.create_endpoint(endpoint[\u0027id\u0027], endpoint)"},{"line_number":308,"context_line":"        return endpoint"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_32512163","line":305,"updated":"2015-11-05 21:32:37.000000000","message":"I\u0027d rather replace **kwargs with url. Also right now kwargs isn\u0027t used so I\u0027m not sure how some of these tests actually work.","commit_id":"3d0a2f5640b4ac5e53413a2ea029e3bd16e7b258"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"f243ea178b9b1000e8655aad7575248ff200b1d7","unresolved":false,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        self.create_endpoint(service_id\u003dself.service_id)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    def create_endpoint(self, service_id, **kwargs):"},{"line_number":306,"context_line":"        endpoint \u003d unit.new_endpoint_ref(service_id\u003dservice_id, region_id\u003dNone)"},{"line_number":307,"context_line":"        self.catalog_api.create_endpoint(endpoint[\u0027id\u0027], endpoint)"},{"line_number":308,"context_line":"        return endpoint"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_a5d93824","line":305,"in_reply_to":"fa80f949_32512163","updated":"2015-11-05 23:45:47.000000000","message":"Good catch on the kwargs. Not sure what happened there. Must have lost it when I merged a change.\n\nIt worked because the url (just a UUID) is already bogus so the intent of the test is retained.","commit_id":"3d0a2f5640b4ac5e53413a2ea029e3bd16e7b258"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"eed487321d699cad59ca3e515db9989d9d18db65","unresolved":false,"context_lines":[{"line_number":305,"context_line":"    def create_endpoint(self, service_id, **kwargs):"},{"line_number":306,"context_line":"        endpoint \u003d unit.new_endpoint_ref(service_id\u003dservice_id,"},{"line_number":307,"context_line":"                                         region_id\u003dNone,"},{"line_number":308,"context_line":"                                         **kwargs)"},{"line_number":309,"context_line":"        self.catalog_api.create_endpoint(endpoint[\u0027id\u0027], endpoint)"},{"line_number":310,"context_line":"        return endpoint"},{"line_number":311,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"da85f559_143fe887","line":308,"updated":"2015-11-11 16:43:01.000000000","message":"does this still address david\u0027s comment from patch set 4? It looks like we\u0027re using kwargs again?","commit_id":"978f90fc215d228ecf72f57f81efcdebc2914c37"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"105a3018a9049113f42b7176b2544f77457e27a9","unresolved":false,"context_lines":[{"line_number":305,"context_line":"    def create_endpoint(self, service_id, **kwargs):"},{"line_number":306,"context_line":"        endpoint \u003d unit.new_endpoint_ref(service_id\u003dservice_id,"},{"line_number":307,"context_line":"                                         region_id\u003dNone,"},{"line_number":308,"context_line":"                                         **kwargs)"},{"line_number":309,"context_line":"        self.catalog_api.create_endpoint(endpoint[\u0027id\u0027], endpoint)"},{"line_number":310,"context_line":"        return endpoint"},{"line_number":311,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"da85f559_6580fcc0","line":308,"in_reply_to":"da85f559_143fe887","updated":"2015-11-11 17:35:22.000000000","message":"kwargs is supported on new_\u003ctype\u003e_ref() calls to allow the developer to override any of the fields. This is future proofing and consistency. My patch series ensures all of the related calls for all of the types behave this way. David pointed out that the method was taking kwargs but not actually using it. Now it is. His want of just URL was due to that being the only argument used at the moment and the unused variable. If you look at the entire patch series kwargs makes more sense.","commit_id":"978f90fc215d228ecf72f57f81efcdebc2914c37"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5440b47a94eaa551424a85af18d5149267f3cdc5","unresolved":false,"context_lines":[{"line_number":305,"context_line":"    def create_endpoint(self, service_id, **kwargs):"},{"line_number":306,"context_line":"        endpoint \u003d unit.new_endpoint_ref(service_id\u003dservice_id,"},{"line_number":307,"context_line":"                                         region_id\u003dNone,"},{"line_number":308,"context_line":"                                         **kwargs)"},{"line_number":309,"context_line":"        self.catalog_api.create_endpoint(endpoint[\u0027id\u0027], endpoint)"},{"line_number":310,"context_line":"        return endpoint"},{"line_number":311,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"da85f559_d725dd08","line":308,"in_reply_to":"da85f559_6580fcc0","updated":"2015-11-11 18:32:52.000000000","message":"Ok, I think that makes sense. David will probably have to follow up separately if he has outstanding comments.","commit_id":"978f90fc215d228ecf72f57f81efcdebc2914c37"}],"keystone/tests/unit/test_sql_upgrade.py":[{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"ff877db76521e83b8eec46ba33bf5f7352cfe3dd","unresolved":false,"context_lines":[{"line_number":358,"context_line":"            return service_id"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        def add_endpoint(service_id, region):"},{"line_number":361,"context_line":"            # Make a older style endpoint by hand"},{"line_number":362,"context_line":"            endpoint \u003d {"},{"line_number":363,"context_line":"                \u0027id\u0027: uuid.uuid4().hex,"},{"line_number":364,"context_line":"                \u0027interface\u0027: uuid.uuid4().hex[:8],"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_4345d714","line":361,"updated":"2015-10-20 20:52:28.000000000","message":"I don\u0027t think this comment explains much and it can probably be removed.","commit_id":"1d69c1c9288e2d1129e4d7bb38f2b310ddfc43ed"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"f9b3ef957aacb5a134e2a5c76320ac4296e54f43","unresolved":false,"context_lines":[{"line_number":358,"context_line":"            return service_id"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        def add_endpoint(service_id, region):"},{"line_number":361,"context_line":"            # Make a older style endpoint by hand"},{"line_number":362,"context_line":"            endpoint \u003d {"},{"line_number":363,"context_line":"                \u0027id\u0027: uuid.uuid4().hex,"},{"line_number":364,"context_line":"                \u0027interface\u0027: uuid.uuid4().hex[:8],"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_9e5476fe","line":361,"in_reply_to":"3a29b11f_03ceff59","updated":"2015-10-21 16:37:59.000000000","message":"I agree with you 100%, but you should state that.  Maybe its just me but if i was strolling through the code and come across this comment, I don\u0027t know if it would makes that much sense in the context. \n\nI would explain \"since the params are different here that new_endpoint_ref() cannot be used to initialize the endpoints.\" or something along those lines.","commit_id":"1d69c1c9288e2d1129e4d7bb38f2b310ddfc43ed"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"7beec0ffd200511e159e06cfdfb7ac87349f42c3","unresolved":false,"context_lines":[{"line_number":358,"context_line":"            return service_id"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        def add_endpoint(service_id, region):"},{"line_number":361,"context_line":"            # Make a older style endpoint by hand"},{"line_number":362,"context_line":"            endpoint \u003d {"},{"line_number":363,"context_line":"                \u0027id\u0027: uuid.uuid4().hex,"},{"line_number":364,"context_line":"                \u0027interface\u0027: uuid.uuid4().hex[:8],"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_03ceff59","line":361,"in_reply_to":"3a29b11f_4345d714","updated":"2015-10-20 20:59:12.000000000","message":"No, this is important. I am explaining why new_endpoint_ref() is not called here. The params required are different.","commit_id":"1d69c1c9288e2d1129e4d7bb38f2b310ddfc43ed"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"ff877db76521e83b8eec46ba33bf5f7352cfe3dd","unresolved":false,"context_lines":[{"line_number":366,"context_line":"                \u0027url\u0027: uuid.uuid4().hex,"},{"line_number":367,"context_line":"                \u0027region\u0027: region"},{"line_number":368,"context_line":"            }"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"            self.insert_dict(session, \u0027endpoint\u0027, endpoint)"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"            return endpoint[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_d28f73ca","line":369,"updated":"2015-10-20 20:52:28.000000000","message":"This change is irrelevant","commit_id":"1d69c1c9288e2d1129e4d7bb38f2b310ddfc43ed"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"f9b3ef957aacb5a134e2a5c76320ac4296e54f43","unresolved":false,"context_lines":[{"line_number":366,"context_line":"                \u0027url\u0027: uuid.uuid4().hex,"},{"line_number":367,"context_line":"                \u0027region\u0027: region"},{"line_number":368,"context_line":"            }"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"            self.insert_dict(session, \u0027endpoint\u0027, endpoint)"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"            return endpoint[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_bea7f209","line":369,"in_reply_to":"3a29b11f_c3eec7b3","updated":"2015-10-21 16:37:59.000000000","message":"People don\u0027t really like when this stuff is added into a file since it will create merge conflicts down the line.","commit_id":"1d69c1c9288e2d1129e4d7bb38f2b310ddfc43ed"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"7beec0ffd200511e159e06cfdfb7ac87349f42c3","unresolved":false,"context_lines":[{"line_number":366,"context_line":"                \u0027url\u0027: uuid.uuid4().hex,"},{"line_number":367,"context_line":"                \u0027region\u0027: region"},{"line_number":368,"context_line":"            }"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"            self.insert_dict(session, \u0027endpoint\u0027, endpoint)"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"            return endpoint[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_c3eec7b3","line":369,"in_reply_to":"3a29b11f_d28f73ca","updated":"2015-10-20 20:59:12.000000000","message":"Kind of. But since this was a cleanup patch I figured this was ok.","commit_id":"1d69c1c9288e2d1129e4d7bb38f2b310ddfc43ed"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"107efe6d1f323e28206c0d4a462b44b800885342","unresolved":false,"context_lines":[{"line_number":369,"context_line":"                \u0027url\u0027: uuid.uuid4().hex,"},{"line_number":370,"context_line":"                \u0027region\u0027: region"},{"line_number":371,"context_line":"            }"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"            self.insert_dict(session, \u0027endpoint\u0027, endpoint)"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"            return endpoint_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_424d60c2","line":372,"updated":"2015-10-23 06:24:29.000000000","message":"delete this line.","commit_id":"2c870eb5cfb114f3af00ddae3d70a9762ab04f07"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"6d62cd0779f26bf171f409a98561add66dcc1298","unresolved":false,"context_lines":[{"line_number":362,"context_line":"            endpoint_id \u003d uuid.uuid4().hex"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"            # Can\u0027t use new_endpoint_ref to make the older style endpoint"},{"line_number":365,"context_line":"            # so make it by hand."},{"line_number":366,"context_line":"            endpoint \u003d {"},{"line_number":367,"context_line":"                \u0027id\u0027: endpoint_id,"},{"line_number":368,"context_line":"                \u0027interface\u0027: uuid.uuid4().hex[:8],"}],"source_content_type":"text/x-python","patch_set":9,"id":"da85f559_2a14fc9d","line":365,"updated":"2015-11-11 18:54:53.000000000","message":"Cannot this be done by new_endpoint_ref_with_region?","commit_id":"563f91a36d90bb08243600cd769a82465a684e75"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"8542d1f76b021a925291c8d1ab1e870adfe255be","unresolved":false,"context_lines":[{"line_number":362,"context_line":"            endpoint_id \u003d uuid.uuid4().hex"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"            # Can\u0027t use new_endpoint_ref to make the older style endpoint"},{"line_number":365,"context_line":"            # so make it by hand."},{"line_number":366,"context_line":"            endpoint \u003d {"},{"line_number":367,"context_line":"                \u0027id\u0027: endpoint_id,"},{"line_number":368,"context_line":"                \u0027interface\u0027: uuid.uuid4().hex[:8],"}],"source_content_type":"text/x-python","patch_set":9,"id":"da85f559_ad6fa629","line":365,"in_reply_to":"da85f559_2a14fc9d","updated":"2015-11-11 19:16:00.000000000","message":"No because \u0027name\u0027 and \u0027description\u0027 are not supported either. I have left this file alone in all of these related changesets for the same reason. You end up deleting a fair amount. In this particular case making these refs by hand made more sense.","commit_id":"563f91a36d90bb08243600cd769a82465a684e75"}],"keystone/tests/unit/test_v3.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"26187dc902091cc2031bc13aa131a426d1fe5411","unresolved":false,"context_lines":[{"line_number":257,"context_line":"                                              interface\u003d\u0027public\u0027,"},{"line_number":258,"context_line":"                                              region_id\u003dself.region_id)"},{"line_number":259,"context_line":"        self.endpoint_id \u003d self.endpoint[\u0027id\u0027]"},{"line_number":260,"context_line":"        self.catalog_api.create_endpoint(self.endpoint_id,"},{"line_number":261,"context_line":"                                         self.endpoint.copy())"},{"line_number":262,"context_line":"        # The server adds \u0027enabled\u0027 and defaults to True."},{"line_number":263,"context_line":"        self.endpoint[\u0027enabled\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_c1857e07","line":260,"updated":"2015-11-05 21:32:37.000000000","message":"unrelated changes?","commit_id":"3d0a2f5640b4ac5e53413a2ea029e3bd16e7b258"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"f243ea178b9b1000e8655aad7575248ff200b1d7","unresolved":false,"context_lines":[{"line_number":257,"context_line":"                                              interface\u003d\u0027public\u0027,"},{"line_number":258,"context_line":"                                              region_id\u003dself.region_id)"},{"line_number":259,"context_line":"        self.endpoint_id \u003d self.endpoint[\u0027id\u0027]"},{"line_number":260,"context_line":"        self.catalog_api.create_endpoint(self.endpoint_id,"},{"line_number":261,"context_line":"                                         self.endpoint.copy())"},{"line_number":262,"context_line":"        # The server adds \u0027enabled\u0027 and defaults to True."},{"line_number":263,"context_line":"        self.endpoint[\u0027enabled\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa80f949_65dfd00d","line":260,"in_reply_to":"fa80f949_c1857e07","updated":"2015-11-05 23:45:47.000000000","message":"No. The old code generated the UUID to store in endpoint_id. There is no need to do this since new_endpoint_ref does this. So the code simply gets the UUID from the new ref.","commit_id":"3d0a2f5640b4ac5e53413a2ea029e3bd16e7b258"}],"keystone/tests/unit/test_v3_catalog.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"107efe6d1f323e28206c0d4a462b44b800885342","unresolved":false,"context_lines":[{"line_number":401,"context_line":"        region \u003d self._create_region_with_parent_id("},{"line_number":402,"context_line":"            parent_id\u003dparent_region_id)"},{"line_number":403,"context_line":"        service \u003d self._create_random_service()"},{"line_number":404,"context_line":"        ref \u003d unit.new_endpoint_ref("},{"line_number":405,"context_line":"            service_id\u003dservice[\u0027id\u0027],"},{"line_number":406,"context_line":"            interface\u003dinterface,"},{"line_number":407,"context_line":"            region_id\u003dregion.result[\u0027region\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_e57d966d","line":404,"updated":"2015-10-23 06:24:29.000000000","message":"Not quite understand this change, why we need this? Could this also be applied to L528 for example?","commit_id":"2c870eb5cfb114f3af00ddae3d70a9762ab04f07"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"107efe6d1f323e28206c0d4a462b44b800885342","unresolved":false,"context_lines":[{"line_number":802,"context_line":""},{"line_number":803,"context_line":"    def create_endpoint(self, service_id, **kwargs):"},{"line_number":804,"context_line":"        endpoint \u003d unit.new_endpoint_ref(service_id\u003dservice_id, **kwargs)"},{"line_number":805,"context_line":"        endpoint[\u0027region_id\u0027] \u003d None"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":"        self.catalog_api.create_endpoint(endpoint[\u0027id\u0027], endpoint)"},{"line_number":808,"context_line":"        return endpoint"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_828cd8da","line":805,"updated":"2015-10-23 06:24:29.000000000","message":"same here.","commit_id":"2c870eb5cfb114f3af00ddae3d70a9762ab04f07"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"eed487321d699cad59ca3e515db9989d9d18db65","unresolved":false,"context_lines":[{"line_number":794,"context_line":""},{"line_number":795,"context_line":"        self.create_endpoint(service_id\u003dself.service_id)"},{"line_number":796,"context_line":""},{"line_number":797,"context_line":"    def create_endpoint(self, service_id, **kwargs):"},{"line_number":798,"context_line":"        endpoint \u003d unit.new_endpoint_ref(service_id\u003dservice_id,"},{"line_number":799,"context_line":"                                         region_id\u003dNone, **kwargs)"},{"line_number":800,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"da85f559_b45dbc16","line":797,"updated":"2015-11-11 16:43:01.000000000","message":"looks like this already exists in keystone/tests/unit/test_catalog.py \n\nrandom nit: this should probably be addressed later but it would be nice to consolidate the `create_endpoint()` methods.","commit_id":"978f90fc215d228ecf72f57f81efcdebc2914c37"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"105a3018a9049113f42b7176b2544f77457e27a9","unresolved":false,"context_lines":[{"line_number":794,"context_line":""},{"line_number":795,"context_line":"        self.create_endpoint(service_id\u003dself.service_id)"},{"line_number":796,"context_line":""},{"line_number":797,"context_line":"    def create_endpoint(self, service_id, **kwargs):"},{"line_number":798,"context_line":"        endpoint \u003d unit.new_endpoint_ref(service_id\u003dservice_id,"},{"line_number":799,"context_line":"                                         region_id\u003dNone, **kwargs)"},{"line_number":800,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"da85f559_458a981c","line":797,"in_reply_to":"da85f559_b45dbc16","updated":"2015-11-11 17:35:22.000000000","message":"Agreed on the consolidation.","commit_id":"978f90fc215d228ecf72f57f81efcdebc2914c37"}]}
