)]}'
{"glance/store/scrubber.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"74bca86222279407bb44cb8f12e0dd3dbc032939","unresolved":false,"context_lines":[{"line_number":134,"context_line":"    def _delete(self, id, uri, now):"},{"line_number":135,"context_line":"        file_path \u003d os.path.join(self.datadir, str(id))"},{"line_number":136,"context_line":"        if CONF.metadata_encryption_key is not None:"},{"line_number":137,"context_line":"            uri \u003d crypt.urlsafe_decrypt(CONF.metadata_encryption_key, uri)"},{"line_number":138,"context_line":"        try:"},{"line_number":139,"context_line":"            LOG.debug(_(\"Deleting %(id)s\") % {\u0027id\u0027: id})"},{"line_number":140,"context_line":"            # Here we create a request context with credentials to support"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAO3%2F%2F8GA%3D","side":"PARENT","line":137,"updated":"2013-05-16 17:14:30.000000000","message":"It\u0027s a little more simple if you just save the original \u0027uri\u0027 that was passed into this method before it was decrypted... \n\nIe:\n\nif \u003cencryption_key\u003e:\n   del_uri \u003d decrypt()\nelse:\n   del_uri \u003d uri","commit_id":"00da1750d75543a6dcd43701b3f0b4879d6f3101"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"74bca86222279407bb44cb8f12e0dd3dbc032939","unresolved":false,"context_lines":[{"line_number":142,"context_line":"            ctx \u003d context.RequestContext(auth_tok\u003dself.registry.auth_tok,"},{"line_number":143,"context_line":"                                         user\u003dself.admin_user,"},{"line_number":144,"context_line":"                                         tenant\u003dself.admin_tenant)"},{"line_number":145,"context_line":"            store.delete_from_backend(ctx, uri)"},{"line_number":146,"context_line":"        except store.UnsupportedBackend:"},{"line_number":147,"context_line":"            msg \u003d _(\"Failed to delete image from store (%(id)s).\")"},{"line_number":148,"context_line":"            LOG.error(msg % {\u0027id\u0027: id})"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAO3%2F%2F8F8%3D","side":"PARENT","line":145,"updated":"2013-05-16 17:14:30.000000000","message":"use \u0027del_uri\u0027 here.","commit_id":"00da1750d75543a6dcd43701b3f0b4879d6f3101"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"74bca86222279407bb44cb8f12e0dd3dbc032939","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            LOG.error(msg % {\u0027id\u0027: id})"},{"line_number":156,"context_line":"            if CONF.metadata_encryption_key is not None:"},{"line_number":157,"context_line":"                uri \u003d crypt.urlsafe_encrypt(CONF.metadata_encryption_key,"},{"line_number":158,"context_line":"                                            uri, 64)"},{"line_number":159,"context_line":"            write_queue_file(file_path, uri, now)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        self.registry.update_image(id, {\u0027status\u0027: \u0027deleted\u0027})"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAO3%2F%2F8F0%3D","line":158,"updated":"2013-05-16 17:14:30.000000000","message":"And then these changes are not necessary with the above suggestion.","commit_id":"7000492f825b450df6ca1ab79b0710b618cceb75"},{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"63d55a43d29caabce37310e35f9362c4668890f8","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        except exception.NotFound:"},{"line_number":153,"context_line":"            msg \u003d _(\"Image not found in store (%(id)s).\")"},{"line_number":154,"context_line":"            LOG.error(msg % {\u0027id\u0027: id})"},{"line_number":155,"context_line":"            write_queue_file(file_path, del_uri, now)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        self.registry.update_image(id, {\u0027status\u0027: \u0027deleted\u0027})"},{"line_number":158,"context_line":"        utils.safe_remove(file_path)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPH%2F%2F9Ns%3D","line":155,"updated":"2013-05-17 19:58:04.000000000","message":"This doesn\u0027t look right.  From my read the same thing will happen here.  I think you want to pass uri (pre-decryption) to write_queue_file.","commit_id":"9130ea731503a773ae372bfad998e7a22b8d9af5"},{"author":{"_account_id":6662,"name":"James Li","email":"yueli.m@gmail.com","username":"james-li-3"},"change_message_id":"e94a8301bf989a5e863e074a9412b8beba8191da","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        if self.cleanup:"},{"line_number":132,"context_line":"            self._cleanup(pool)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def _delete(self, id, uri, now):"},{"line_number":135,"context_line":"        file_path \u003d os.path.join(self.datadir, str(id))"},{"line_number":136,"context_line":"        if CONF.metadata_encryption_key is not None:"},{"line_number":137,"context_line":"            del_uri \u003d crypt.urlsafe_decrypt(CONF.metadata_encryption_key, uri)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPX%2F%2F7bk%3D","line":134,"updated":"2013-06-05 20:41:23.000000000","message":"The \u0027uri\u0027 itself can be unencrypted if this method is called from self._cleanup() as RegistryClient.get_images_detailed() returns unencrypted metadata.","commit_id":"33e94b8ca2633e61ca5addc390459d46d11e3b59"}],"glance/tests/functional/test_scrubber.py":[{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"e02c44afedd943df5cd2966fe6d3b63801b9aecb","unresolved":false,"context_lines":[{"line_number":354,"context_line":"        \"\"\""},{"line_number":355,"context_line":"        test that files written to scrubber_data_dir are always"},{"line_number":356,"context_line":"        encrypted, even if a NotFound exception is hit when the "},{"line_number":357,"context_line":"        scrubber is run. "},{"line_number":358,"context_line":"        \"\"\""},{"line_number":359,"context_line":"        config_path \u003d os.environ.get(\u0027GLANCE_TEST_SWIFT_CONF\u0027)"},{"line_number":360,"context_line":"        if not config_path:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPH%2F%2F0So%3D","line":357,"updated":"2013-05-22 12:06:22.000000000","message":"I know its WIP, but a couple stray whitespaces here","commit_id":"ff9426838306a75093d271304b6d788d0b73bb6d"}]}
