)]}'
{"glance/scrubber.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"10e86964d14493e22ac4a883092cf9c9d1a3f1cb","unresolved":false,"context_lines":[{"line_number":65,"context_line":"When there are a large number of images to scrub, it is beneficial to scrub"},{"line_number":66,"context_line":"images in parallel so that the scrub queue stays in control and the backend"},{"line_number":67,"context_line":"storage is reclaimed in a timely fashion. This configuration option denotes"},{"line_number":68,"context_line":"the max. number of images to be scrubbed in parallel. The default value is one,"},{"line_number":69,"context_line":"which signifies serial scrubbing. Any value above one indicates parallel"},{"line_number":70,"context_line":"scrubbing."},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_a9ca294d","line":68,"range":{"start_line":68,"start_character":4,"end_line":68,"end_character":8},"updated":"2016-05-04 20:14:18.000000000","message":"nit: write out \u0027maximum\u0027","commit_id":"50942ed2b03d0f82ecbb2abfcf0adcda964c5c17"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"d38027f3006187c761ee20a6380335ba86dc76d2","unresolved":false,"context_lines":[{"line_number":65,"context_line":"When there are a large number of images to scrub, it is beneficial to scrub"},{"line_number":66,"context_line":"images in parallel so that the scrub queue stays in control and the backend"},{"line_number":67,"context_line":"storage is reclaimed in a timely fashion. This configuration option denotes"},{"line_number":68,"context_line":"the max. number of images to be scrubbed in parallel. The default value is one,"},{"line_number":69,"context_line":"which signifies serial scrubbing. Any value above one indicates parallel"},{"line_number":70,"context_line":"scrubbing."},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_4ab64edd","line":68,"range":{"start_line":68,"start_character":4,"end_line":68,"end_character":8},"in_reply_to":"1a122d0e_a9ca294d","updated":"2016-05-06 18:02:02.000000000","message":"Done","commit_id":"50942ed2b03d0f82ecbb2abfcf0adcda964c5c17"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"10e86964d14493e22ac4a883092cf9c9d1a3f1cb","unresolved":false,"context_lines":[{"line_number":86,"context_line":"Typically when an image is deleted, the ``glance-api`` service puts the image"},{"line_number":87,"context_line":"into ``deleted`` state and deletes its data at the same time. Delayed delete"},{"line_number":88,"context_line":"is a feature in Glance that delays the actual deletion of image data until a"},{"line_number":89,"context_line":"later point in time(as determined by the configuration option ``scrub_time``)."},{"line_number":90,"context_line":"When delayed delete is turned on, the ``glance-api`` service puts the image"},{"line_number":91,"context_line":"into ``pending_delete`` state upon deletion and leaves the image data as-is"},{"line_number":92,"context_line":"for the image scrubber to delete. The image scrubber will move the image into"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_09307d55","line":89,"range":{"start_line":89,"start_character":18,"end_line":89,"end_character":20},"updated":"2016-05-04 20:14:18.000000000","message":"s/e(/e (/","commit_id":"50942ed2b03d0f82ecbb2abfcf0adcda964c5c17"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"d38027f3006187c761ee20a6380335ba86dc76d2","unresolved":false,"context_lines":[{"line_number":86,"context_line":"Typically when an image is deleted, the ``glance-api`` service puts the image"},{"line_number":87,"context_line":"into ``deleted`` state and deletes its data at the same time. Delayed delete"},{"line_number":88,"context_line":"is a feature in Glance that delays the actual deletion of image data until a"},{"line_number":89,"context_line":"later point in time(as determined by the configuration option ``scrub_time``)."},{"line_number":90,"context_line":"When delayed delete is turned on, the ``glance-api`` service puts the image"},{"line_number":91,"context_line":"into ``pending_delete`` state upon deletion and leaves the image data as-is"},{"line_number":92,"context_line":"for the image scrubber to delete. The image scrubber will move the image into"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_0aae0685","line":89,"range":{"start_line":89,"start_character":18,"end_line":89,"end_character":20},"in_reply_to":"1a122d0e_09307d55","updated":"2016-05-06 18:02:02.000000000","message":"Done","commit_id":"50942ed2b03d0f82ecbb2abfcf0adcda964c5c17"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"10e86964d14493e22ac4a883092cf9c9d1a3f1cb","unresolved":false,"context_lines":[{"line_number":88,"context_line":"is a feature in Glance that delays the actual deletion of image data until a"},{"line_number":89,"context_line":"later point in time(as determined by the configuration option ``scrub_time``)."},{"line_number":90,"context_line":"When delayed delete is turned on, the ``glance-api`` service puts the image"},{"line_number":91,"context_line":"into ``pending_delete`` state upon deletion and leaves the image data as-is"},{"line_number":92,"context_line":"for the image scrubber to delete. The image scrubber will move the image into"},{"line_number":93,"context_line":"``deleted`` state upon successful deletion of image data."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"NOTE: When delayed delete is turned on, image scrubber MUST be running as a"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_a96d0934","line":92,"range":{"start_line":91,"start_character":70,"end_line":92,"end_character":32},"updated":"2016-05-04 20:14:18.000000000","message":"maybe replace with \"in the storage backend for the image scrubber to delete at a later time\".","commit_id":"50942ed2b03d0f82ecbb2abfcf0adcda964c5c17"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"d38027f3006187c761ee20a6380335ba86dc76d2","unresolved":false,"context_lines":[{"line_number":88,"context_line":"is a feature in Glance that delays the actual deletion of image data until a"},{"line_number":89,"context_line":"later point in time(as determined by the configuration option ``scrub_time``)."},{"line_number":90,"context_line":"When delayed delete is turned on, the ``glance-api`` service puts the image"},{"line_number":91,"context_line":"into ``pending_delete`` state upon deletion and leaves the image data as-is"},{"line_number":92,"context_line":"for the image scrubber to delete. The image scrubber will move the image into"},{"line_number":93,"context_line":"``deleted`` state upon successful deletion of image data."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"NOTE: When delayed delete is turned on, image scrubber MUST be running as a"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_aaa09a91","line":92,"range":{"start_line":91,"start_character":70,"end_line":92,"end_character":32},"in_reply_to":"1a122d0e_a96d0934","updated":"2016-05-06 18:02:02.000000000","message":"Done","commit_id":"50942ed2b03d0f82ecbb2abfcf0adcda964c5c17"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"10e86964d14493e22ac4a883092cf9c9d1a3f1cb","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Whether or not to send identity headers in requests to trusted-auth registry."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"Whether to pass through headers containing user and tenant information when"},{"line_number":138,"context_line":"making requests to the registry in trusted-auth mode. This allows the registry"},{"line_number":139,"context_line":"to use the context middleware without keystonemiddleware\u0027s auth_token"},{"line_number":140,"context_line":"middleware, removing calls to the keystone auth service. It is recommended"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_099a3d14","line":137,"range":{"start_line":137,"start_character":0,"end_line":137,"end_character":7},"updated":"2016-05-04 20:14:18.000000000","message":"Maybe change the beginning of this sentence to:\n\nWhen ``True``, the scrubber will pass through ...","commit_id":"50942ed2b03d0f82ecbb2abfcf0adcda964c5c17"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"d38027f3006187c761ee20a6380335ba86dc76d2","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Whether or not to send identity headers in requests to trusted-auth registry."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"Whether to pass through headers containing user and tenant information when"},{"line_number":138,"context_line":"making requests to the registry in trusted-auth mode. This allows the registry"},{"line_number":139,"context_line":"to use the context middleware without keystonemiddleware\u0027s auth_token"},{"line_number":140,"context_line":"middleware, removing calls to the keystone auth service. It is recommended"}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_caa35e9d","line":137,"range":{"start_line":137,"start_character":0,"end_line":137,"end_character":7},"in_reply_to":"1a122d0e_099a3d14","updated":"2016-05-06 18:02:02.000000000","message":"Done","commit_id":"50942ed2b03d0f82ecbb2abfcf0adcda964c5c17"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"10e86964d14493e22ac4a883092cf9c9d1a3f1cb","unresolved":false,"context_lines":[{"line_number":164,"context_line":"scrubber wakes up, it fetches and scrubs all ``pending_delete`` images that"},{"line_number":165,"context_line":"are available for scrubbing after taking ``scrub_time`` into consideration."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"If the wakeup time is set to a large number, there maybe a large number of"},{"line_number":168,"context_line":"images to be scrubbed for each run. Also, this impacts how quickly the backend"},{"line_number":169,"context_line":"storage is reclaimed."},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_29bc596b","line":167,"range":{"start_line":167,"start_character":51,"end_line":167,"end_character":56},"updated":"2016-05-04 20:14:18.000000000","message":"s/maybe/may be/","commit_id":"50942ed2b03d0f82ecbb2abfcf0adcda964c5c17"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"d38027f3006187c761ee20a6380335ba86dc76d2","unresolved":false,"context_lines":[{"line_number":164,"context_line":"scrubber wakes up, it fetches and scrubs all ``pending_delete`` images that"},{"line_number":165,"context_line":"are available for scrubbing after taking ``scrub_time`` into consideration."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"If the wakeup time is set to a large number, there maybe a large number of"},{"line_number":168,"context_line":"images to be scrubbed for each run. Also, this impacts how quickly the backend"},{"line_number":169,"context_line":"storage is reclaimed."},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dab17558_6a9eb257","line":167,"range":{"start_line":167,"start_character":51,"end_line":167,"end_character":56},"in_reply_to":"1a122d0e_29bc596b","updated":"2016-05-06 18:02:02.000000000","message":"Done","commit_id":"50942ed2b03d0f82ecbb2abfcf0adcda964c5c17"},{"author":{"_account_id":21215,"name":"Michael Turvey","email":"michael.w.turvey@intel.com","username":"mwturvey"},"change_message_id":"cf92d240ec831652bb8e444c0abf0049f671df49","unresolved":false,"context_lines":[{"line_number":114,"context_line":"               help\u003d_(\"\"\""},{"line_number":115,"context_line":"Time interval, in seconds, between scrubber runs in daemon mode."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Scrubber can be run either as a cron job or daemon. When run as daemon, this"},{"line_number":118,"context_line":"configuration time specifies the time period between two runs. When the"},{"line_number":119,"context_line":"scrubber wakes up, it fetches and scrubs all ``pending_delete`` images that"},{"line_number":120,"context_line":"are available for scrubbing after taking ``scrub_time`` into consideration."}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_f903a6b6","line":117,"range":{"start_line":117,"start_character":57,"end_line":117,"end_character":70},"updated":"2016-05-06 16:42:28.000000000","message":"Missing \"a\".  Should be \"run as a daemon\"","commit_id":"8d43f727c2f9f8110331c8c3e32d75b274ba21bb"},{"author":{"_account_id":21215,"name":"Michael Turvey","email":"michael.w.turvey@intel.com","username":"mwturvey"},"change_message_id":"cf92d240ec831652bb8e444c0abf0049f671df49","unresolved":false,"context_lines":[{"line_number":119,"context_line":"scrubber wakes up, it fetches and scrubs all ``pending_delete`` images that"},{"line_number":120,"context_line":"are available for scrubbing after taking ``scrub_time`` into consideration."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"If the wakeup time is set to a large number, there maybe a large number of"},{"line_number":123,"context_line":"images to be scrubbed for each run. Also, this impacts how quickly the backend"},{"line_number":124,"context_line":"storage is reclaimed."},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_592bd230","line":122,"range":{"start_line":122,"start_character":51,"end_line":122,"end_character":56},"updated":"2016-05-06 16:42:28.000000000","message":"Should be \"may be\" instead of \"maybe\"","commit_id":"8d43f727c2f9f8110331c8c3e32d75b274ba21bb"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"ae592c880765642a6c7e46e507cf7577e190b8c2","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    * None (consumed by image scrubber, an independent periodic task)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Possible values:"},{"line_number":55,"context_line":"    * Any non-negative integer"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Related options:"},{"line_number":58,"context_line":"    * ``delayed_delete``"}],"source_content_type":"text/x-python","patch_set":5,"id":"9abb7d3a_514d7071","line":55,"range":{"start_line":55,"start_character":6,"end_line":55,"end_character":30},"updated":"2016-05-27 17:29:00.000000000","message":"really?\n\nthere\u0027s no maximum? or even suggested max?","commit_id":"485c680a3f0d9b6eb6c79c30f71cf7da09598518"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"58c7ed9b24dc7c01b5fc307a45d5e211440023ce","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    * False"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Related options:"},{"line_number":99,"context_line":"    * ``scrub_time``"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"\"\"\")),"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_dcb47136","line":99,"updated":"2016-08-22 18:42:19.000000000","message":"How about wakeup_time ?","commit_id":"a5c9955472a242feced0c47c2ee8ff8ee93f5574"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"27f99acc6b77e8d888a98a75e45afbfe6e5c0d15","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    * False"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Related options:"},{"line_number":99,"context_line":"    * ``scrub_time``"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"\"\"\")),"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_67ea0aae","line":99,"in_reply_to":"1ac06dbe_dcb47136","updated":"2016-08-22 19:31:52.000000000","message":"Yep, makes sense.","commit_id":"a5c9955472a242feced0c47c2ee8ff8ee93f5574"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"58c7ed9b24dc7c01b5fc307a45d5e211440023ce","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Related options:"},{"line_number":162,"context_line":"    * ``daemon``"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"\"\"\"))"},{"line_number":165,"context_line":"]"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_bc741568","line":163,"updated":"2016-08-22 18:42:19.000000000","message":"Do we need to mention delayed_delete here?  If delayed_delete is False, is it the case that the daemon will never find any work to do?","commit_id":"a5c9955472a242feced0c47c2ee8ff8ee93f5574"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9d4f2206e808b9cccaadc91edc425e2dc5470b7c","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Related options:"},{"line_number":162,"context_line":"    * ``daemon``"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"\"\"\"))"},{"line_number":165,"context_line":"]"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_cd283de5","line":163,"in_reply_to":"1ac06dbe_a753626a","updated":"2016-08-22 20:00:19.000000000","message":"OK, I\u0027m thinking of the \"Related options\" like this:\n\n- There\u0027s a \"parent item\" like delayed_delete\n- there are \"child items\" like scrub_time and wakeup_time\n- the parent item related options should mention the children\n- the children item related options should mention the parent\n- but, the children items don\u0027t need to mention other children items (usually ... there may be exceptions like some of the cinder store options ... we should be willing to make exceptions if it improves clarity of the help text)\n\nI think for the most part, this is what we\u0027ve been doing, but I\u0027m not sure it\u0027s written down anywhere.","commit_id":"a5c9955472a242feced0c47c2ee8ff8ee93f5574"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"27f99acc6b77e8d888a98a75e45afbfe6e5c0d15","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Related options:"},{"line_number":162,"context_line":"    * ``daemon``"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"\"\"\"))"},{"line_number":165,"context_line":"]"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_a753626a","line":163,"in_reply_to":"1ac06dbe_bc741568","updated":"2016-08-22 19:31:52.000000000","message":"Yes, if delayed_delete is False, the images would never be marked \"pending_delete\". Hence, the scrubber daemon would never find anything to scrub.\nHowever, if one is turning delayed delete off after having it enabled previously, it might still find some images to scrub that are pending from previous runs. But, yeah, eventually it won\u0027t find anything to work on.","commit_id":"a5c9955472a242feced0c47c2ee8ff8ee93f5574"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"53c8e0b4f5acca6bba8c56bac5f5e1b4f1847895","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Related options:"},{"line_number":162,"context_line":"    * ``daemon``"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"\"\"\"))"},{"line_number":165,"context_line":"]"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_e6c6f398","line":163,"in_reply_to":"1ac06dbe_cd283de5","updated":"2016-08-22 22:34:58.000000000","message":"Yep, that\u0027s what we\u0027ve been doing more or less.\nAlthough we may have missed an opt or two.\nI guess, there are many ways to define this relationship, but as long as we stay consistent, this works great for me.","commit_id":"a5c9955472a242feced0c47c2ee8ff8ee93f5574"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"ee1321d2fa4dc310cedd4cfa1bfa05498ec40290","unresolved":false,"context_lines":[{"line_number":87,"context_line":"scrubber will move the image into ``deleted`` state upon successful deletion"},{"line_number":88,"context_line":"of image data."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"NOTE: When delayed delete is turned on, image scrubber MUST be running as a"},{"line_number":91,"context_line":"periodic task to prevent the backend storage from filling up with undesired"},{"line_number":92,"context_line":"usage."},{"line_number":93,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_0eca3c4e","line":90,"range":{"start_line":90,"start_character":55,"end_line":90,"end_character":59},"updated":"2016-08-23 03:54:54.000000000","message":"bold is better as it catches attention","commit_id":"9522d772b2a82df83e3b09c3d9a9a32cabedc4e2"}]}
