)]}'
{"glance/scrubber.py":[{"author":{"_account_id":11642,"name":"Jesse J. Cook","email":"jesse.cook@rackspace.com","username":"crashenx"},"change_message_id":"f8cac24c2398c000f0a4e39d04d177c3c211b62f","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                                                        roles\u003droles)"},{"line_number":118,"context_line":"            self.registry \u003d registry.get_registry_client(self.admin_context)"},{"line_number":119,"context_line":"        else:"},{"line_number":120,"context_line":"            ctxt \u003d context.RequestContext()"},{"line_number":121,"context_line":"            self.registry \u003d registry.get_registry_client(ctxt)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa041b7_64aa89d6","line":120,"updated":"2015-04-02 19:50:24.000000000","message":"Should be able to set this like so:\n\n            self.admin_context \u003d context.RequestContext(user\u003dCONF.admin_user,\n                                                        tenant\u003dadmin_tenant,\n                                                        auth_token\u003dadmin_token)\n\nand then skip setting in the derived classes since it\u0027s the same for each class.","commit_id":"129e1e7dac3fb5364262762cc86afb3ff39259fa"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"7bef54e99b40d738c9727c14f818f1800c60a4d0","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                                                        roles\u003droles)"},{"line_number":118,"context_line":"            self.registry \u003d registry.get_registry_client(self.admin_context)"},{"line_number":119,"context_line":"        else:"},{"line_number":120,"context_line":"            ctxt \u003d context.RequestContext()"},{"line_number":121,"context_line":"            self.registry \u003d registry.get_registry_client(ctxt)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa041b7_99f6fdf7","line":120,"in_reply_to":"baa041b7_64aa89d6","updated":"2015-04-03 13:24:56.000000000","message":"For trustedauth, admin context needs to created with the appropriate admin role, otherwise it fails to act like admin context despite using the admin user and token.","commit_id":"129e1e7dac3fb5364262762cc86afb3ff39259fa"},{"author":{"_account_id":11642,"name":"Jesse J. Cook","email":"jesse.cook@rackspace.com","username":"crashenx"},"change_message_id":"f8cac24c2398c000f0a4e39d04d177c3c211b62f","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            self.registry \u003d registry.get_registry_client(self.admin_context)"},{"line_number":119,"context_line":"        else:"},{"line_number":120,"context_line":"            ctxt \u003d context.RequestContext()"},{"line_number":121,"context_line":"            self.registry \u003d registry.get_registry_client(ctxt)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @abc.abstractmethod"},{"line_number":124,"context_line":"    def add_location(self, image_id, location, user_context\u003dNone):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa041b7_645de9e8","line":121,"updated":"2015-04-02 19:50:24.000000000","message":"This entire bit should be inherited by the child classes and since it\u0027s the same for both, you should be able to delete from child classes.","commit_id":"129e1e7dac3fb5364262762cc86afb3ff39259fa"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"7bef54e99b40d738c9727c14f818f1800c60a4d0","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            self.registry \u003d registry.get_registry_client(self.admin_context)"},{"line_number":119,"context_line":"        else:"},{"line_number":120,"context_line":"            ctxt \u003d context.RequestContext()"},{"line_number":121,"context_line":"            self.registry \u003d registry.get_registry_client(ctxt)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @abc.abstractmethod"},{"line_number":124,"context_line":"    def add_location(self, image_id, location, user_context\u003dNone):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa041b7_3991319a","line":121,"in_reply_to":"baa041b7_645de9e8","updated":"2015-04-03 13:24:56.000000000","message":"registry client is already being inherited by the child classes. Also, admin context in trusted auth mode is inherited by child classes.","commit_id":"129e1e7dac3fb5364262762cc86afb3ff39259fa"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"8bfe06b2a5f2b6bd2851620316b500680dccaf02","unresolved":false,"context_lines":[{"line_number":346,"context_line":"    \"\"\"Database-based image scrub queue class.\"\"\""},{"line_number":347,"context_line":"    def __init__(self):"},{"line_number":348,"context_line":"        super(ScrubDBQueue, self).__init__()"},{"line_number":349,"context_line":"        admin_tenant \u003d CONF.admin_tenant_name"},{"line_number":350,"context_line":"        admin_token \u003d self.registry.auth_token"},{"line_number":351,"context_line":"        if CONF.send_identity_headers and not self.admin_context:"},{"line_number":352,"context_line":"            roles \u003d [CONF.admin_role]"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa041b7_c42b95ea","line":349,"updated":"2015-04-02 20:13:28.000000000","message":"Trying to tease this out:\n\nWould it make sense to make a auth call for the \"admin\" catalog and get such information? \n\nI understand this is trusted auth however, that concept may or may not be limited to user creds.","commit_id":"129e1e7dac3fb5364262762cc86afb3ff39259fa"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"7bef54e99b40d738c9727c14f818f1800c60a4d0","unresolved":false,"context_lines":[{"line_number":346,"context_line":"    \"\"\"Database-based image scrub queue class.\"\"\""},{"line_number":347,"context_line":"    def __init__(self):"},{"line_number":348,"context_line":"        super(ScrubDBQueue, self).__init__()"},{"line_number":349,"context_line":"        admin_tenant \u003d CONF.admin_tenant_name"},{"line_number":350,"context_line":"        admin_token \u003d self.registry.auth_token"},{"line_number":351,"context_line":"        if CONF.send_identity_headers and not self.admin_context:"},{"line_number":352,"context_line":"            roles \u003d [CONF.admin_role]"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa041b7_b90c2195","line":349,"in_reply_to":"baa041b7_c42b95ea","updated":"2015-04-03 13:24:56.000000000","message":"Maybe, I\u0027ll look into it. But, these config options were already being used and available, so just used them here as well.","commit_id":"129e1e7dac3fb5364262762cc86afb3ff39259fa"},{"author":{"_account_id":11642,"name":"Jesse J. Cook","email":"jesse.cook@rackspace.com","username":"crashenx"},"change_message_id":"f8cac24c2398c000f0a4e39d04d177c3c211b62f","unresolved":false,"context_lines":[{"line_number":353,"context_line":"            self.admin_context \u003d context.RequestContext(user\u003dCONF.admin_user,"},{"line_number":354,"context_line":"                                                        tenant\u003dadmin_tenant,"},{"line_number":355,"context_line":"                                                        auth_token\u003dNone,"},{"line_number":356,"context_line":"                                                        roles\u003droles)"},{"line_number":357,"context_line":"        else:"},{"line_number":358,"context_line":"            self.admin_context \u003d context.RequestContext(user\u003dCONF.admin_user,"},{"line_number":359,"context_line":"                                                        tenant\u003dadmin_tenant,"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa041b7_6425e9a9","line":356,"updated":"2015-04-02 19:50:24.000000000","message":"Should be setting registry here, although I think this can all just be set in parent class.","commit_id":"129e1e7dac3fb5364262762cc86afb3ff39259fa"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"7bef54e99b40d738c9727c14f818f1800c60a4d0","unresolved":false,"context_lines":[{"line_number":353,"context_line":"            self.admin_context \u003d context.RequestContext(user\u003dCONF.admin_user,"},{"line_number":354,"context_line":"                                                        tenant\u003dadmin_tenant,"},{"line_number":355,"context_line":"                                                        auth_token\u003dNone,"},{"line_number":356,"context_line":"                                                        roles\u003droles)"},{"line_number":357,"context_line":"        else:"},{"line_number":358,"context_line":"            self.admin_context \u003d context.RequestContext(user\u003dCONF.admin_user,"},{"line_number":359,"context_line":"                                                        tenant\u003dadmin_tenant,"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa041b7_9e7023de","line":356,"in_reply_to":"baa041b7_6425e9a9","updated":"2015-04-03 13:24:56.000000000","message":"registry client is being inherited from the parent already here. Also, admin context in trustedauth mode should also be inherited here. admin context above is created only in the case its not inherited from the parent.","commit_id":"129e1e7dac3fb5364262762cc86afb3ff39259fa"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"8bfe06b2a5f2b6bd2851620316b500680dccaf02","unresolved":false,"context_lines":[{"line_number":616,"context_line":"                self.store_api.delete_from_backend(uri, self.admin_context)"},{"line_number":617,"context_line":"            except exceptions.NotFound:"},{"line_number":618,"context_line":"                LOG.info(_LI(\"Image \u0027%s\u0027 not found in backend; Marking \""},{"line_number":619,"context_line":"                             \"image location deleted in db.\") % image_id)"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"            if loc_id !\u003d \u0027-\u0027:"},{"line_number":622,"context_line":"                db_api.get_api().image_location_delete(self.admin_context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa041b7_a41771a2","line":619,"updated":"2015-04-02 20:13:28.000000000","message":"location id?","commit_id":"129e1e7dac3fb5364262762cc86afb3ff39259fa"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"7bef54e99b40d738c9727c14f818f1800c60a4d0","unresolved":false,"context_lines":[{"line_number":616,"context_line":"                self.store_api.delete_from_backend(uri, self.admin_context)"},{"line_number":617,"context_line":"            except exceptions.NotFound:"},{"line_number":618,"context_line":"                LOG.info(_LI(\"Image \u0027%s\u0027 not found in backend; Marking \""},{"line_number":619,"context_line":"                             \"image location deleted in db.\") % image_id)"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"            if loc_id !\u003d \u0027-\u0027:"},{"line_number":622,"context_line":"                db_api.get_api().image_location_delete(self.admin_context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa041b7_593635e8","line":619,"in_reply_to":"baa041b7_a41771a2","updated":"2015-04-03 13:24:56.000000000","message":"sure, makes sense.","commit_id":"129e1e7dac3fb5364262762cc86afb3ff39259fa"},{"author":{"_account_id":11642,"name":"Jesse J. Cook","email":"jesse.cook@rackspace.com","username":"crashenx"},"change_message_id":"f8cac24c2398c000f0a4e39d04d177c3c211b62f","unresolved":false,"context_lines":[{"line_number":617,"context_line":"            except exceptions.NotFound:"},{"line_number":618,"context_line":"                LOG.info(_LI(\"Image \u0027%s\u0027 not found in backend; Marking \""},{"line_number":619,"context_line":"                             \"image location deleted in db.\") % image_id)"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"            if loc_id !\u003d \u0027-\u0027:"},{"line_number":622,"context_line":"                db_api.get_api().image_location_delete(self.admin_context,"},{"line_number":623,"context_line":"                                                       image_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa041b7_0404ddbd","line":620,"updated":"2015-04-02 19:50:24.000000000","message":"+1","commit_id":"129e1e7dac3fb5364262762cc86afb3ff39259fa"},{"author":{"_account_id":11642,"name":"Jesse J. Cook","email":"jesse.cook@rackspace.com","username":"crashenx"},"change_message_id":"a175d9a945e2c1849d5e4c010e699b221ea82aba","unresolved":false,"context_lines":[{"line_number":311,"context_line":"                self.store_api.delete_from_backend(uri, self.admin_context)"},{"line_number":312,"context_line":"            except exceptions.NotFound:"},{"line_number":313,"context_line":"                LOG.info(_LI(\"Image \u0027%s\u0027 not found in backend; Marking \""},{"line_number":314,"context_line":"                             \"image location deleted in db.\") % image_id)"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"            if loc_id !\u003d \u0027-\u0027:"},{"line_number":317,"context_line":"                db_api.get_api().image_location_delete(self.admin_context,"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_489007ed","line":314,"updated":"2015-08-26 17:15:58.000000000","message":"So this should totally be fixed, but should there be a separate launchpad bug / PR for this?","commit_id":"5002a0d425a8b3b324bb178ede9c0b02c198eef4"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"d66ee1bc2138703bf8fde1faa4b9ba05ae4c01b8","unresolved":false,"context_lines":[{"line_number":311,"context_line":"                self.store_api.delete_from_backend(uri, self.admin_context)"},{"line_number":312,"context_line":"            except exceptions.NotFound:"},{"line_number":313,"context_line":"                LOG.info(_LI(\"Image \u0027%s\u0027 not found in backend; Marking \""},{"line_number":314,"context_line":"                             \"image location deleted in db.\") % image_id)"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"            if loc_id !\u003d \u0027-\u0027:"},{"line_number":317,"context_line":"                db_api.get_api().image_location_delete(self.admin_context,"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_11823753","line":314,"in_reply_to":"da20952f_489007ed","updated":"2015-08-26 20:06:23.000000000","message":"Done","commit_id":"5002a0d425a8b3b324bb178ede9c0b02c198eef4"},{"author":{"_account_id":11642,"name":"Jesse J. Cook","email":"jesse.cook@rackspace.com","username":"crashenx"},"change_message_id":"cf64c89ad76e5ff763f0aab694e4b54dc294a34a","unresolved":false,"context_lines":[{"line_number":307,"context_line":"        try:"},{"line_number":308,"context_line":"            LOG.debug(\"Deleting URI from image %s.\" % image_id)"},{"line_number":309,"context_line":"            self.store_api.delete_from_backend(uri, self.admin_context)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"            if loc_id !\u003d \u0027-\u0027:"},{"line_number":312,"context_line":"                db_api.get_api().image_location_delete(self.admin_context,"},{"line_number":313,"context_line":"                                                       image_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_ef344edf","line":310,"updated":"2015-08-27 13:57:45.000000000","message":"nit; you injected a newline which might result in a conflict with your other PR","commit_id":"5026318f2437e4a25e1203a5d73d652a82a3a717"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"0376b8e7ef343b949bed5ea492bb92d106f5dbd1","unresolved":false,"context_lines":[{"line_number":307,"context_line":"        try:"},{"line_number":308,"context_line":"            LOG.debug(\"Deleting URI from image %s.\" % image_id)"},{"line_number":309,"context_line":"            self.store_api.delete_from_backend(uri, self.admin_context)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"            if loc_id !\u003d \u0027-\u0027:"},{"line_number":312,"context_line":"                db_api.get_api().image_location_delete(self.admin_context,"},{"line_number":313,"context_line":"                                                       image_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_655a9f85","line":310,"in_reply_to":"da20952f_ef344edf","updated":"2015-08-27 14:36:17.000000000","message":"Done","commit_id":"5026318f2437e4a25e1203a5d73d652a82a3a717"}]}
