)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"f1f091040d25a0b9b1241f021e60a83671c1e52f","unresolved":false,"context_lines":[{"line_number":9,"context_line":"1. Create an endpoint without \u0027service_id\u0027 should return a 400 Bad Request"},{"line_number":10,"context_line":"with appropriate message instead of 500 Internal Server Error."},{"line_number":11,"context_line":"2. Empty urls should be discarded."},{"line_number":12,"context_line":"3. Invalid urls should be discarded in response body."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I535467ec35fe2ae738ecae0a4f20d19ff4f001ec"},{"line_number":15,"context_line":"Closes-Bug: #1250765"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAATn%2F%2FHFA%3D","line":12,"updated":"2013-11-14 10:14:14.000000000","message":"I think you haven\u0027t done No.3.","commit_id":"d6decb5fb0d5309b1882465f41776bcd7a1a2f88"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"a7c2a2f57684048838e45be8a535673ea33b41a0","unresolved":false,"context_lines":[{"line_number":9,"context_line":"1. Create an endpoint without \u0027service_id\u0027 should return a 400 Bad Request"},{"line_number":10,"context_line":"with appropriate message instead of 500 Internal Server Error."},{"line_number":11,"context_line":"2. Empty urls should be discarded."},{"line_number":12,"context_line":"3. Invalid urls should be discarded in response body."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I535467ec35fe2ae738ecae0a4f20d19ff4f001ec"},{"line_number":15,"context_line":"Closes-Bug: #1250765"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAATn%2F%2B50U%3D","line":12,"in_reply_to":"AAAATn%2F%2FECQ%3D","updated":"2013-11-18 19:08:43.000000000","message":"I agree with xu-haiwei, please remove #3 from the commit message as we didn\u0027t check for the actual URL format.","commit_id":"d6decb5fb0d5309b1882465f41776bcd7a1a2f88"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"6d78d3f0d4933f3a204f66b7551c34d5797b6c63","unresolved":false,"context_lines":[{"line_number":9,"context_line":"1. Create an endpoint without \u0027service_id\u0027 should return a 400 Bad Request"},{"line_number":10,"context_line":"with appropriate message instead of 500 Internal Server Error."},{"line_number":11,"context_line":"2. Empty urls should be discarded."},{"line_number":12,"context_line":"3. Invalid urls should be discarded in response body."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I535467ec35fe2ae738ecae0a4f20d19ff4f001ec"},{"line_number":15,"context_line":"Closes-Bug: #1250765"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAATn%2F%2FECQ%3D","line":12,"in_reply_to":"AAAATn%2F%2FFlY%3D","updated":"2013-11-15 01:44:00.000000000","message":"I think I have misunderstood you. I had thought you meant checking the urls\u0027 format.","commit_id":"d6decb5fb0d5309b1882465f41776bcd7a1a2f88"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"2db6871002091a622fa0fcd2e3476700867039e4","unresolved":false,"context_lines":[{"line_number":9,"context_line":"1. Create an endpoint without \u0027service_id\u0027 should return a 400 Bad Request"},{"line_number":10,"context_line":"with appropriate message instead of 500 Internal Server Error."},{"line_number":11,"context_line":"2. Empty urls should be discarded."},{"line_number":12,"context_line":"3. Invalid urls should be discarded in response body."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I535467ec35fe2ae738ecae0a4f20d19ff4f001ec"},{"line_number":15,"context_line":"Closes-Bug: #1250765"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAATn%2F%2FFlY%3D","line":12,"in_reply_to":"AAAATn%2F%2FHFA%3D","updated":"2013-11-14 15:27:27.000000000","message":"I pop the null or empty urls from the response as the endpoint dict.See line 99 in controllers.py","commit_id":"d6decb5fb0d5309b1882465f41776bcd7a1a2f88"}],"keystone/catalog/controllers.py":[{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"52ae683aae98713481b024f3a15f6df72efb2c3d","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        urls \u003d {}"},{"line_number":91,"context_line":"        for i in INTERFACES:"},{"line_number":92,"context_line":"            # remove all urls so they aren\u0027t persisted them more than once"},{"line_number":93,"context_line":"            if endpoint.get(\u0027%surl\u0027 % i):"},{"line_number":94,"context_line":"                # valid urls need to be persisted"},{"line_number":95,"context_line":"                urls[i] \u003d endpoint.pop(\u0027%surl\u0027 % i)"},{"line_number":96,"context_line":"            elif \u0027%surl\u0027 % i in endpoint:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FHz8%3D","line":93,"updated":"2013-11-14 06:10:48.000000000","message":"I think this line shouldn\u0027t be changed.","commit_id":"3276447321dfa6d1d2c9ce1616ed9cf81f2d6b2c"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"affc584e7888d90f5f6af851061e0880374cfe6e","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        urls \u003d {}"},{"line_number":91,"context_line":"        for i in INTERFACES:"},{"line_number":92,"context_line":"            # remove all urls so they aren\u0027t persisted them more than once"},{"line_number":93,"context_line":"            if endpoint.get(\u0027%surl\u0027 % i):"},{"line_number":94,"context_line":"                # valid urls need to be persisted"},{"line_number":95,"context_line":"                urls[i] \u003d endpoint.pop(\u0027%surl\u0027 % i)"},{"line_number":96,"context_line":"            elif \u0027%surl\u0027 % i in endpoint:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FHxk%3D","line":93,"in_reply_to":"AAAATn%2F%2FHz8%3D","updated":"2013-11-14 07:12:50.000000000","message":"I my opinion,the empty url but not None is invalid too.As \"adminurl\" \u003d \"\".In this case the url must be discarded.","commit_id":"3276447321dfa6d1d2c9ce1616ed9cf81f2d6b2c"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"52ae683aae98713481b024f3a15f6df72efb2c3d","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                # valid urls need to be persisted"},{"line_number":95,"context_line":"                urls[i] \u003d endpoint.pop(\u0027%surl\u0027 % i)"},{"line_number":96,"context_line":"            elif \u0027%surl\u0027 % i in endpoint:"},{"line_number":97,"context_line":"                # None or empty urls can be discarded in both"},{"line_number":98,"context_line":"                endpoint.pop(\u0027%surl\u0027 % i)"},{"line_number":99,"context_line":"                legacy_endpoint_ref.pop(\u0027%surl\u0027 % i)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FH0U%3D","line":97,"updated":"2013-11-14 06:10:48.000000000","message":"I don\u0027t know what you mean the \u0027None urls\u0027 and the \u0027empty urls\u0027, are they the same?","commit_id":"3276447321dfa6d1d2c9ce1616ed9cf81f2d6b2c"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"affc584e7888d90f5f6af851061e0880374cfe6e","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                # valid urls need to be persisted"},{"line_number":95,"context_line":"                urls[i] \u003d endpoint.pop(\u0027%surl\u0027 % i)"},{"line_number":96,"context_line":"            elif \u0027%surl\u0027 % i in endpoint:"},{"line_number":97,"context_line":"                # None or empty urls can be discarded in both"},{"line_number":98,"context_line":"                endpoint.pop(\u0027%surl\u0027 % i)"},{"line_number":99,"context_line":"                legacy_endpoint_ref.pop(\u0027%surl\u0027 % i)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FHwg%3D","line":97,"in_reply_to":"AAAATn%2F%2FH0U%3D","updated":"2013-11-14 07:12:50.000000000","message":"You are right.\nOnly the empty urls.I will modify to \"Empty urls can be discarded in both\".","commit_id":"3276447321dfa6d1d2c9ce1616ed9cf81f2d6b2c"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"f1f091040d25a0b9b1241f021e60a83671c1e52f","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        urls \u003d {}"},{"line_number":91,"context_line":"        for i in INTERFACES:"},{"line_number":92,"context_line":"            # remove all urls so they aren\u0027t persisted them more than once"},{"line_number":93,"context_line":"            if endpoint.get(\u0027%surl\u0027 % i):"},{"line_number":94,"context_line":"                # valid urls need to be persisted"},{"line_number":95,"context_line":"                urls[i] \u003d endpoint.pop(\u0027%surl\u0027 % i)"},{"line_number":96,"context_line":"            elif \u0027%surl\u0027 % i in endpoint:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FHFU%3D","line":93,"updated":"2013-11-14 10:14:14.000000000","message":"I just made a test and found the server returned 400 when the publicurl was set to \"\", even if this line wasn\u0027t changed.","commit_id":"d6decb5fb0d5309b1882465f41776bcd7a1a2f88"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"01e948004a84b10e98b05f3fbac80c319dd9aa82","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        urls \u003d {}"},{"line_number":91,"context_line":"        for i in INTERFACES:"},{"line_number":92,"context_line":"            # remove all urls so they aren\u0027t persisted them more than once"},{"line_number":93,"context_line":"            if endpoint.get(\u0027%surl\u0027 % i):"},{"line_number":94,"context_line":"                # valid urls need to be persisted"},{"line_number":95,"context_line":"                urls[i] \u003d endpoint.pop(\u0027%surl\u0027 % i)"},{"line_number":96,"context_line":"            elif \u0027%surl\u0027 % i in endpoint:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FDqk%3D","line":93,"in_reply_to":"AAAATn%2F%2FDuU%3D","updated":"2013-11-15 02:34:03.000000000","message":"I didn\u0027t notice the \"adminurl\" and \"internalurl\". Sorry for that.\nDeleting the empty urls seems good though in endpoint-list adminurl and internalurl still shows.","commit_id":"d6decb5fb0d5309b1882465f41776bcd7a1a2f88"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"56b8b1394428ae397321551c2aa59d1ed30b81dc","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        urls \u003d {}"},{"line_number":91,"context_line":"        for i in INTERFACES:"},{"line_number":92,"context_line":"            # remove all urls so they aren\u0027t persisted them more than once"},{"line_number":93,"context_line":"            if endpoint.get(\u0027%surl\u0027 % i):"},{"line_number":94,"context_line":"                # valid urls need to be persisted"},{"line_number":95,"context_line":"                urls[i] \u003d endpoint.pop(\u0027%surl\u0027 % i)"},{"line_number":96,"context_line":"            elif \u0027%surl\u0027 % i in endpoint:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FDuU%3D","line":93,"in_reply_to":"AAAATn%2F%2FDxM%3D","updated":"2013-11-15 02:09:16.000000000","message":"There may be other urls such as \"adminurl\" and \"internalurl\",i think we should check them,and pop them if there are empty.\nYou mean i have to exclude the \"publicurl\"?I think it\u0027s unnesessary?","commit_id":"d6decb5fb0d5309b1882465f41776bcd7a1a2f88"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"6d78d3f0d4933f3a204f66b7551c34d5797b6c63","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        urls \u003d {}"},{"line_number":91,"context_line":"        for i in INTERFACES:"},{"line_number":92,"context_line":"            # remove all urls so they aren\u0027t persisted them more than once"},{"line_number":93,"context_line":"            if endpoint.get(\u0027%surl\u0027 % i):"},{"line_number":94,"context_line":"                # valid urls need to be persisted"},{"line_number":95,"context_line":"                urls[i] \u003d endpoint.pop(\u0027%surl\u0027 % i)"},{"line_number":96,"context_line":"            elif \u0027%surl\u0027 % i in endpoint:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FDxM%3D","line":93,"in_reply_to":"AAAATn%2F%2FFj4%3D","updated":"2013-11-15 01:44:00.000000000","message":"Just because the line 85, when publicurl is set to \u0027\u0027, the exception will be raised and the invalid publicurl won\u0027t be written in legacy_endpoint_ref. So I think there is no need to pop it intentionally.","commit_id":"d6decb5fb0d5309b1882465f41776bcd7a1a2f88"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"2db6871002091a622fa0fcd2e3476700867039e4","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        urls \u003d {}"},{"line_number":91,"context_line":"        for i in INTERFACES:"},{"line_number":92,"context_line":"            # remove all urls so they aren\u0027t persisted them more than once"},{"line_number":93,"context_line":"            if endpoint.get(\u0027%surl\u0027 % i):"},{"line_number":94,"context_line":"                # valid urls need to be persisted"},{"line_number":95,"context_line":"                urls[i] \u003d endpoint.pop(\u0027%surl\u0027 % i)"},{"line_number":96,"context_line":"            elif \u0027%surl\u0027 % i in endpoint:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FFj4%3D","line":93,"in_reply_to":"AAAATn%2F%2FHFU%3D","updated":"2013-11-14 15:27:27.000000000","message":"The publicurl is check in line 85.","commit_id":"d6decb5fb0d5309b1882465f41776bcd7a1a2f88"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b1c139e33cafb6b4a1c995c2f35feb52fa72544b","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        self._require_attribute(endpoint, \u0027publicurl\u0027)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        legacy_endpoint_ref \u003d endpoint.copy()"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        urls \u003d {}"},{"line_number":90,"context_line":"        for i in INTERFACES:"},{"line_number":91,"context_line":"            # remove all urls so they aren\u0027t persisted them more than once"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2BzaY%3D","side":"PARENT","line":88,"updated":"2013-11-19 23:28:54.000000000","message":"(NIT): Why delete the newline here?","commit_id":"a0f8236a390ced4414bd4b6ce7c49d4acc50edd4"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b1c139e33cafb6b4a1c995c2f35feb52fa72544b","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                # valid urls need to be persisted"},{"line_number":95,"context_line":"                urls[i] \u003d endpoint.pop(\u0027%surl\u0027 % i)"},{"line_number":96,"context_line":"            elif \u0027%surl\u0027 % i in endpoint:"},{"line_number":97,"context_line":"                # null or empty urls can be discarded in both"},{"line_number":98,"context_line":"                endpoint.pop(\u0027%surl\u0027 % i)"},{"line_number":99,"context_line":"                legacy_endpoint_ref.pop(\u0027%surl\u0027 % i)"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2BzaQ%3D","line":97,"updated":"2013-11-19 23:28:54.000000000","message":"(NIT): Can probably just keep this at \n\n\u0027null or empty urls can be discarded\u0027","commit_id":"8b0e52f6e651b71b2785e34ae2d79f4679505da0"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"4de5f9369a240591e2158d95b9f952964ebd72b3","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        urls \u003d {}"},{"line_number":92,"context_line":"        for i in INTERFACES:"},{"line_number":93,"context_line":"            # remove all urls so they aren\u0027t persisted them more than once"},{"line_number":94,"context_line":"            if endpoint.get(\u0027%surl\u0027 % i):"},{"line_number":95,"context_line":"                # valid urls need to be persisted"},{"line_number":96,"context_line":"                urls[i] \u003d endpoint.pop(\u0027%surl\u0027 % i)"},{"line_number":97,"context_line":"            elif \u0027%surl\u0027 % i in endpoint:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BkMw%3D","line":94,"updated":"2013-11-23 05:36:39.000000000","message":"More of a nit than anything else, we should likely only do the string formatting action one time instead of potentially 2-3 times:\n1: line 94 (None/False returned)\n2: line 97 (True)\n3: line 100 (pop)","commit_id":"f77822bbc0147b1c1bb3569c14d141013645b576"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"db3122bad20e1bfc3a0972b3e128de12f45111cb","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        urls \u003d {}"},{"line_number":92,"context_line":"        for i in INTERFACES:"},{"line_number":93,"context_line":"            # remove all urls so they aren\u0027t persisted them more than once"},{"line_number":94,"context_line":"            if endpoint.get(\u0027%surl\u0027 % i):"},{"line_number":95,"context_line":"                # valid urls need to be persisted"},{"line_number":96,"context_line":"                urls[i] \u003d endpoint.pop(\u0027%surl\u0027 % i)"},{"line_number":97,"context_line":"            elif \u0027%surl\u0027 % i in endpoint:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2BhyE%3D","line":94,"in_reply_to":"AAAATn%2F%2BkMw%3D","updated":"2013-11-25 03:45:58.000000000","message":"Thanks.I will modify this.","commit_id":"f77822bbc0147b1c1bb3569c14d141013645b576"}],"keystone/tests/test_catalog.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"a7c2a2f57684048838e45be8a535673ea33b41a0","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        if missing_param:"},{"line_number":68,"context_line":"            body[\u0027endpoint\u0027][missing_param] \u003d None"},{"line_number":69,"context_line":"        if update_urls:"},{"line_number":70,"context_line":"            for k, value in update_urls.items():"},{"line_number":71,"context_line":"                body[\u0027endpoint\u0027][k] \u003d value"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        r \u003d self.admin_request(method\u003d\u0027POST\u0027, token\u003dself.get_scoped_token(),"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2B51c%3D","line":70,"updated":"2013-11-18 19:08:43.000000000","message":"may want to use interface and url instead of k and value to make the code more readable.\n\nfor interface, url in update_urls.items():","commit_id":"d6decb5fb0d5309b1882465f41776bcd7a1a2f88"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"a5ce298ad6fc139003ad09ff0b3b193856f1fd70","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            body[\u0027endpoint\u0027][missing_param] \u003d None"},{"line_number":69,"context_line":"        if update_urls:"},{"line_number":70,"context_line":"            for interface, url in update_urls.items():"},{"line_number":71,"context_line":"                body[\u0027endpoint\u0027][interface] \u003d url"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        r \u003d self.admin_request(method\u003d\u0027POST\u0027, token\u003dself.get_scoped_token(),"},{"line_number":74,"context_line":"                               path\u003dpath, expected_status\u003dexpected_status,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2Bmic%3D","line":71,"updated":"2013-11-22 16:13:12.000000000","message":"this approach is terribly difficult to follow","commit_id":"79bcbce9022fbcb70ae9d23a35e78d36edfbe7b6"}]}
