)]}'
{"openstack_dashboard/api/base.py":[{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"1c47debdd4a54939e84fa7f960f137c186832488","unresolved":false,"context_lines":[{"line_number":198,"context_line":"}"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"def get_url_for_service(service, region, endpoint_type):"},{"line_number":202,"context_line":"    identity_version \u003d get_version_from_service(service)"},{"line_number":203,"context_line":"    for endpoint in service[\u0027endpoints\u0027]:"},{"line_number":204,"context_line":"        # ignore region for identity"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPH%2F%2Fc0c%3D","line":201,"updated":"2013-06-03 17:25:15.000000000","message":"FYI. I abstracted the logic of parsing the service_catalog in keystoneclient. There are some opportunity later for code clean-up when that code gets merge.\n\nHere is the related file for review:  https://review.openstack.org/#/c/21942/8/keystoneclient/service_catalog.py","commit_id":"b1fa5b32d34bd8ca5d9fde71668416f42be4c89f"},{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"aa754bb079836f6965d8893b1225a64b9ea955a3","unresolved":false,"context_lines":[{"line_number":198,"context_line":"}"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"def get_url_for_service(service, region, endpoint_type):"},{"line_number":202,"context_line":"    identity_version \u003d get_version_from_service(service)"},{"line_number":203,"context_line":"    for endpoint in service[\u0027endpoints\u0027]:"},{"line_number":204,"context_line":"        # ignore region for identity"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPH%2F%2Fcw8%3D","line":201,"in_reply_to":"AAAAPH%2F%2Fc0c%3D","updated":"2013-06-03 17:40:52.000000000","message":"I\u0027ll be happy to integrate with that change once it merges.","commit_id":"b1fa5b32d34bd8ca5d9fde71668416f42be4c89f"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"1c47debdd4a54939e84fa7f960f137c186832488","unresolved":false,"context_lines":[{"line_number":202,"context_line":"    identity_version \u003d get_version_from_service(service)"},{"line_number":203,"context_line":"    for endpoint in service[\u0027endpoints\u0027]:"},{"line_number":204,"context_line":"        # ignore region for identity"},{"line_number":205,"context_line":"        if service[\u0027type\u0027] \u003d\u003d \u0027identity\u0027 or region \u003d\u003d endpoint[\u0027region\u0027]:"},{"line_number":206,"context_line":"            try:"},{"line_number":207,"context_line":"                if identity_version \u003c 3:"},{"line_number":208,"context_line":"                    return endpoint[endpoint_type]"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPH%2F%2Fc1U%3D","line":205,"updated":"2013-06-03 17:25:15.000000000","message":"Should this be \"!\u003d\" since you are ignoring \u0027identity\u0027 endpoints?","commit_id":"b1fa5b32d34bd8ca5d9fde71668416f42be4c89f"},{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"aa754bb079836f6965d8893b1225a64b9ea955a3","unresolved":false,"context_lines":[{"line_number":202,"context_line":"    identity_version \u003d get_version_from_service(service)"},{"line_number":203,"context_line":"    for endpoint in service[\u0027endpoints\u0027]:"},{"line_number":204,"context_line":"        # ignore region for identity"},{"line_number":205,"context_line":"        if service[\u0027type\u0027] \u003d\u003d \u0027identity\u0027 or region \u003d\u003d endpoint[\u0027region\u0027]:"},{"line_number":206,"context_line":"            try:"},{"line_number":207,"context_line":"                if identity_version \u003c 3:"},{"line_number":208,"context_line":"                    return endpoint[endpoint_type]"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPH%2F%2FczQ%3D","line":205,"in_reply_to":"AAAAPH%2F%2Fc1U%3D","updated":"2013-06-03 17:40:52.000000000","message":"No, we are ignoring region for identity, so any region is OK.  So treat identity as if the region matched.","commit_id":"b1fa5b32d34bd8ca5d9fde71668416f42be4c89f"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"51db7f281172cd2912ca53f707f1ed664b6771dd","unresolved":false,"context_lines":[{"line_number":202,"context_line":"    identity_version \u003d get_version_from_service(service)"},{"line_number":203,"context_line":"    for endpoint in service[\u0027endpoints\u0027]:"},{"line_number":204,"context_line":"        # ignore region for identity"},{"line_number":205,"context_line":"        if service[\u0027type\u0027] \u003d\u003d \u0027identity\u0027 or region \u003d\u003d endpoint[\u0027region\u0027]:"},{"line_number":206,"context_line":"            try:"},{"line_number":207,"context_line":"                if identity_version \u003c 3:"},{"line_number":208,"context_line":"                    return endpoint[endpoint_type]"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPH%2F%2FcwQ%3D","line":205,"in_reply_to":"AAAAPH%2F%2FczQ%3D","updated":"2013-06-03 17:47:50.000000000","message":"Got it, I got confused by the comment.","commit_id":"b1fa5b32d34bd8ca5d9fde71668416f42be4c89f"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"1c47debdd4a54939e84fa7f960f137c186832488","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        region \u003d request.user.services_region"},{"line_number":241,"context_line":"        for endpoint in service[\u0027endpoints\u0027]:"},{"line_number":242,"context_line":"            # ignore region for identity"},{"line_number":243,"context_line":"            if service[\u0027type\u0027] \u003d\u003d \u0027identity\u0027 or \\"},{"line_number":244,"context_line":"               endpoint[\u0027region\u0027] \u003d\u003d region:"},{"line_number":245,"context_line":"                if service_name:"},{"line_number":246,"context_line":"                    return service[\u0027name\u0027] \u003d\u003d service_name"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPH%2F%2Fc3s%3D","line":243,"updated":"2013-06-03 17:25:15.000000000","message":"Same comment here about the condition used.","commit_id":"b1fa5b32d34bd8ca5d9fde71668416f42be4c89f"},{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"aa754bb079836f6965d8893b1225a64b9ea955a3","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        region \u003d request.user.services_region"},{"line_number":241,"context_line":"        for endpoint in service[\u0027endpoints\u0027]:"},{"line_number":242,"context_line":"            # ignore region for identity"},{"line_number":243,"context_line":"            if service[\u0027type\u0027] \u003d\u003d \u0027identity\u0027 or \\"},{"line_number":244,"context_line":"               endpoint[\u0027region\u0027] \u003d\u003d region:"},{"line_number":245,"context_line":"                if service_name:"},{"line_number":246,"context_line":"                    return service[\u0027name\u0027] \u003d\u003d service_name"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPH%2F%2FczM%3D","line":243,"in_reply_to":"AAAAPH%2F%2Fc3s%3D","updated":"2013-06-03 17:40:52.000000000","message":"Also here.  Identity is treated as region agnostic.  So treat as though the region matches.","commit_id":"b1fa5b32d34bd8ca5d9fde71668416f42be4c89f"}],"openstack_dashboard/test/api_tests/base_tests.py":[{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"530e29b86d08948a961994682464a0e8f63f5e57","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        with self.assertRaises(exceptions.ServiceCatalogException):"},{"line_number":142,"context_line":"            url \u003d api_base.url_for(self.request, \u0027notAnApi\u0027)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        self.request.user.services_region \u003d \"RegionTwo\""},{"line_number":145,"context_line":"        url \u003d api_base.url_for(self.request, \u0027compute\u0027)"},{"line_number":146,"context_line":"        self.assertEqual(url, \u0027http://public.nova2.example.com:8774/v2\u0027)"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2F1Ro%3D","line":144,"updated":"2013-06-20 06:57:18.000000000","message":"Great job on this set of test, it covers various scenarios for calling url_for().","commit_id":"ae3f63e9b7b1e0d6d36c7bb4e4bcfe5754187821"}],"openstack_dashboard/test/api_tests/keystone_tests.py":[{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"530e29b86d08948a961994682464a0e8f63f5e57","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                         \"http://public.nova2.example.com:8774/v2\")"},{"line_number":118,"context_line":"        self.assertEqual(service.host, \"int.nova2.example.com\")"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def test_service_wrapper_service_not_in_region(self):"},{"line_number":121,"context_line":"        catalog \u003d self.service_catalog"},{"line_number":122,"context_line":"        image_data \u003d api.base.get_service_from_catalog(catalog, \"image\")"},{"line_number":123,"context_line":"        image_data[\u0027id\u0027] \u003d 1"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2F1SI%3D","line":120,"updated":"2013-06-20 06:57:18.000000000","message":"What is the difference between this test and the first one?","commit_id":"ae3f63e9b7b1e0d6d36c7bb4e4bcfe5754187821"},{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"af97fec3d904eddb7e401fd1e77bd6958712dafb","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                         \"http://public.nova2.example.com:8774/v2\")"},{"line_number":118,"context_line":"        self.assertEqual(service.host, \"int.nova2.example.com\")"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def test_service_wrapper_service_not_in_region(self):"},{"line_number":121,"context_line":"        catalog \u003d self.service_catalog"},{"line_number":122,"context_line":"        image_data \u003d api.base.get_service_from_catalog(catalog, \"image\")"},{"line_number":123,"context_line":"        image_data[\u0027id\u0027] \u003d 1"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAPn%2F%2Fzkw%3D","line":120,"in_reply_to":"AAAAPn%2F%2F1SI%3D","updated":"2013-06-20 20:02:49.000000000","message":"Good point.  I removed the test.  What I had intended to test here did not make sense, so ended up with a redundant test.","commit_id":"ae3f63e9b7b1e0d6d36c7bb4e4bcfe5754187821"}],"requirements.txt":[{"author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"change_message_id":"6d67ca29028ed9e0c3b6159734c9ed00b671d8d7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"# Horizon Core Requirements"},{"line_number":5,"context_line":"Django\u003e\u003d1.4,\u003c1.6"},{"line_number":6,"context_line":"django_compressor"},{"line_number":7,"context_line":"django_openstack_auth\u003e\u003d1.0.10"},{"line_number":8,"context_line":"iso8601\u003e\u003d0.1.4"},{"line_number":9,"context_line":"netaddr"},{"line_number":10,"context_line":"python-cinderclient\u003e\u003d1.0.2,\u003c2.0.0"}],"source_content_type":"text/plain","patch_set":9,"id":"AAAAPX%2F%2F5wg%3D","line":7,"updated":"2013-06-06 12:47:36.000000000","message":"Please note, there is a temporary problem with the tarball of django_openstack_auth\nhttps://github.com/gabrielhurley/django_openstack_auth/issues/43\n\nAs long as this is not resolved, I\u0027d like not to merge this here.","commit_id":"b1fa5b32d34bd8ca5d9fde71668416f42be4c89f"},{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"bd81eb979e4e5acd54b2ad203ab97a71cf91a162","unresolved":false,"context_lines":[{"line_number":4,"context_line":"# Horizon Core Requirements"},{"line_number":5,"context_line":"Django\u003e\u003d1.4,\u003c1.6"},{"line_number":6,"context_line":"django_compressor"},{"line_number":7,"context_line":"django_openstack_auth\u003e\u003d1.0.10"},{"line_number":8,"context_line":"iso8601\u003e\u003d0.1.4"},{"line_number":9,"context_line":"netaddr"},{"line_number":10,"context_line":"python-cinderclient\u003e\u003d1.0.2,\u003c2.0.0"}],"source_content_type":"text/plain","patch_set":9,"id":"AAAAPX%2F%2Fvn8%3D","line":7,"in_reply_to":"AAAAPX%2F%2F5wg%3D","updated":"2013-06-11 15:11:38.000000000","message":"added to openstack/requirements and updated the dependency","commit_id":"b1fa5b32d34bd8ca5d9fde71668416f42be4c89f"}]}
