)]}'
{"etc/proxy-server.conf-sample":[{"author":{"_account_id":8542,"name":"Prashanth Pai","email":"ppai@redhat.com","username":"pai"},"change_message_id":"188a7c3d79a985b3f2c80012c6d0f54c2c55ae12","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# to /info.  You can withhold subsections by separating the dict level with a"},{"line_number":18,"context_line":"# \".\".  The following would cause the sections \u0027container_quotas\u0027 and \u0027tempurl\u0027"},{"line_number":19,"context_line":"# to not be listed, and the key max_failed_deletes would be removed from"},{"line_number":20,"context_line":"# bulk_delete.  Default is to list all registered features except"},{"line_number":21,"context_line":"# swift.valid_api_versions to be listed via HTTP GET /info."},{"line_number":22,"context_line":"# disallowed_sections \u003d swift.valid_api_versions, container_quotas, tempurl"},{"line_number":23,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":10,"id":"9aa53dc9_153809ee","line":20,"updated":"2015-04-10 12:47:55.000000000","message":"nit: needs rewording.\n\n   Default value is \u0027swift.valid_api_versions\u0027 which allows all registered\n   features to be listed via HTTP GET /info except swift.valid_api_versions\n   information","commit_id":"418a6f5f285663200c6126e945d54449e2ee85d4"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"7c97d710d04f223b260c36db38393741b8bf9ea8","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# to /info.  You can withhold subsections by separating the dict level with a"},{"line_number":18,"context_line":"# \".\".  The following would cause the sections \u0027container_quotas\u0027 and \u0027tempurl\u0027"},{"line_number":19,"context_line":"# to not be listed, and the key max_failed_deletes would be removed from"},{"line_number":20,"context_line":"# bulk_delete.  Default is to list all registered features except"},{"line_number":21,"context_line":"# swift.valid_api_versions to be listed via HTTP GET /info."},{"line_number":22,"context_line":"# disallowed_sections \u003d swift.valid_api_versions, container_quotas, tempurl"},{"line_number":23,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":10,"id":"9aa53dc9_9088a7c6","line":20,"in_reply_to":"9aa53dc9_153809ee","updated":"2015-04-10 13:06:21.000000000","message":"Done","commit_id":"418a6f5f285663200c6126e945d54449e2ee85d4"}],"etc/swift.conf-sample":[{"author":{"_account_id":13161,"name":"Kamil Rykowski","email":"kamil.rykowski@gmail.com","username":"krykowski"},"change_message_id":"ba079b2a85a8ef0405eac258f9eed98e9a0cd84f","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"# By default all REST API calls should use \"v1\" or \"v1.0\" as the version string,"},{"line_number":122,"context_line":"# for example \"/v1/account\". This can be manually overriden to make this"},{"line_number":123,"context_line":"# backward-compatible, in case a different version string has been used before."},{"line_number":124,"context_line":"# Use a comma-separated list in case of multiple allowed versions, for example"},{"line_number":125,"context_line":"# valid_api_versions \u003d \"v0,v1,v2\""}],"source_content_type":"application/octet-stream","patch_set":7,"id":"da9b358b_fb271810","line":122,"updated":"2015-04-01 09:48:11.000000000","message":"/s/overriden/overridden","commit_id":"cee4792157b50040c1bf61043b52dcf6c4668006"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"49027e65b8d6415932cd82637eb9f693f05e630a","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"# By default all REST API calls should use \"v1\" or \"v1.0\" as the version string,"},{"line_number":122,"context_line":"# for example \"/v1/account\". This can be manually overriden to make this"},{"line_number":123,"context_line":"# backward-compatible, in case a different version string has been used before."},{"line_number":124,"context_line":"# Use a comma-separated list in case of multiple allowed versions, for example"},{"line_number":125,"context_line":"# valid_api_versions \u003d \"v0,v1,v2\""}],"source_content_type":"application/octet-stream","patch_set":7,"id":"baa041b7_63acfced","line":122,"in_reply_to":"da9b358b_fb271810","updated":"2015-04-01 14:21:39.000000000","message":"Done","commit_id":"cee4792157b50040c1bf61043b52dcf6c4668006"},{"author":{"_account_id":13161,"name":"Kamil Rykowski","email":"kamil.rykowski@gmail.com","username":"krykowski"},"change_message_id":"ba079b2a85a8ef0405eac258f9eed98e9a0cd84f","unresolved":false,"context_lines":[{"line_number":123,"context_line":"# backward-compatible, in case a different version string has been used before."},{"line_number":124,"context_line":"# Use a comma-separated list in case of multiple allowed versions, for example"},{"line_number":125,"context_line":"# valid_api_versions \u003d \"v0,v1,v2\""},{"line_number":126,"context_line":"# This is only enforced for account, container or object requests."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"# valid_api_versions \u003d \"v1,v1.0\""}],"source_content_type":"application/octet-stream","patch_set":7,"id":"da9b358b_167293ad","line":126,"updated":"2015-04-01 09:48:11.000000000","message":"s/or/and? (*not sure*)","commit_id":"cee4792157b50040c1bf61043b52dcf6c4668006"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"49027e65b8d6415932cd82637eb9f693f05e630a","unresolved":false,"context_lines":[{"line_number":123,"context_line":"# backward-compatible, in case a different version string has been used before."},{"line_number":124,"context_line":"# Use a comma-separated list in case of multiple allowed versions, for example"},{"line_number":125,"context_line":"# valid_api_versions \u003d \"v0,v1,v2\""},{"line_number":126,"context_line":"# This is only enforced for account, container or object requests."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"# valid_api_versions \u003d \"v1,v1.0\""}],"source_content_type":"application/octet-stream","patch_set":7,"id":"baa041b7_0382d052","line":126,"in_reply_to":"da9b358b_167293ad","updated":"2015-04-01 14:21:39.000000000","message":"Done","commit_id":"cee4792157b50040c1bf61043b52dcf6c4668006"},{"author":{"_account_id":8542,"name":"Prashanth Pai","email":"ppai@redhat.com","username":"pai"},"change_message_id":"188a7c3d79a985b3f2c80012c6d0f54c2c55ae12","unresolved":false,"context_lines":[{"line_number":123,"context_line":"# backward-compatible, in case a different version string has been used before."},{"line_number":124,"context_line":"# Use a comma-separated list in case of multiple allowed versions, for example"},{"line_number":125,"context_line":"# valid_api_versions \u003d \"v0,v1,v2\""},{"line_number":126,"context_line":"# This is only enforced for account, container and object requests."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"# valid_api_versions \u003d \"v1,v1.0\""}],"source_content_type":"application/octet-stream","patch_set":10,"id":"9aa53dc9_b03ccbc8","line":126,"updated":"2015-04-10 12:47:55.000000000","message":"An explicit comment here that this would not be exposed through /info is nice to have...like the last line you have in commit message","commit_id":"418a6f5f285663200c6126e945d54449e2ee85d4"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"7c97d710d04f223b260c36db38393741b8bf9ea8","unresolved":false,"context_lines":[{"line_number":123,"context_line":"# backward-compatible, in case a different version string has been used before."},{"line_number":124,"context_line":"# Use a comma-separated list in case of multiple allowed versions, for example"},{"line_number":125,"context_line":"# valid_api_versions \u003d \"v0,v1,v2\""},{"line_number":126,"context_line":"# This is only enforced for account, container and object requests."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"# valid_api_versions \u003d \"v1,v1.0\""}],"source_content_type":"application/octet-stream","patch_set":10,"id":"9aa53dc9_7091a3f0","line":126,"in_reply_to":"9aa53dc9_b03ccbc8","updated":"2015-04-10 13:06:21.000000000","message":"Done","commit_id":"418a6f5f285663200c6126e945d54449e2ee85d4"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"b3ef96c1a3e2069a40f8a9db480d0abf090c07d6","unresolved":false,"context_lines":[{"line_number":126,"context_line":"# This is only enforced for account, container and object requests. The allowed"},{"line_number":127,"context_line":"# api versions are by default excluded from /info."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"# valid_api_versions \u003d \"v1,v1.0\""}],"source_content_type":"application/octet-stream","patch_set":12,"id":"7aaa499b_4a7ea0af","line":129,"updated":"2015-04-11 12:14:56.000000000","message":"can\u0027t currently use quotes around the list, otherwise it always returns BadRequest.\nTo sucessfuly test I had to build the list without quotes:\n  [swift-constraints]\n  valid_api_versions \u003d v1,v2","commit_id":"bba31983a05d61bcd0c40053b8d4b4d0b3aa133e"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"5037dcbc51432b5adf710e5ead082c320d173c80","unresolved":false,"context_lines":[{"line_number":126,"context_line":"# This is only enforced for account, container and object requests. The allowed"},{"line_number":127,"context_line":"# api versions are by default excluded from /info."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"# valid_api_versions \u003d \"v1,v1.0\""}],"source_content_type":"application/octet-stream","patch_set":12,"id":"7aaa499b_cccacd4f","line":129,"in_reply_to":"7aaa499b_4a7ea0af","updated":"2015-04-11 14:41:15.000000000","message":"Good catch, fixed!","commit_id":"bba31983a05d61bcd0c40053b8d4b4d0b3aa133e"}],"swift/common/constraints.py":[{"author":{"_account_id":13161,"name":"Kamil Rykowski","email":"kamil.rykowski@gmail.com","username":"krykowski"},"change_message_id":"ba079b2a85a8ef0405eac258f9eed98e9a0cd84f","unresolved":false,"context_lines":[{"line_number":410,"context_line":"def valid_api_version(version):"},{"line_number":411,"context_line":"    \"\"\" Checks if the requested version is valid."},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"    Currently Swift only supports \"v1\". \"\"\""},{"line_number":414,"context_line":"    return version in VALID_API_VERSIONS"}],"source_content_type":"text/x-python","patch_set":7,"id":"da9b358b_3b45806f","line":413,"updated":"2015-04-01 09:48:11.000000000","message":"nit: Shouldn\u0027t it be put as\n\n\"\"\"\nChecks if the requested version is valid.\nCurrently Swift only supports \"v1\".\n\"\"\"\n\nto match docstring pattern from reload_constraints?","commit_id":"cee4792157b50040c1bf61043b52dcf6c4668006"},{"author":{"_account_id":8542,"name":"Prashanth Pai","email":"ppai@redhat.com","username":"pai"},"change_message_id":"188a7c3d79a985b3f2c80012c6d0f54c2c55ae12","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                break"},{"line_number":83,"context_line":"            else:"},{"line_number":84,"context_line":"                try:"},{"line_number":85,"context_line":"                    value \u003d int(value)"},{"line_number":86,"context_line":"                except ValueError:"},{"line_number":87,"context_line":"                    value \u003d utils.list_from_csv(value)"},{"line_number":88,"context_line":"                OVERRIDE_CONSTRAINTS[name] \u003d value"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa53dc9_50b9ff13","line":85,"updated":"2015-04-10 12:47:55.000000000","message":"nit: probably i\u0027m just being very paranoid here, may not even be a valid use case.. what would happen if valid_api_versions is set to 1234 (integer) in swift.conf","commit_id":"418a6f5f285663200c6126e945d54449e2ee85d4"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"7c97d710d04f223b260c36db38393741b8bf9ea8","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                break"},{"line_number":83,"context_line":"            else:"},{"line_number":84,"context_line":"                try:"},{"line_number":85,"context_line":"                    value \u003d int(value)"},{"line_number":86,"context_line":"                except ValueError:"},{"line_number":87,"context_line":"                    value \u003d utils.list_from_csv(value)"},{"line_number":88,"context_line":"                OVERRIDE_CONSTRAINTS[name] \u003d value"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa53dc9_cb2202a3","line":85,"in_reply_to":"9aa53dc9_50b9ff13","updated":"2015-04-10 13:06:21.000000000","message":"Good catch! If it is an integer only the proxy always returns a 500. It is ok to use an int in the comma-separated list though, added this to the tests also.\n\nI\u0027m going to modify valid_api_version(version) below to make it int-safe.","commit_id":"418a6f5f285663200c6126e945d54449e2ee85d4"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"05e7321e5c00a824cece5e147f4ad79787f0f90d","unresolved":false,"context_lines":[{"line_number":410,"context_line":"def valid_api_version(version):"},{"line_number":411,"context_line":"    \"\"\" Checks if the requested version is valid."},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"    Currently Swift only supports \"v1\". \"\"\""},{"line_number":414,"context_line":"    global VALID_API_VERSIONS"},{"line_number":415,"context_line":"    if not isinstance(VALID_API_VERSIONS, list):"},{"line_number":416,"context_line":"        VALID_API_VERSIONS \u003d [str(VALID_API_VERSIONS)]"}],"source_content_type":"text/x-python","patch_set":12,"id":"7aaa499b_920cec43","line":413,"updated":"2015-04-10 18:23:40.000000000","message":"nit: needs \"v1.0\" in there","commit_id":"bba31983a05d61bcd0c40053b8d4b4d0b3aa133e"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"5037dcbc51432b5adf710e5ead082c320d173c80","unresolved":false,"context_lines":[{"line_number":410,"context_line":"def valid_api_version(version):"},{"line_number":411,"context_line":"    \"\"\" Checks if the requested version is valid."},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"    Currently Swift only supports \"v1\". \"\"\""},{"line_number":414,"context_line":"    global VALID_API_VERSIONS"},{"line_number":415,"context_line":"    if not isinstance(VALID_API_VERSIONS, list):"},{"line_number":416,"context_line":"        VALID_API_VERSIONS \u003d [str(VALID_API_VERSIONS)]"}],"source_content_type":"text/x-python","patch_set":12,"id":"7aaa499b_acc78144","line":413,"in_reply_to":"7aaa499b_920cec43","updated":"2015-04-11 14:41:15.000000000","message":"Done","commit_id":"bba31983a05d61bcd0c40053b8d4b4d0b3aa133e"}],"swift/proxy/server.py":[{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"a2694116517ce48e69aa5816b8ae2f0717628cda","unresolved":false,"context_lines":[{"line_number":325,"context_line":"                if isinstance(p, unicode):"},{"line_number":326,"context_line":"                    p \u003d p.encode(\u0027utf-8\u0027)"},{"line_number":327,"context_line":"            except APIVersionError:"},{"line_number":328,"context_line":"                self.logger.increment(\u0027errors\u0027)"},{"line_number":329,"context_line":"                return HTTPBadRequest(request\u003dreq)"},{"line_number":330,"context_line":"            except ValueError:"},{"line_number":331,"context_line":"                self.logger.increment(\u0027errors\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"baa041b7_1df3ebd7","line":328,"updated":"2015-04-03 20:04:17.000000000","message":"I applaud you for remembering the StatsD metrics.","commit_id":"9735f6e3ba8bbfb04190d32291cbbeb184b1d3a9"}],"test/unit/proxy/test_server.py":[{"author":{"_account_id":13161,"name":"Kamil Rykowski","email":"kamil.rykowski@gmail.com","username":"krykowski"},"change_message_id":"ba079b2a85a8ef0405eac258f9eed98e9a0cd84f","unresolved":false,"context_lines":[{"line_number":868,"context_line":"                                       container_ring\u003dFakeRing())"},{"line_number":869,"context_line":""},{"line_number":870,"context_line":"        # The version string is only checked for account, container and object"},{"line_number":871,"context_line":"        # requests; the raised ValueError returns a 404 to the client"},{"line_number":872,"context_line":"        for path in ["},{"line_number":873,"context_line":"                \u0027/v2/a\u0027,"},{"line_number":874,"context_line":"                \u0027/v2/a/c\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"da9b358b_968c6380","line":871,"updated":"2015-04-01 09:48:11.000000000","message":"Did you mean APIVersionError instead of ValueError?","commit_id":"cee4792157b50040c1bf61043b52dcf6c4668006"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"49027e65b8d6415932cd82637eb9f693f05e630a","unresolved":false,"context_lines":[{"line_number":868,"context_line":"                                       container_ring\u003dFakeRing())"},{"line_number":869,"context_line":""},{"line_number":870,"context_line":"        # The version string is only checked for account, container and object"},{"line_number":871,"context_line":"        # requests; the raised ValueError returns a 404 to the client"},{"line_number":872,"context_line":"        for path in ["},{"line_number":873,"context_line":"                \u0027/v2/a\u0027,"},{"line_number":874,"context_line":"                \u0027/v2/a/c\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa041b7_83ca604e","line":871,"in_reply_to":"da9b358b_968c6380","updated":"2015-04-01 14:21:39.000000000","message":"Done","commit_id":"cee4792157b50040c1bf61043b52dcf6c4668006"},{"author":{"_account_id":13161,"name":"Kamil Rykowski","email":"kamil.rykowski@gmail.com","username":"krykowski"},"change_message_id":"ba079b2a85a8ef0405eac258f9eed98e9a0cd84f","unresolved":false,"context_lines":[{"line_number":872,"context_line":"        for path in ["},{"line_number":873,"context_line":"                \u0027/v2/a\u0027,"},{"line_number":874,"context_line":"                \u0027/v2/a/c\u0027,"},{"line_number":875,"context_line":"                \u0027/v2/a/o\u0027]:"},{"line_number":876,"context_line":"            self.assertRaises(APIVersionError, app.get_controller, path)"},{"line_number":877,"context_line":""},{"line_number":878,"context_line":"        # Default valid API versions are ok"}],"source_content_type":"text/x-python","patch_set":7,"id":"da9b358b_56093bdc","line":875,"updated":"2015-04-01 09:48:11.000000000","message":"nit: How about defining two list variables valid_paths \u0026 invalid_paths which will store a list of paths to check?","commit_id":"cee4792157b50040c1bf61043b52dcf6c4668006"},{"author":{"_account_id":13161,"name":"Kamil Rykowski","email":"kamil.rykowski@gmail.com","username":"krykowski"},"change_message_id":"ba079b2a85a8ef0405eac258f9eed98e9a0cd84f","unresolved":false,"context_lines":[{"line_number":882,"context_line":"                \u0027/v1/a/c\u0027,"},{"line_number":883,"context_line":"                \u0027/v1/a/o\u0027]:"},{"line_number":884,"context_line":"            controller, path_parts \u003d app.get_controller(path)"},{"line_number":885,"context_line":"            self.assertTrue(controller is not None)"},{"line_number":886,"context_line":""},{"line_number":887,"context_line":"        # Ensure settings valid API version constraint works"},{"line_number":888,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"da9b358b_3627d765","line":885,"updated":"2015-04-01 09:48:11.000000000","message":"It could be replaced with self.assertIsNotNone(controller)","commit_id":"cee4792157b50040c1bf61043b52dcf6c4668006"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"49027e65b8d6415932cd82637eb9f693f05e630a","unresolved":false,"context_lines":[{"line_number":882,"context_line":"                \u0027/v1/a/c\u0027,"},{"line_number":883,"context_line":"                \u0027/v1/a/o\u0027]:"},{"line_number":884,"context_line":"            controller, path_parts \u003d app.get_controller(path)"},{"line_number":885,"context_line":"            self.assertTrue(controller is not None)"},{"line_number":886,"context_line":""},{"line_number":887,"context_line":"        # Ensure settings valid API version constraint works"},{"line_number":888,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa041b7_8395c041","line":885,"in_reply_to":"da9b358b_3627d765","updated":"2015-04-01 14:21:39.000000000","message":"Unfortunately not yet - it\u0027s not supported in Python 2.6","commit_id":"cee4792157b50040c1bf61043b52dcf6c4668006"},{"author":{"_account_id":13161,"name":"Kamil Rykowski","email":"kamil.rykowski@gmail.com","username":"krykowski"},"change_message_id":"ba079b2a85a8ef0405eac258f9eed98e9a0cd84f","unresolved":false,"context_lines":[{"line_number":895,"context_line":""},{"line_number":896,"context_line":"                for path in ["},{"line_number":897,"context_line":"                        \u0027/v0/a\u0027,"},{"line_number":898,"context_line":"                        \u0027/v2/a\u0027]:"},{"line_number":899,"context_line":"                    controller, path_parts \u003d app.get_controller(path)"},{"line_number":900,"context_line":"                    self.assertTrue(controller is not None)"},{"line_number":901,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da9b358b_d6e30b04","line":898,"updated":"2015-04-01 09:48:11.000000000","message":"Why splitting this loop declaration into multiple lines?","commit_id":"cee4792157b50040c1bf61043b52dcf6c4668006"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"49027e65b8d6415932cd82637eb9f693f05e630a","unresolved":false,"context_lines":[{"line_number":895,"context_line":""},{"line_number":896,"context_line":"                for path in ["},{"line_number":897,"context_line":"                        \u0027/v0/a\u0027,"},{"line_number":898,"context_line":"                        \u0027/v2/a\u0027]:"},{"line_number":899,"context_line":"                    controller, path_parts \u003d app.get_controller(path)"},{"line_number":900,"context_line":"                    self.assertTrue(controller is not None)"},{"line_number":901,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"baa041b7_837ca021","line":898,"in_reply_to":"da9b358b_d6e30b04","updated":"2015-04-01 14:21:39.000000000","message":"Readability","commit_id":"cee4792157b50040c1bf61043b52dcf6c4668006"},{"author":{"_account_id":13161,"name":"Kamil Rykowski","email":"kamil.rykowski@gmail.com","username":"krykowski"},"change_message_id":"ba079b2a85a8ef0405eac258f9eed98e9a0cd84f","unresolved":false,"context_lines":[{"line_number":897,"context_line":"                        \u0027/v0/a\u0027,"},{"line_number":898,"context_line":"                        \u0027/v2/a\u0027]:"},{"line_number":899,"context_line":"                    controller, path_parts \u003d app.get_controller(path)"},{"line_number":900,"context_line":"                    self.assertTrue(controller is not None)"},{"line_number":901,"context_line":""},{"line_number":902,"context_line":"                # In this case v1 is invalid"},{"line_number":903,"context_line":"                self.assertRaises(APIVersionError, app.get_controller, \u0027/v1/a\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da9b358b_56d7fb22","line":900,"updated":"2015-04-01 09:48:11.000000000","message":"ditto","commit_id":"cee4792157b50040c1bf61043b52dcf6c4668006"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"20de27441a4a6fc590c0c54699cc896e6ee2ead7","unresolved":false,"context_lines":[{"line_number":872,"context_line":"        for path in ["},{"line_number":873,"context_line":"                \u0027/v2/a\u0027,"},{"line_number":874,"context_line":"                \u0027/v2/a/c\u0027,"},{"line_number":875,"context_line":"                \u0027/v2/a/o\u0027]:"},{"line_number":876,"context_line":"            self.assertRaises(APIVersionError, app.get_controller, path)"},{"line_number":877,"context_line":""},{"line_number":878,"context_line":"        # Default valid API versions are ok"}],"source_content_type":"text/x-python","patch_set":8,"id":"9aa53dc9_06b7cef5","line":875,"updated":"2015-04-10 06:38:37.000000000","message":"Seeing as your testing that the version string is checked on account, container and object requests, i think your last path is suppose to be:\n\n  \u0027/v2/a/c/o\u0027","commit_id":"9735f6e3ba8bbfb04190d32291cbbeb184b1d3a9"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"20de27441a4a6fc590c0c54699cc896e6ee2ead7","unresolved":false,"context_lines":[{"line_number":880,"context_line":"                \u0027/v1/a\u0027,"},{"line_number":881,"context_line":"                \u0027/v1.0/a\u0027,"},{"line_number":882,"context_line":"                \u0027/v1/a/c\u0027,"},{"line_number":883,"context_line":"                \u0027/v1/a/o\u0027]:"},{"line_number":884,"context_line":"            controller, path_parts \u003d app.get_controller(path)"},{"line_number":885,"context_line":"            self.assertTrue(controller is not None)"},{"line_number":886,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9aa53dc9_c6cd6686","line":883,"updated":"2015-04-10 06:38:37.000000000","message":"and above (someone copy and pasted)","commit_id":"9735f6e3ba8bbfb04190d32291cbbeb184b1d3a9"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"773c8df068fb9dd5deb07303b787e1a816ee886e","unresolved":false,"context_lines":[{"line_number":843,"context_line":""},{"line_number":844,"context_line":"        self.assertTrue(app.expose_info)"},{"line_number":845,"context_line":"        self.assertTrue(isinstance(app.disallowed_sections, list))"},{"line_number":846,"context_line":"        self.assertEqual(1, len(app.disallowed_sections))"},{"line_number":847,"context_line":"        self.assertTrue(app.admin_key is None)"},{"line_number":848,"context_line":""},{"line_number":849,"context_line":"    def test_get_info_controller(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"7aaa499b_ad129b07","line":846,"updated":"2015-04-14 12:06:32.000000000","message":"nit: verify that the disallowed section is swift.valid_api_versions","commit_id":"eb7c8c2a853da363888243352d72aa3aa89938e6"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"773c8df068fb9dd5deb07303b787e1a816ee886e","unresolved":false,"context_lines":[{"line_number":880,"context_line":"                \u0027/v1/a\u0027,"},{"line_number":881,"context_line":"                \u0027/v1.0/a\u0027,"},{"line_number":882,"context_line":"                \u0027/v1/a/c\u0027,"},{"line_number":883,"context_line":"                \u0027/v1/a/c/o\u0027]:"},{"line_number":884,"context_line":"            controller, path_parts \u003d app.get_controller(path)"},{"line_number":885,"context_line":"            self.assertTrue(controller is not None)"},{"line_number":886,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7aaa499b_aaa28149","line":883,"updated":"2015-04-14 12:06:32.000000000","message":"nit : add paths for v1.0","commit_id":"eb7c8c2a853da363888243352d72aa3aa89938e6"}]}
