)]}'
{"swift/cli/info.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"6479ad5175fc0a4cc0d72fbc3de09fe435288c1c","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        else:"},{"line_number":222,"context_line":"            path \u003d \u0027/%s\u0027 % account"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        print(\u0027Path: %s\u0027 % urllib.parse.quote(path))"},{"line_number":225,"context_line":"        print(\u0027  Account: %s\u0027 % account)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        if db_type \u003d\u003d \u0027container\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_5cdb0fe9","line":224,"updated":"2019-12-23 21:53:28.000000000","message":"oh shoot, I wonder if this drive-by will blow up some test","commit_id":"342f918b6e00c3f835dd0a286ef2ea897fc2ac14"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"a016109a24201230936d11a45f4146cd1b61029d","unresolved":false,"context_lines":[{"line_number":359,"context_line":"            raise ValueError(\u0027Path is invalid for object %r\u0027 % path)"},{"line_number":360,"context_line":"        else:"},{"line_number":361,"context_line":"            obj_hash \u003d hash_path(account, container, obj)"},{"line_number":362,"context_line":"        print(\u0027Path: %s\u0027 % path)"},{"line_number":363,"context_line":"        print(\u0027  Account: %s\u0027 % account)"},{"line_number":364,"context_line":"        print(\u0027  Container: %s\u0027 % container)"},{"line_number":365,"context_line":"        print(\u0027  Object: %s\u0027 % obj)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_dce85f7c","line":362,"range":{"start_line":362,"start_character":27,"end_line":362,"end_character":31},"updated":"2019-12-23 22:00:54.000000000","message":"Off-topic: we probably ought to quote this, too, yeah?","commit_id":"342f918b6e00c3f835dd0a286ef2ea897fc2ac14"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"05c51c34d3ad2bff1871599e483e560dacacba3e","unresolved":false,"context_lines":[{"line_number":359,"context_line":"            raise ValueError(\u0027Path is invalid for object %r\u0027 % path)"},{"line_number":360,"context_line":"        else:"},{"line_number":361,"context_line":"            obj_hash \u003d hash_path(account, container, obj)"},{"line_number":362,"context_line":"        print(\u0027Path: %s\u0027 % path)"},{"line_number":363,"context_line":"        print(\u0027  Account: %s\u0027 % account)"},{"line_number":364,"context_line":"        print(\u0027  Container: %s\u0027 % container)"},{"line_number":365,"context_line":"        print(\u0027  Object: %s\u0027 % obj)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_6aa2a899","line":362,"range":{"start_line":362,"start_character":27,"end_line":362,"end_character":31},"in_reply_to":"3fa7e38b_dce85f7c","updated":"2019-12-30 18:55:32.000000000","message":"Yes, i\u0027ll spin all that out to another patch\n\nhttps://bugs.launchpad.net/swift/+bug/1857918","commit_id":"342f918b6e00c3f835dd0a286ef2ea897fc2ac14"}],"swift/common/request_helpers.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"6479ad5175fc0a4cc0d72fbc3de09fe435288c1c","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    if not container:"},{"line_number":122,"context_line":"        raise ValueError(\u0027Container is required\u0027)"},{"line_number":123,"context_line":"    validate_internal_container(account, container)"},{"line_number":124,"context_line":"    if obj and not account.startswith(\u0027.\u0027):"},{"line_number":125,"context_line":"        _validate_internal_name(obj, \u0027object\u0027)"},{"line_number":126,"context_line":"        if container.startswith(RESERVED) and not obj.startswith(RESERVED):"},{"line_number":127,"context_line":"            raise HTTPBadRequest(body\u003d\u0027Invalid user-namespace object \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_3c4bb3b1","line":124,"updated":"2019-12-23 21:53:28.000000000","message":"this is pretty blunt - but in reality I don\u0027t think any of the below checks can be applied to system accounts\n\nreconciler has usernamespace containers with objects like:\n\n\u003cpolicy-index\u003e:/\u003caccount\u003e/\u003cmaybe-reserved-container\u003e/\u003cmaybe-reserved-object\u003e\n\nit seems counter productive to force names like that to start with a null character before the policy index","commit_id":"342f918b6e00c3f835dd0a286ef2ea897fc2ac14"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"a016109a24201230936d11a45f4146cd1b61029d","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    if not container:"},{"line_number":122,"context_line":"        raise ValueError(\u0027Container is required\u0027)"},{"line_number":123,"context_line":"    validate_internal_container(account, container)"},{"line_number":124,"context_line":"    if obj and not account.startswith(\u0027.\u0027):"},{"line_number":125,"context_line":"        _validate_internal_name(obj, \u0027object\u0027)"},{"line_number":126,"context_line":"        if container.startswith(RESERVED) and not obj.startswith(RESERVED):"},{"line_number":127,"context_line":"            raise HTTPBadRequest(body\u003d\u0027Invalid user-namespace object \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_1c94b7e6","line":124,"in_reply_to":"3fa7e38b_3c4bb3b1","updated":"2019-12-23 22:00:54.000000000","message":"I kinda wish we had access to a config here, so we could look at auto_create_account_prefix :-/\n\nOh well.","commit_id":"342f918b6e00c3f835dd0a286ef2ea897fc2ac14"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"d14a7f71d699a8b2733be5414859fb4cd5340953","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    if not container:"},{"line_number":122,"context_line":"        raise ValueError(\u0027Container is required\u0027)"},{"line_number":123,"context_line":"    validate_internal_container(account, container)"},{"line_number":124,"context_line":"    if obj and not account.startswith(\u0027.\u0027):"},{"line_number":125,"context_line":"        _validate_internal_name(obj, \u0027object\u0027)"},{"line_number":126,"context_line":"        if container.startswith(RESERVED) and not obj.startswith(RESERVED):"},{"line_number":127,"context_line":"            raise HTTPBadRequest(body\u003d\u0027Invalid user-namespace object \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_271b701c","line":124,"range":{"start_line":124,"start_character":38,"end_line":124,"end_character":41},"updated":"2020-01-04 00:43:02.000000000","message":"Use constraints!\n\nWait. Dammit.\n\nif obj and not (account \u003d\u003d MISPLACED_OBJECTS_ACCOUNT or\n                account.startswith(AUTO_CREATE_ACCOUNT_PREFIX)):\n\n:barf:","commit_id":"b4061c0379b1ac2d44658e89a7f3621523431b13"}],"test/probe/brain.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"6479ad5175fc0a4cc0d72fbc3de09fe435288c1c","unresolved":false,"context_lines":[{"line_number":312,"context_line":"                 server_type\u003d\u0027container\u0027, policy\u003dNone):"},{"line_number":313,"context_line":"        self.client \u003d InternalBrainClient(conf)"},{"line_number":314,"context_line":"        self._setup(self.client.account, container_name, object_name,"},{"line_number":315,"context_line":"                    server_type, policy)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"parser \u003d OptionParser(\u0027%prog [options] \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_1cc6f716","line":315,"updated":"2019-12-23 21:53:28.000000000","message":"I\u0027m pretty happy with how \"brains have a client\" worked out!","commit_id":"342f918b6e00c3f835dd0a286ef2ea897fc2ac14"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"69200947bde7cce23fa1936b5612e43742ab3e73","unresolved":false,"context_lines":[{"line_number":189,"context_line":"    def __init__(self, url, token):"},{"line_number":190,"context_line":"        self.url \u003d url"},{"line_number":191,"context_line":"        self.token \u003d token"},{"line_number":192,"context_line":"        self.account \u003d utils.split_path(urlparse(url).path, 2, 2)[1]"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def put_container(self, container_name, headers):"},{"line_number":195,"context_line":"        return client.put_container(self.url, self.token, container_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_bf4444a0","line":192,"updated":"2020-01-05 20:51:15.000000000","message":"I kinda wonder if this should get a client.Connection, so we get retries and pipelined requests and... meh. We\u0027re no worse off than we already are, certainly.","commit_id":"b1178b4a967ab621e66356a9e7bca08de5be5e2a"}],"test/probe/test_container_merge_policy_index.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"6479ad5175fc0a4cc0d72fbc3de09fe435288c1c","unresolved":false,"context_lines":[{"line_number":578,"context_line":""},{"line_number":579,"context_line":"    def test_reconcile_manifest(self):"},{"line_number":580,"context_line":"        raise unittest.SkipTest("},{"line_number":581,"context_line":"            \u0027SLO does not allow parts in the reserved namespace\u0027)"},{"line_number":582,"context_line":""},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"if __name__ \u003d\u003d \"__main__\":"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_1cefd786","line":581,"updated":"2019-12-23 21:53:28.000000000","message":"I really couldn\u0027t come up with a good way to test this in the reserved namespace - I guess I should spin it out to a separate test case","commit_id":"342f918b6e00c3f835dd0a286ef2ea897fc2ac14"}],"test/unit/common/test_request_helpers.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"d14a7f71d699a8b2733be5414859fb4cd5340953","unresolved":false,"context_lines":[{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def test_invalid_names_in_system_accounts(self):"},{"line_number":284,"context_line":"        self.assertIsNone(rh.validate_internal_obj("},{"line_number":285,"context_line":"            \u0027.system_account\u0027, \u0027foo\u0027, \u0027crazy%stown\u0027 % rh.RESERVED))"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    def test_invalid_reserved_names(self):"},{"line_number":288,"context_line":"        with self.assertRaises(HTTPException) as raised:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_87cfc489","line":285,"range":{"start_line":285,"start_character":13,"end_line":285,"end_character":14},"updated":"2020-01-04 00:43:02.000000000","message":"Use constraints?","commit_id":"b4061c0379b1ac2d44658e89a7f3621523431b13"}]}
