)]}'
{"glance/store/__init__.py":[{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"7cb9a315c72a8a2311398127bca7c591421bbe5d","unresolved":false,"context_lines":[{"line_number":287,"context_line":"    # In future we can change it using DB based queued instead,"},{"line_number":288,"context_line":"    # such as using image location\u0027s status to saving pending delete flag"},{"line_number":289,"context_line":"    # when that property be added."},{"line_number":290,"context_line":"    file_queue.add_location(image_id, uri, context)"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"def delete_image_from_backend(context, store_api, image_id, uri):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F90SA%3D","line":290,"updated":"2013-12-05 16:15:56.000000000","message":"nit: I think we should not treat the new parameter as positional because it has a keyword on the function signature.  Can we make this:\n\nfile_queue.add_location(image_id, uri, user_context\u003dcontext)","commit_id":"30b94604fdbb57ace0ab85286efc643e65c99bad"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"45b3308d0c86b9b374ef8415a5d22ea58b82f8b0","unresolved":false,"context_lines":[{"line_number":287,"context_line":"    # In future we can change it using DB based queued instead,"},{"line_number":288,"context_line":"    # such as using image location\u0027s status to saving pending delete flag"},{"line_number":289,"context_line":"    # when that property be added."},{"line_number":290,"context_line":"    file_queue.add_location(image_id, uri, context)"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"def delete_image_from_backend(context, store_api, image_id, uri):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F90NQ%3D","line":290,"in_reply_to":"AAAATn%2F90SA%3D","updated":"2013-12-05 16:19:25.000000000","message":"sure, np","commit_id":"30b94604fdbb57ace0ab85286efc643e65c99bad"}],"glance/store/scrubber.py":[{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"ae6561625d0c69df7696fc06655511929cc295b4","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    The queue contains image\u0027s location which need to delete from backend."},{"line_number":66,"context_line":"    \"\"\""},{"line_number":67,"context_line":"    def __init__(self):"},{"line_number":68,"context_line":"        registry.configure_registry_client()"},{"line_number":69,"context_line":"        registry.configure_registry_admin_creds()"},{"line_number":70,"context_line":"        self.registry \u003d registry.get_registry_client(context.RequestContext())"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F90qc%3D","line":67,"updated":"2013-12-05 15:20:44.000000000","message":"Actually I\u0027m thinking we\u0027d better add the context logic what you added at here, since it\u0027s more common and can be reused by both implementations. If so we change get_scrub_queues() also,  to instance queue object every time (make it belongs to a particular context).","commit_id":"30b94604fdbb57ace0ab85286efc643e65c99bad"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"5245551e938b0a1efded39e94a009337b0f548cc","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    The queue contains image\u0027s location which need to delete from backend."},{"line_number":66,"context_line":"    \"\"\""},{"line_number":67,"context_line":"    def __init__(self):"},{"line_number":68,"context_line":"        registry.configure_registry_client()"},{"line_number":69,"context_line":"        registry.configure_registry_admin_creds()"},{"line_number":70,"context_line":"        self.registry \u003d registry.get_registry_client(context.RequestContext())"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F9z6w%3D","line":67,"in_reply_to":"AAAATn%2F90NU%3D","updated":"2013-12-05 17:02:39.000000000","message":"So iirc you want to make both change (this one and #60224) be most consistent? I\u0027m ok to follow \"Appropriate_Fixes\" policy but IMHO we\u0027d better to balance the gains and losings, if we do it at here, we can maximize code reuse, avoid duplicated. After all, we do the change for future but past. So I\u0027m not sure can we do those change be different?\n\nI\u0027m sure the function is correct, but I\u0027m concerned on approach.","commit_id":"30b94604fdbb57ace0ab85286efc643e65c99bad"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"45b3308d0c86b9b374ef8415a5d22ea58b82f8b0","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    The queue contains image\u0027s location which need to delete from backend."},{"line_number":66,"context_line":"    \"\"\""},{"line_number":67,"context_line":"    def __init__(self):"},{"line_number":68,"context_line":"        registry.configure_registry_client()"},{"line_number":69,"context_line":"        registry.configure_registry_admin_creds()"},{"line_number":70,"context_line":"        self.registry \u003d registry.get_registry_client(context.RequestContext())"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F90NU%3D","line":67,"in_reply_to":"AAAATn%2F90Wk%3D","updated":"2013-12-05 16:19:25.000000000","message":"Ok, sorry trying to do a lot of things at once.\n\nI\u0027ve also proposed this change on havana/stable and would like it to go into the first stable/havana release 2013.2.1. (Delete is fairly core functionality!) My understanding is that is more likely to happen if this patch lands on master as is (see https://wiki.openstack.org/wiki/StableBranch#Appropriate_Fixes.) The stable branch patch is here: https://review.openstack.org/#/c/60224/\n\nIs there anything which will not work with the current patch as is?","commit_id":"30b94604fdbb57ace0ab85286efc643e65c99bad"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"d18cdcc70a1696ab6316687e77e55afd4de222c1","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    The queue contains image\u0027s location which need to delete from backend."},{"line_number":66,"context_line":"    \"\"\""},{"line_number":67,"context_line":"    def __init__(self):"},{"line_number":68,"context_line":"        registry.configure_registry_client()"},{"line_number":69,"context_line":"        registry.configure_registry_admin_creds()"},{"line_number":70,"context_line":"        self.registry \u003d registry.get_registry_client(context.RequestContext())"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F90Wk%3D","line":67,"in_reply_to":"AAAATn%2F90ZM%3D","updated":"2013-12-05 16:01:11.000000000","message":"I C, so I mentioned in my above comments, we need change get_scrub_queues() function also.","commit_id":"30b94604fdbb57ace0ab85286efc643e65c99bad"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"9d878507a92b0392cefbc894689b0416f482ba05","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    The queue contains image\u0027s location which need to delete from backend."},{"line_number":66,"context_line":"    \"\"\""},{"line_number":67,"context_line":"    def __init__(self):"},{"line_number":68,"context_line":"        registry.configure_registry_client()"},{"line_number":69,"context_line":"        registry.configure_registry_admin_creds()"},{"line_number":70,"context_line":"        self.registry \u003d registry.get_registry_client(context.RequestContext())"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F90ZM%3D","line":67,"in_reply_to":"AAAATn%2F90qc%3D","updated":"2013-12-05 15:58:08.000000000","message":"I did that in patch set 1 but changed my mind. I don\u0027t think we can do that since ScrubQueue is global. This means that there is only one per API process. If we associate that with a user that will cause problems if there is more than one user.\n\n def get_scrub_queues():\n    global _file_queue, _db_queue\n    if not _file_queue:\n        _file_queue \u003d ScrubFileQueue()\n    if not _db_queue:\n        _db_queue \u003d ScrubDBQueue()\n    return (_file_queue, _db_queue)","commit_id":"30b94604fdbb57ace0ab85286efc643e65c99bad"},{"author":{"_account_id":616,"name":"Mark Washenberger","email":"mark.washenberger@markwash.net","username":"markwash"},"change_message_id":"e0b11c649350f2d5890112a4aaeb89e0535dce68","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    \"\"\""},{"line_number":67,"context_line":"    def __init__(self):"},{"line_number":68,"context_line":"        registry.configure_registry_client()"},{"line_number":69,"context_line":"        registry.configure_registry_admin_creds()"},{"line_number":70,"context_line":"        self.registry \u003d registry.get_registry_client(context.RequestContext())"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9zZk%3D","line":69,"updated":"2013-12-05 18:31:02.000000000","message":"It looks like this line should be ensuring that we have admin-like access to the registry. I\u0027m not sure I understand why we need the user\u0027s token... but I have not tried to reproduce the bug yet. Any pointers/explanation? Thanks","commit_id":"a747d21c65aedab612b98521608ce70fef64ec0c"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"fff5b3442148102cd231eb956fc28e866622d77b","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    \"\"\""},{"line_number":67,"context_line":"    def __init__(self):"},{"line_number":68,"context_line":"        registry.configure_registry_client()"},{"line_number":69,"context_line":"        registry.configure_registry_admin_creds()"},{"line_number":70,"context_line":"        self.registry \u003d registry.get_registry_client(context.RequestContext())"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9hmo%3D","line":69,"in_reply_to":"AAAATn%2F9zXo%3D","updated":"2013-12-10 15:47:35.000000000","message":"I verified that when you run \u0027glance-scrubber\u0027 it picks up the creds from the glance-scrubber.conf file.","commit_id":"a747d21c65aedab612b98521608ce70fef64ec0c"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"494de98d66fc81ce077310f2f3fce7aa5c0f935c","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    \"\"\""},{"line_number":67,"context_line":"    def __init__(self):"},{"line_number":68,"context_line":"        registry.configure_registry_client()"},{"line_number":69,"context_line":"        registry.configure_registry_admin_creds()"},{"line_number":70,"context_line":"        self.registry \u003d registry.get_registry_client(context.RequestContext())"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9zXo%3D","line":69,"in_reply_to":"AAAATn%2F9zZk%3D","updated":"2013-12-05 18:41:31.000000000","message":"Mark, I found this confusing so tried to document what I understand to be the behaviour here https://review.openstack.org/#/c/59471/.\n\nAt this point, when called from api context, the glance-api.conf file is checked for admin credentials. I presume, but haven\u0027t checked, that when called from scrubber context it is the glance-scrubber.conf file that is checked for creds.\n\nIf (as is default) \"use_user_token\" is True in glance-api.conf then you do not need to have creds in the glance-api.conf to talk to the registry and the behaviour will be the long existing behaviour of using the user\u0027s own token to talk to the registry.","commit_id":"a747d21c65aedab612b98521608ce70fef64ec0c"}],"glance/tests/functional/store/test_swift.py":[{"author":{"_account_id":9214,"name":"Sergio Cazzolato","email":"sergiocazzolato@gmail.com","username":"sjcazzol"},"change_message_id":"db5786e3c92a6c0daca3df933623a933149a58dc","unresolved":false,"context_lines":[{"line_number":372,"context_line":""},{"line_number":373,"context_line":"    def test_delayed_delete_with_auth(self):"},{"line_number":374,"context_line":"        \"\"\"Ensure delete works with delayed delete and auth"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"        Reproduces LP bug 1238604."},{"line_number":377,"context_line":"        \"\"\""},{"line_number":378,"context_line":"        swift_store_user \u003d self.swift_config[\u0027swift_store_user\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9gn0%3D","line":375,"updated":"2013-12-10 19:43:17.000000000","message":"I see an blank line that shouldn\u0027t be here","commit_id":"a747d21c65aedab612b98521608ce70fef64ec0c"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"876154e1b15259e1b58c9affdfb6ef154688dd2f","unresolved":false,"context_lines":[{"line_number":372,"context_line":""},{"line_number":373,"context_line":"    def test_delayed_delete_with_auth(self):"},{"line_number":374,"context_line":"        \"\"\"Ensure delete works with delayed delete and auth"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"        Reproduces LP bug 1238604."},{"line_number":377,"context_line":"        \"\"\""},{"line_number":378,"context_line":"        swift_store_user \u003d self.swift_config[\u0027swift_store_user\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9dNk%3D","line":375,"in_reply_to":"AAAATn%2F9gn0%3D","updated":"2013-12-11 10:37:38.000000000","message":"Hi Sergio, thanks for your review.\n\nI think what I have conforms to the style guide mentioned in HACKING.rst:\n\n http://docs.openstack.org/developer/hacking/","commit_id":"a747d21c65aedab612b98521608ce70fef64ec0c"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"change_message_id":"7de5212523a25546b9e39410e1ee0a4bdadb97ab","unresolved":false,"context_lines":[{"line_number":389,"context_line":"            auth_tok\u003dauth_token)"},{"line_number":390,"context_line":"        store \u003d self.get_store(context\u003dcontext)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"        image_id \u003d uuidutils.generate_uuid()"},{"line_number":393,"context_line":"        image_data \u003d StringIO.StringIO(\u0027data\u0027)"},{"line_number":394,"context_line":"        uri, _, _, _ \u003d store.add(image_id, image_data, 4)"},{"line_number":395,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUX%2F%2FGNQ%3D","line":392,"updated":"2014-02-17 06:38:31.000000000","message":"How did this patch pass gerrit despite uuidutils not imported in this module?","commit_id":"f88ce19ed7be73b252c88257c9a37be0b1335e04"}]}
