)]}'
{"glance/store/filesystem.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"37915267340c2a5ddab3163285fff055aff2e01b","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        if not os.path.exists(self.datadir):"},{"line_number":106,"context_line":"            msg \u003d _(\"Directory to write image files does not exist \""},{"line_number":107,"context_line":"                    \"(%(self.datadir)s). Creating.\") % locals()"},{"line_number":108,"context_line":"            logger.info(msg)"},{"line_number":109,"context_line":"            try:"},{"line_number":110,"context_line":"                os.makedirs(self.datadir)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAACH%2F%2F%2FlA%3D","line":107,"updated":"2011-08-19 19:09:27.000000000","message":"Can\u0027t get attributes from local object within format string.","commit_id":"ac4a599fb384a4ffa1af3153a27b561c346a6d7d"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"37915267340c2a5ddab3163285fff055aff2e01b","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            try:"},{"line_number":110,"context_line":"                os.makedirs(self.datadir)"},{"line_number":111,"context_line":"            except IOError:"},{"line_number":112,"context_line":"                reason \u003d _(\"Unable to create datadir: %(self.datadir)s\") % locals()"},{"line_number":113,"context_line":"                logger.error(reason)"},{"line_number":114,"context_line":"                raise exception.BadStoreConfiguration(store_name\u003d\"filesystem\","},{"line_number":115,"context_line":"                                                      reason\u003dreason)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAACH%2F%2F%2Fk8%3D","line":112,"updated":"2011-08-19 19:09:27.000000000","message":"Can\u0027t get attributes from local object within format string.","commit_id":"ac4a599fb384a4ffa1af3153a27b561c346a6d7d"}],"glance/store/location.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"37915267340c2a5ddab3163285fff055aff2e01b","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            return cls(self.store_specs)"},{"line_number":122,"context_line":"        except exception.NotFound:"},{"line_number":123,"context_line":"            msg \u003d _(\"Unable to find StoreLocation class in store \""},{"line_number":124,"context_line":"                    \"%(self.store_name)s\") % locals()"},{"line_number":125,"context_line":"            logger.error(msg)"},{"line_number":126,"context_line":"            return None"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAACH%2F%2F%2FlE%3D","line":124,"updated":"2011-08-19 19:09:27.000000000","message":"Can\u0027t get attributes from local object within format string.","commit_id":"ac4a599fb384a4ffa1af3153a27b561c346a6d7d"}],"glance/store/s3.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"37915267340c2a5ddab3163285fff055aff2e01b","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        msg \u003d _(\"Retrieved image object from S3 using \""},{"line_number":243,"context_line":"                \"(s3_host\u003d%(loc.s3serviceurl)s, \""},{"line_number":244,"context_line":"                \"access_key\u003d%(loc.accesskey)s, \""},{"line_number":245,"context_line":"                \"bucket\u003d%(loc.bucket)s, key\u003d%(loc.key)s)\") % locals()"},{"line_number":246,"context_line":"        logger.debug(msg)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        #if expected_size and (key.size !\u003d expected_size):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAACH%2F%2F%2FlI%3D","line":245,"updated":"2011-08-19 19:09:27.000000000","message":"Can\u0027t get attributes from local object within format string.","commit_id":"ac4a599fb384a4ffa1af3153a27b561c346a6d7d"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"37915267340c2a5ddab3163285fff055aff2e01b","unresolved":false,"context_lines":[{"line_number":320,"context_line":"        # writing the tempfile, so we don\u0027t need to call key.compute_md5()"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"        msg \u003d _(\"Writing request body file to temporary file \""},{"line_number":323,"context_line":"                \"for %(loc.get_uri())s\") % locals()"},{"line_number":324,"context_line":"        logger.debug(msg)"},{"line_number":325,"context_line":"        temp_file \u003d tempfile.NamedTemporaryFile()"},{"line_number":326,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAACH%2F%2F%2Flo%3D","line":323,"updated":"2011-08-19 19:09:27.000000000","message":"You can\u0027t call loc.get_uri() from within the format string. It tries to match the string \u0027loc.get_uri()\u0027 to a key in the dict returned from locals().","commit_id":"ac4a599fb384a4ffa1af3153a27b561c346a6d7d"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"37915267340c2a5ddab3163285fff055aff2e01b","unresolved":false,"context_lines":[{"line_number":332,"context_line":"            chunk \u003d image_file.read(self.CHUNKSIZE)"},{"line_number":333,"context_line":"        temp_file.flush()"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"        msg \u003d _(\"Uploading temporary file to S3 for %(log.get_uri())s\") % locals()"},{"line_number":336,"context_line":"        logger.debug(msg)"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"        # OK, now upload the data into the key"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAACH%2F%2F%2Flk%3D","line":335,"updated":"2011-08-19 19:09:27.000000000","message":"Can\u0027t use methods from within format strings.","commit_id":"ac4a599fb384a4ffa1af3153a27b561c346a6d7d"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"37915267340c2a5ddab3163285fff055aff2e01b","unresolved":false,"context_lines":[{"line_number":367,"context_line":""},{"line_number":368,"context_line":"        msg \u003d _(\"Deleting image object from S3 using \""},{"line_number":369,"context_line":"                \"(s3_host\u003d%(loc.s3serviceurl)s, access_key\u003d%(loc.accesskey)s, \""},{"line_number":370,"context_line":"                \"bucket\u003d%(loc.bucket)s, key\u003d%(loc.key)s)\") % locals()"},{"line_number":371,"context_line":"        logger.debug(msg)"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"        return key.delete()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAACH%2F%2F%2FlM%3D","line":370,"updated":"2011-08-19 19:09:27.000000000","message":"Can\u0027t get attributes from local object within format string.","commit_id":"ac4a599fb384a4ffa1af3153a27b561c346a6d7d"}],"glance/store/scrubber.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"36968769a7b994d6810fd514af2e8f5739064740","unresolved":false,"context_lines":[{"line_number":37,"context_line":"class Daemon(object):"},{"line_number":38,"context_line":"    def __init__(self, wakeup_time\u003d300, threads\u003d1000):"},{"line_number":39,"context_line":"        logger.info(_(\"Starting Daemon: wakeup_time\u003d%(wakeup_time)s \""},{"line_number":40,"context_line":"                      \"threads\u003d%(threads)s\"))"},{"line_number":41,"context_line":"        self.wakeup_time \u003d wakeup_time"},{"line_number":42,"context_line":"        self.event \u003d eventlet.event.Event()"},{"line_number":43,"context_line":"        self.pool \u003d eventlet.greenpool.GreenPool(threads)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACH%2F%2F%2Fng%3D","line":40,"updated":"2011-08-19 15:00:47.000000000","message":"Missing % locals()","commit_id":"2c2729f649e02af559746dd0261c8b7e9c1f2e0a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"36968769a7b994d6810fd514af2e8f5739064740","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        logger.debug(_(\"Runing application\"))"},{"line_number":57,"context_line":"        self.pool.spawn_n(application.run, self.pool, self.event)"},{"line_number":58,"context_line":"        eventlet.spawn_after(self.wakeup_time, self._run, application)"},{"line_number":59,"context_line":"        logger.debug(_(\"Next run scheduled in %(self.wakeup_time)s seconds\"))"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"class Scrubber(object):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACH%2F%2F%2Fnc%3D","line":59,"updated":"2011-08-19 15:00:47.000000000","message":"Missing % locals()","commit_id":"2c2729f649e02af559746dd0261c8b7e9c1f2e0a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"36968769a7b994d6810fd514af2e8f5739064740","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"class Scrubber(object):"},{"line_number":63,"context_line":"    def __init__(self, options):"},{"line_number":64,"context_line":"        logger.info(_(\"Initializing scrubber with options: %(options)s\"))"},{"line_number":65,"context_line":"        self.options \u003d options"},{"line_number":66,"context_line":"        scrub_time \u003d config.get_option(options, \u0027scrub_time\u0027, type\u003d\u0027int\u0027,"},{"line_number":67,"context_line":"                                       default\u003d0)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACH%2F%2F%2FnY%3D","line":64,"updated":"2011-08-19 15:00:47.000000000","message":"Missing % locals()","commit_id":"2c2729f649e02af559746dd0261c8b7e9c1f2e0a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"36968769a7b994d6810fd514af2e8f5739064740","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        self.options \u003d options"},{"line_number":66,"context_line":"        scrub_time \u003d config.get_option(options, \u0027scrub_time\u0027, type\u003d\u0027int\u0027,"},{"line_number":67,"context_line":"                                       default\u003d0)"},{"line_number":68,"context_line":"        logger.info(_(\"Scrub interval set to %(scrub_time)s seconds\"))"},{"line_number":69,"context_line":"        self.scrub_time \u003d datetime.timedelta(seconds\u003dscrub_time)"},{"line_number":70,"context_line":"        db_api.configure_db(options)"},{"line_number":71,"context_line":"        store.create_stores(options)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACH%2F%2F%2FnU%3D","line":68,"updated":"2011-08-19 15:00:47.000000000","message":"Missing % locals()","commit_id":"2c2729f649e02af559746dd0261c8b7e9c1f2e0a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"36968769a7b994d6810fd514af2e8f5739064740","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def run(self, pool, event\u003dNone):"},{"line_number":74,"context_line":"        delete_time \u003d datetime.datetime.utcnow() - self.scrub_time"},{"line_number":75,"context_line":"        logger.info(_(\"Getting images deleted before %(delete_time)s\"))"},{"line_number":76,"context_line":"        pending \u003d db_api.image_get_all_pending_delete(None, delete_time)"},{"line_number":77,"context_line":"        logger.info(_(\"Deleting %(len(pending))s images\"))"},{"line_number":78,"context_line":"        delete_work \u003d [(p[\u0027id\u0027], p[\u0027location\u0027]) for p in pending]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACH%2F%2F%2FnQ%3D","line":75,"updated":"2011-08-19 15:00:47.000000000","message":"Missing % locals()","commit_id":"2c2729f649e02af559746dd0261c8b7e9c1f2e0a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"36968769a7b994d6810fd514af2e8f5739064740","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        delete_time \u003d datetime.datetime.utcnow() - self.scrub_time"},{"line_number":75,"context_line":"        logger.info(_(\"Getting images deleted before %(delete_time)s\"))"},{"line_number":76,"context_line":"        pending \u003d db_api.image_get_all_pending_delete(None, delete_time)"},{"line_number":77,"context_line":"        logger.info(_(\"Deleting %(len(pending))s images\"))"},{"line_number":78,"context_line":"        delete_work \u003d [(p[\u0027id\u0027], p[\u0027location\u0027]) for p in pending]"},{"line_number":79,"context_line":"        pool.starmap(self._delete, delete_work)"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACH%2F%2F%2FnM%3D","line":77,"updated":"2011-08-19 15:00:47.000000000","message":"Missing % locals(). And I think we should avoid writing functions within format strings like that.","commit_id":"2c2729f649e02af559746dd0261c8b7e9c1f2e0a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"36968769a7b994d6810fd514af2e8f5739064740","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def _delete(self, id, location):"},{"line_number":82,"context_line":"        try:"},{"line_number":83,"context_line":"            logger.debug(_(\"Deleting %(location)s\"))"},{"line_number":84,"context_line":"            store.delete_from_backend(location)"},{"line_number":85,"context_line":"        except (store.UnsupportedBackend, exception.NotFound):"},{"line_number":86,"context_line":"            msg \u003d _(\"Failed to delete image from store (%(uri)s).\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACH%2F%2F%2FnI%3D","line":83,"updated":"2011-08-19 15:00:47.000000000","message":"Missing % locals()","commit_id":"2c2729f649e02af559746dd0261c8b7e9c1f2e0a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"36968769a7b994d6810fd514af2e8f5739064740","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            logger.debug(_(\"Deleting %(location)s\"))"},{"line_number":84,"context_line":"            store.delete_from_backend(location)"},{"line_number":85,"context_line":"        except (store.UnsupportedBackend, exception.NotFound):"},{"line_number":86,"context_line":"            msg \u003d _(\"Failed to delete image from store (%(uri)s).\")"},{"line_number":87,"context_line":"            logger.error(msg)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        ctx \u003d context.RequestContext(is_admin\u003dTrue, show_deleted\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACH%2F%2F%2FnE%3D","line":86,"updated":"2011-08-19 15:00:47.000000000","message":"Missing % locals()","commit_id":"2c2729f649e02af559746dd0261c8b7e9c1f2e0a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"37915267340c2a5ddab3163285fff055aff2e01b","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        logger.debug(_(\"Runing application\"))"},{"line_number":57,"context_line":"        self.pool.spawn_n(application.run, self.pool, self.event)"},{"line_number":58,"context_line":"        eventlet.spawn_after(self.wakeup_time, self._run, application)"},{"line_number":59,"context_line":"        logger.debug(_(\"Next run scheduled in %(self.wakeup_time)s seconds\") % locals())"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"class Scrubber(object):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAACH%2F%2F%2Fk4%3D","line":59,"updated":"2011-08-19 19:09:27.000000000","message":"Can\u0027t get attributes from local object within format string.","commit_id":"ac4a599fb384a4ffa1af3153a27b561c346a6d7d"}],"glance/store/swift.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"36968769a7b994d6810fd514af2e8f5739064740","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            # the account and user. Combine them into a single username of"},{"line_number":130,"context_line":"            # account:user"},{"line_number":131,"context_line":"            if len(cred_parts) \u003d\u003d 1:"},{"line_number":132,"context_line":"                reason \u003d _(\"Badly formed credentials \u0027%(creds)s\u0027 in Swift URI\")"},{"line_number":133,"context_line":"                raise exception.BadStoreUri(uri, reason)"},{"line_number":134,"context_line":"            elif len(cred_parts) \u003d\u003d 3:"},{"line_number":135,"context_line":"                user \u003d \u0027:\u0027.join(cred_parts[0:2])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACH%2F%2F%2Fns%3D","line":132,"updated":"2011-08-19 15:00:47.000000000","message":"Missing % locals()","commit_id":"2c2729f649e02af559746dd0261c8b7e9c1f2e0a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"36968769a7b994d6810fd514af2e8f5739064740","unresolved":false,"context_lines":[{"line_number":251,"context_line":"    def _option_get(self, param):"},{"line_number":252,"context_line":"        result \u003d self.options.get(param)"},{"line_number":253,"context_line":"        if not result:"},{"line_number":254,"context_line":"            reason \u003d _(\"Could not find %(param)s in configuration options.\")"},{"line_number":255,"context_line":"            logger.error(reason)"},{"line_number":256,"context_line":"            raise exception.BadStoreConfiguration(store_name\u003d\"swift\","},{"line_number":257,"context_line":"                                                  reason\u003dreason)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACH%2F%2F%2Fno%3D","line":254,"updated":"2011-08-19 15:00:47.000000000","message":"Missing % locals() at the end.","commit_id":"2c2729f649e02af559746dd0261c8b7e9c1f2e0a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"36968769a7b994d6810fd514af2e8f5739064740","unresolved":false,"context_lines":[{"line_number":320,"context_line":"        except swift_client.ClientException, e:"},{"line_number":321,"context_line":"            if e.http_status \u003d\u003d httplib.CONFLICT:"},{"line_number":322,"context_line":"                raise exception.Duplicate(_(\"Swift already has an image at \""},{"line_number":323,"context_line":"                                          \"location %(location.get_uri())s\"))"},{"line_number":324,"context_line":"            msg \u003d (_(\"Failed to add object to Swift.\\n\""},{"line_number":325,"context_line":"                   \"Got error from Swift: %(e)s\") % locals())"},{"line_number":326,"context_line":"            logger.error(msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACH%2F%2F%2Fnk%3D","line":323,"updated":"2011-08-19 15:00:47.000000000","message":"Missing % locals() here.","commit_id":"2c2729f649e02af559746dd0261c8b7e9c1f2e0a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"37915267340c2a5ddab3163285fff055aff2e01b","unresolved":false,"context_lines":[{"line_number":320,"context_line":"        except swift_client.ClientException, e:"},{"line_number":321,"context_line":"            if e.http_status \u003d\u003d httplib.CONFLICT:"},{"line_number":322,"context_line":"                raise exception.Duplicate(_(\"Swift already has an image at \""},{"line_number":323,"context_line":"                                          \"location %(location.get_uri())s\") % locals())"},{"line_number":324,"context_line":"            msg \u003d (_(\"Failed to add object to Swift.\\n\""},{"line_number":325,"context_line":"                   \"Got error from Swift: %(e)s\") % locals())"},{"line_number":326,"context_line":"            logger.error(msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAACH%2F%2F%2Fks%3D","line":323,"updated":"2011-08-19 19:09:27.000000000","message":"Can\u0027t use methods from within format strings.","commit_id":"ac4a599fb384a4ffa1af3153a27b561c346a6d7d"}]}
