)]}'
{"nova/api/openstack/wsgi.py":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"cc21215873bd9f3c820bee83f3172a500821559b","unresolved":false,"context_lines":[{"line_number":1270,"context_line":"            # Set action name for v2 compatibility"},{"line_number":1271,"context_line":"            if getattr(value, \u0027wsgi_action_v2compat\u0027, None):"},{"line_number":1272,"context_line":"                actions[value.wsgi_action_v2compat] \u003d key"},{"line_number":1273,"context_line":"            if getattr(value, \u0027multi_version\u0027, False):"},{"line_number":1274,"context_line":"                multi_version_funcs.append(key)"},{"line_number":1275,"context_line":"                del cls_dict[key]"},{"line_number":1276,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2ByHg%3D","line":1273,"updated":"2014-03-24 12:16:45.000000000","message":"Don\u0027t need the False here","commit_id":"ffde41ebe349790f31633b9cac5828294b8dc92a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"207ca535e8d57630b69bb9435b5dcc474322b7c4","unresolved":false,"context_lines":[{"line_number":1270,"context_line":"            # Set action name for v2 compatibility"},{"line_number":1271,"context_line":"            if getattr(value, \u0027wsgi_action_v2compat\u0027, None):"},{"line_number":1272,"context_line":"                actions[value.wsgi_action_v2compat] \u003d key"},{"line_number":1273,"context_line":"            if getattr(value, \u0027multi_version\u0027, False):"},{"line_number":1274,"context_line":"                multi_version_funcs.append(key)"},{"line_number":1275,"context_line":"                del cls_dict[key]"},{"line_number":1276,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2BoAc%3D","line":1273,"in_reply_to":"AAAAWH%2F%2ByHg%3D","updated":"2014-03-25 14:00:05.000000000","message":"Done","commit_id":"ffde41ebe349790f31633b9cac5828294b8dc92a"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"cc21215873bd9f3c820bee83f3172a500821559b","unresolved":false,"context_lines":[{"line_number":1328,"context_line":""},{"line_number":1329,"context_line":"            def multi_version_helper(*args, **kwargs):"},{"line_number":1330,"context_line":"                version \u003d \u00273.0\u0027"},{"line_number":1331,"context_line":"                if args[0].application_url.endswith(\u0027v2.1\u0027):"},{"line_number":1332,"context_line":"                    version \u003d \u00272.1\u0027"},{"line_number":1333,"context_line":"                return getattr("},{"line_number":1334,"context_line":"                    self, \u0027%s_%s\u0027 % (key, version))(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2ByCg%3D","line":1331,"updated":"2014-03-24 12:16:45.000000000","message":"Can we just pull the last part of the path off and use that? Eg we\u0027d end up with v2.1 or v3?\n\nThat way don\u0027t need any version specific logic in here, though we\u0027d need to define the decorator with v3 instead of v3.0. Or perhaps we could just strip the v prefix off if we don\u0027t want to declare it as @version(\u00273\u0027) rather than @version(\u0027v3\u0027) (former is probably nicer)","commit_id":"ffde41ebe349790f31633b9cac5828294b8dc92a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"unresolved":false,"context_lines":[{"line_number":1328,"context_line":""},{"line_number":1329,"context_line":"            def multi_version_helper(*args, **kwargs):"},{"line_number":1330,"context_line":"                version \u003d \u00273.0\u0027"},{"line_number":1331,"context_line":"                if args[0].application_url.endswith(\u0027v2.1\u0027):"},{"line_number":1332,"context_line":"                    version \u003d \u00272.1\u0027"},{"line_number":1333,"context_line":"                return getattr("},{"line_number":1334,"context_line":"                    self, \u0027%s_%s\u0027 % (key, version))(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2BhTk%3D","line":1331,"in_reply_to":"AAAAWH%2F%2BhaM%3D","updated":"2014-03-26 08:03:57.000000000","message":"dict to map is good idea, and I agree to map to 2.1.","commit_id":"ffde41ebe349790f31633b9cac5828294b8dc92a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"e660c23e7735e6775498bba0cddfcb1494daa40d","unresolved":false,"context_lines":[{"line_number":1328,"context_line":""},{"line_number":1329,"context_line":"            def multi_version_helper(*args, **kwargs):"},{"line_number":1330,"context_line":"                version \u003d \u00273.0\u0027"},{"line_number":1331,"context_line":"                if args[0].application_url.endswith(\u0027v2.1\u0027):"},{"line_number":1332,"context_line":"                    version \u003d \u00272.1\u0027"},{"line_number":1333,"context_line":"                return getattr("},{"line_number":1334,"context_line":"                    self, \u0027%s_%s\u0027 % (key, version))(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2BhaM%3D","line":1331,"in_reply_to":"AAAAWH%2F%2BhsU%3D","updated":"2014-03-26 07:38:23.000000000","message":"+1 for using dict to map. But why v2 and v2.1 map to 2.0, not 2.1?","commit_id":"ffde41ebe349790f31633b9cac5828294b8dc92a"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"unresolved":false,"context_lines":[{"line_number":1328,"context_line":""},{"line_number":1329,"context_line":"            def multi_version_helper(*args, **kwargs):"},{"line_number":1330,"context_line":"                version \u003d \u00273.0\u0027"},{"line_number":1331,"context_line":"                if args[0].application_url.endswith(\u0027v2.1\u0027):"},{"line_number":1332,"context_line":"                    version \u003d \u00272.1\u0027"},{"line_number":1333,"context_line":"                return getattr("},{"line_number":1334,"context_line":"                    self, \u0027%s_%s\u0027 % (key, version))(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2BhsU%3D","line":1331,"in_reply_to":"AAAAWH%2F%2Bn1s%3D","updated":"2014-03-26 06:22:36.000000000","message":"maybe we can have a dict to map both v2 and v2.1 to 2.0\nand v3 to map to 3.0?","commit_id":"ffde41ebe349790f31633b9cac5828294b8dc92a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"3d1d26ebfb9a050bade9a9f7582552acd328b0f2","unresolved":false,"context_lines":[{"line_number":1328,"context_line":""},{"line_number":1329,"context_line":"            def multi_version_helper(*args, **kwargs):"},{"line_number":1330,"context_line":"                version \u003d \u00273.0\u0027"},{"line_number":1331,"context_line":"                if args[0].application_url.endswith(\u0027v2.1\u0027):"},{"line_number":1332,"context_line":"                    version \u003d \u00272.1\u0027"},{"line_number":1333,"context_line":"                return getattr("},{"line_number":1334,"context_line":"                    self, \u0027%s_%s\u0027 % (key, version))(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2Bn1s%3D","line":1331,"in_reply_to":"AAAAWH%2F%2Bn8U%3D","updated":"2014-03-25 14:12:22.000000000","message":"In future when removing v2 implementation completely, I guess v2(not v2.1) also will be switched with v2.1 like:\n\n/etc/nova/api-paste.ini\n - /v2: openstack_compute_api_v2\n + /v2: openstack_compute_api_v21\n /v2.1: openstack_compute_api_v21\n\nSo we need to find more canonical way for distinguishing the version.","commit_id":"ffde41ebe349790f31633b9cac5828294b8dc92a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"207ca535e8d57630b69bb9435b5dcc474322b7c4","unresolved":false,"context_lines":[{"line_number":1328,"context_line":""},{"line_number":1329,"context_line":"            def multi_version_helper(*args, **kwargs):"},{"line_number":1330,"context_line":"                version \u003d \u00273.0\u0027"},{"line_number":1331,"context_line":"                if args[0].application_url.endswith(\u0027v2.1\u0027):"},{"line_number":1332,"context_line":"                    version \u003d \u00272.1\u0027"},{"line_number":1333,"context_line":"                return getattr("},{"line_number":1334,"context_line":"                    self, \u0027%s_%s\u0027 % (key, version))(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2Bn8U%3D","line":1331,"in_reply_to":"AAAAWH%2F%2ByCg%3D","updated":"2014-03-25 14:00:05.000000000","message":"Should we have canonical way for version? Like we always use major and minor at same time. \u00273\u0027 and \u00272.1\u0027 looks strange, because \u00273\u0027 only have major number. But I\u0027m ok the way you suggested. It\u0027s not big problem for me.","commit_id":"ffde41ebe349790f31633b9cac5828294b8dc92a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"unresolved":false,"context_lines":[{"line_number":1341,"context_line":"                    req \u003d args[0]"},{"line_number":1342,"context_line":"                version \u003d {\u0027v2.1\u0027: \u00272.1\u0027,"},{"line_number":1343,"context_line":"                           \u0027v2\u0027: \u00272.1\u0027,"},{"line_number":1344,"context_line":"                           \u0027v3\u0027: \u00273.0\u0027}[req.application_url.split(\u0027/\u0027)[-1]]"},{"line_number":1345,"context_line":"                return getattr("},{"line_number":1346,"context_line":"                    self, \u0027%s_%s\u0027 % (key, version))(*args, **kwargs)"},{"line_number":1347,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F9xoI%3D","line":1344,"updated":"2014-04-02 08:15:52.000000000","message":"https://review.openstack.org/#/c/77105/31/nova/api/openstack/wsgi.py sets already \"v2api\" flag in req. so how about using this flag?\n\nI hope the place which refers application_url is single for the maintenance.","commit_id":"9e485caab3ca535a11d11854d432a45907882482"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"e660c23e7735e6775498bba0cddfcb1494daa40d","unresolved":false,"context_lines":[{"line_number":1341,"context_line":"                    req \u003d args[0]"},{"line_number":1342,"context_line":"                version \u003d {\u0027v2.1\u0027: \u00272.1\u0027,"},{"line_number":1343,"context_line":"                           \u0027v2\u0027: \u00272.1\u0027,"},{"line_number":1344,"context_line":"                           \u0027v3\u0027: \u00273.0\u0027}[req.application_url.split(\u0027/\u0027)[-1]]"},{"line_number":1345,"context_line":"                return getattr("},{"line_number":1346,"context_line":"                    self, \u0027%s_%s\u0027 % (key, version))(*args, **kwargs)"},{"line_number":1347,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAWH%2F9XDk%3D","line":1344,"in_reply_to":"AAAAWH%2F9xoI%3D","updated":"2014-04-05 14:59:08.000000000","message":"you are right, but there is comment please reference https://review.openstack.org/#/c/77105/33/nova/api/openstack/wsgi.py","commit_id":"9e485caab3ca535a11d11854d432a45907882482"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"e660c23e7735e6775498bba0cddfcb1494daa40d","unresolved":false,"context_lines":[{"line_number":1341,"context_line":"                    req \u003d args[0]"},{"line_number":1342,"context_line":"                version \u003d {\u0027v2.1\u0027: \u00272.1\u0027,"},{"line_number":1343,"context_line":"                           \u0027v2\u0027: \u00272.1\u0027,"},{"line_number":1344,"context_line":"                           \u0027v3\u0027: \u00273.0\u0027}[req.application_url.split(\u0027/\u0027)[-1]]"},{"line_number":1345,"context_line":"                return getattr("},{"line_number":1346,"context_line":"                    self, \u0027%s_%s\u0027 % (key, version))(*args, **kwargs)"},{"line_number":1347,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAWH%2F9W2E%3D","line":1344,"updated":"2014-04-05 17:06:52.000000000","message":"Just found there are a lot of unittest test with controller and webob.Request.blank directly. webob.Request.blank haven\u0027t chance add v2api attributes....","commit_id":"80c94480caa4335ca2354a52346703989ece7735"}]}
