)]}'
{"glance/image_cache/__init__.py":[{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"f4c3fd888343bc059b61900f5f7534717df6d86f","unresolved":false,"context_lines":[{"line_number":38,"context_line":"               help\u003d_(\"\"\""},{"line_number":39,"context_line":"The driver to use for image cache management."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"This configuration options provides the flexibility to choose between the"},{"line_number":42,"context_line":"different image-cache drivers available. An image-cache driver is responsible"},{"line_number":43,"context_line":"for providing the essential functions of image-cache like write images to/read"},{"line_number":44,"context_line":"images from cache, track age and usage of cached images, provide a list of"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_21fc5bb7","line":41,"updated":"2016-04-19 18:47:57.000000000","message":"nit - \"These configuration options provide\"","commit_id":"44f0c90531bc91154b47fc89078a66cbac48b5ea"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d103bddf7d5a619d8da770e910025f0bfffae438","unresolved":false,"context_lines":[{"line_number":38,"context_line":"               help\u003d_(\"\"\""},{"line_number":39,"context_line":"The driver to use for image cache management."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"This configuration options provides the flexibility to choose between the"},{"line_number":42,"context_line":"different image-cache drivers available. An image-cache driver is responsible"},{"line_number":43,"context_line":"for providing the essential functions of image-cache like write images to/read"},{"line_number":44,"context_line":"images from cache, track age and usage of cached images, provide a list of"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_177a3dbd","line":41,"in_reply_to":"1a122d0e_21fc5bb7","updated":"2016-04-19 20:36:38.000000000","message":"I think Steve is correct to flag this, but since you\u0027re talking about this particular config option (not making a general statement about the group), the change should be \u0027This configuration option provides\u0027.","commit_id":"44f0c90531bc91154b47fc89078a66cbac48b5ea"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d103bddf7d5a619d8da770e910025f0bfffae438","unresolved":false,"context_lines":[{"line_number":43,"context_line":"for providing the essential functions of image-cache like write images to/read"},{"line_number":44,"context_line":"images from cache, track age and usage of cached images, provide a list of"},{"line_number":45,"context_line":"cached images, fetch size of the cache, queue images for caching and clean up"},{"line_number":46,"context_line":"the cache etc."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"The essential functions of a driver are defined in the base class"},{"line_number":49,"context_line":"``glance.image_cache.drivers.base.Driver``. All, existing and prospective,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_b715494a","line":46,"range":{"start_line":46,"start_character":8,"end_line":46,"end_character":11},"updated":"2016-04-19 20:36:38.000000000","message":"nit: s/e e/e, e/","commit_id":"44f0c90531bc91154b47fc89078a66cbac48b5ea"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d103bddf7d5a619d8da770e910025f0bfffae438","unresolved":false,"context_lines":[{"line_number":46,"context_line":"the cache etc."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"The essential functions of a driver are defined in the base class"},{"line_number":49,"context_line":"``glance.image_cache.drivers.base.Driver``. All, existing and prospective,"},{"line_number":50,"context_line":"image-cache drivers are expected to implement this interface. Currently"},{"line_number":51,"context_line":"available drivers are ``sqlite`` and ``xattr``. These drivers primarily differ"},{"line_number":52,"context_line":"in the way they store the information about cached images. While the"},{"line_number":53,"context_line":"``sqlite`` driver uses a sqlite database, which sits on every glance node"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_323027e8","line":50,"range":{"start_line":49,"start_character":44,"end_line":50,"end_character":61},"updated":"2016-04-19 20:36:38.000000000","message":"How about: \"All image-cache drivers (both existing and prospective) must implement this interface.\"","commit_id":"44f0c90531bc91154b47fc89078a66cbac48b5ea"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d103bddf7d5a619d8da770e910025f0bfffae438","unresolved":false,"context_lines":[{"line_number":48,"context_line":"The essential functions of a driver are defined in the base class"},{"line_number":49,"context_line":"``glance.image_cache.drivers.base.Driver``. All, existing and prospective,"},{"line_number":50,"context_line":"image-cache drivers are expected to implement this interface. Currently"},{"line_number":51,"context_line":"available drivers are ``sqlite`` and ``xattr``. These drivers primarily differ"},{"line_number":52,"context_line":"in the way they store the information about cached images. While the"},{"line_number":53,"context_line":"``sqlite`` driver uses a sqlite database, which sits on every glance node"},{"line_number":54,"context_line":"locally, to track the usage of cached images, the ``xattr`` driver uses the"},{"line_number":55,"context_line":"extended attributes of files to store this information. It also requires a"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_f2f86fc5","line":52,"range":{"start_line":51,"start_character":48,"end_line":52,"end_character":58},"updated":"2016-04-19 20:36:38.000000000","message":"It\u0027s up to you how you want to handle this kind of thing stylistically, but it might be more clear if you end this sentence with a colon and then put the distinctions in their own list:\n\n... the way they store the information about cached images:\n    * The ``sqlite`` driver uses ...\n    * The ``xattr`` driver uses ...","commit_id":"44f0c90531bc91154b47fc89078a66cbac48b5ea"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"f4c3fd888343bc059b61900f5f7534717df6d86f","unresolved":false,"context_lines":[{"line_number":51,"context_line":"available drivers are ``sqlite`` and ``xattr``. These drivers primarily differ"},{"line_number":52,"context_line":"in the way they store the information about cached images. While the"},{"line_number":53,"context_line":"``sqlite`` driver uses a sqlite database, which sits on every glance node"},{"line_number":54,"context_line":"locally, to track the usage of cached images, the ``xattr`` driver uses the"},{"line_number":55,"context_line":"extended attributes of files to store this information. It also requires a"},{"line_number":56,"context_line":"filesystem that sets atime on the files when accessed."},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_4116b7f1","line":54,"updated":"2016-04-19 18:47:57.000000000","message":"nit - don\u0027t need comma after \"locally\"","commit_id":"44f0c90531bc91154b47fc89078a66cbac48b5ea"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d103bddf7d5a619d8da770e910025f0bfffae438","unresolved":false,"context_lines":[{"line_number":51,"context_line":"available drivers are ``sqlite`` and ``xattr``. These drivers primarily differ"},{"line_number":52,"context_line":"in the way they store the information about cached images. While the"},{"line_number":53,"context_line":"``sqlite`` driver uses a sqlite database, which sits on every glance node"},{"line_number":54,"context_line":"locally, to track the usage of cached images, the ``xattr`` driver uses the"},{"line_number":55,"context_line":"extended attributes of files to store this information. It also requires a"},{"line_number":56,"context_line":"filesystem that sets atime on the files when accessed."},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_ed39b2d8","line":54,"in_reply_to":"1a122d0e_4116b7f1","updated":"2016-04-19 20:36:38.000000000","message":"I think the comma is OK (either that or put the entire restrictive clause in parentheses; you need some way to indicate the end of the clause).  I think it looks kind of weird because you have the other comma before the xattr part.  If you make the change I suggested above, I think the sentence will be fine.","commit_id":"44f0c90531bc91154b47fc89078a66cbac48b5ea"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d103bddf7d5a619d8da770e910025f0bfffae438","unresolved":false,"context_lines":[{"line_number":53,"context_line":"``sqlite`` driver uses a sqlite database, which sits on every glance node"},{"line_number":54,"context_line":"locally, to track the usage of cached images, the ``xattr`` driver uses the"},{"line_number":55,"context_line":"extended attributes of files to store this information. It also requires a"},{"line_number":56,"context_line":"filesystem that sets atime on the files when accessed."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Services which consume this:"},{"line_number":59,"context_line":"    * glance-api"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_12e08b28","line":56,"range":{"start_line":56,"start_character":16,"end_line":56,"end_character":26},"updated":"2016-04-19 20:36:38.000000000","message":"Do you mean \"sets a time\" or \"sets ``atime``\"?","commit_id":"44f0c90531bc91154b47fc89078a66cbac48b5ea"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d103bddf7d5a619d8da770e910025f0bfffae438","unresolved":false,"context_lines":[{"line_number":73,"context_line":"The upper limit on cache size, in bytes, after which the cache-pruner cleans"},{"line_number":74,"context_line":"up the image cache."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Glance caches an image when it is downloaded. Consequently, the size of image"},{"line_number":77,"context_line":"cache grows over time as the number of downloads increase. To keep the cache"},{"line_number":78,"context_line":"size from growing, it is recommended to run the cache-pruner as a periodic"},{"line_number":79,"context_line":"task. When the cache pruner is kicked-off, it compares the current size of"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_d2dbb34d","line":76,"range":{"start_line":76,"start_character":69,"end_line":76,"end_character":77},"updated":"2016-04-19 20:36:38.000000000","message":"nit: s/of image/of the image/","commit_id":"44f0c90531bc91154b47fc89078a66cbac48b5ea"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"f4c3fd888343bc059b61900f5f7534717df6d86f","unresolved":false,"context_lines":[{"line_number":74,"context_line":"up the image cache."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Glance caches an image when it is downloaded. Consequently, the size of image"},{"line_number":77,"context_line":"cache grows over time as the number of downloads increase. To keep the cache"},{"line_number":78,"context_line":"size from growing, it is recommended to run the cache-pruner as a periodic"},{"line_number":79,"context_line":"task. When the cache pruner is kicked-off, it compares the current size of"},{"line_number":80,"context_line":"image cache and triggers a clean-up if the image cache grew beyond the size"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_419b5772","line":77,"updated":"2016-04-19 18:47:57.000000000","message":"nit - increases","commit_id":"44f0c90531bc91154b47fc89078a66cbac48b5ea"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d103bddf7d5a619d8da770e910025f0bfffae438","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Glance caches an image when it is downloaded. Consequently, the size of image"},{"line_number":77,"context_line":"cache grows over time as the number of downloads increase. To keep the cache"},{"line_number":78,"context_line":"size from growing, it is recommended to run the cache-pruner as a periodic"},{"line_number":79,"context_line":"task. When the cache pruner is kicked-off, it compares the current size of"},{"line_number":80,"context_line":"image cache and triggers a clean-up if the image cache grew beyond the size"},{"line_number":81,"context_line":"specified here. After the clean-up, the size of cache is less than or equal to"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_12d1ab23","line":78,"range":{"start_line":78,"start_character":10,"end_line":78,"end_character":17},"updated":"2016-04-19 20:36:38.000000000","message":"maybe something like \"becoming unmanageable\" instead of \"growing\"?  (We want the cache to grow, we just don\u0027t want to to get ridiculously big.)","commit_id":"44f0c90531bc91154b47fc89078a66cbac48b5ea"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d103bddf7d5a619d8da770e910025f0bfffae438","unresolved":false,"context_lines":[{"line_number":76,"context_line":"Glance caches an image when it is downloaded. Consequently, the size of image"},{"line_number":77,"context_line":"cache grows over time as the number of downloads increase. To keep the cache"},{"line_number":78,"context_line":"size from growing, it is recommended to run the cache-pruner as a periodic"},{"line_number":79,"context_line":"task. When the cache pruner is kicked-off, it compares the current size of"},{"line_number":80,"context_line":"image cache and triggers a clean-up if the image cache grew beyond the size"},{"line_number":81,"context_line":"specified here. After the clean-up, the size of cache is less than or equal to"},{"line_number":82,"context_line":"size specified here."}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_d2e613af","line":79,"range":{"start_line":79,"start_character":31,"end_line":79,"end_character":41},"updated":"2016-04-19 20:36:38.000000000","message":"probably don\u0027t need the hyphen","commit_id":"44f0c90531bc91154b47fc89078a66cbac48b5ea"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d103bddf7d5a619d8da770e910025f0bfffae438","unresolved":false,"context_lines":[{"line_number":77,"context_line":"cache grows over time as the number of downloads increase. To keep the cache"},{"line_number":78,"context_line":"size from growing, it is recommended to run the cache-pruner as a periodic"},{"line_number":79,"context_line":"task. When the cache pruner is kicked-off, it compares the current size of"},{"line_number":80,"context_line":"image cache and triggers a clean-up if the image cache grew beyond the size"},{"line_number":81,"context_line":"specified here. After the clean-up, the size of cache is less than or equal to"},{"line_number":82,"context_line":"size specified here."},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_729c5f0f","line":80,"range":{"start_line":80,"start_character":27,"end_line":80,"end_character":35},"updated":"2016-04-19 20:36:38.000000000","message":"you can use \u0027cleanup\u0027 instead of the hyphenated form","commit_id":"44f0c90531bc91154b47fc89078a66cbac48b5ea"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d103bddf7d5a619d8da770e910025f0bfffae438","unresolved":false,"context_lines":[{"line_number":81,"context_line":"specified here. After the clean-up, the size of cache is less than or equal to"},{"line_number":82,"context_line":"size specified here."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"NOTE: This is just a threshold for cache-pruner to act upon. It is NOT a"},{"line_number":85,"context_line":"hard-limit beyond which the image cache would never grow. In fact, depending"},{"line_number":86,"context_line":"on how often the cache-pruner runs and how quickly the cache fills, the image"},{"line_number":87,"context_line":"cache can far exceed the size specified here very easily. Hence, care must be"},{"line_number":88,"context_line":"taken to appropriately schedule the cache-pruner and also in setting this"},{"line_number":89,"context_line":"limit."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Services which consume this:"},{"line_number":92,"context_line":"    * None (consumed by cache-pruner, an independent periodic task)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_4d4a6656","line":89,"range":{"start_line":84,"start_character":0,"end_line":89,"end_character":6},"updated":"2016-04-19 20:36:38.000000000","message":"Wow, is this a poorly-named option!  I wonder whether it would be worth moving this up top (make it the second paragraph).  Then you\u0027d have\n\n* introduction\n* REALLY IMPORTANT NOTE\n* continuing information about the option","commit_id":"44f0c90531bc91154b47fc89078a66cbac48b5ea"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d103bddf7d5a619d8da770e910025f0bfffae438","unresolved":false,"context_lines":[{"line_number":111,"context_line":"This configuration option sets a time limit on how long the incomplete images"},{"line_number":112,"context_line":"should remain in the ``incomplete`` directory before they are cleaned up."},{"line_number":113,"context_line":"Once an incomplete image spends more time than is specified here, it\u0027ll be"},{"line_number":114,"context_line":"removed by cache-cleaner on its next run. It is recommended to run"},{"line_number":115,"context_line":"cache-cleaner as a periodic task on the Glance API nodes to keep the incomplete"},{"line_number":116,"context_line":"images from occupying disk space."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Services which consume this:"},{"line_number":119,"context_line":"    * None (consumed by cache-cleaner, an independent periodic task)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_cd0dd6e9","line":116,"range":{"start_line":114,"start_character":42,"end_line":116,"end_character":33},"updated":"2016-04-19 20:36:38.000000000","message":"suggestion: make this sentence its own paragraph.","commit_id":"44f0c90531bc91154b47fc89078a66cbac48b5ea"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d103bddf7d5a619d8da770e910025f0bfffae438","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"This is the location where image data is cached and served out of. All cached"},{"line_number":134,"context_line":"images are stored directly under this directory. This directory also contains"},{"line_number":135,"context_line":"three sub-directories, viz., ``incomplete``, ``invalid`` and ``queue``."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"The ``incomplete`` sub-directory is the staging area for downloading images. An"},{"line_number":138,"context_line":"image is first downloaded to this directory. If and when the image download is"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_0dd18e23","line":135,"range":{"start_line":135,"start_character":23,"end_line":135,"end_character":27},"updated":"2016-04-19 20:36:38.000000000","message":"OpenStack house style is no i.e., e.g., viz. (which I agree is a bummer), so s/viz./namely/","commit_id":"44f0c90531bc91154b47fc89078a66cbac48b5ea"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d103bddf7d5a619d8da770e910025f0bfffae438","unresolved":false,"context_lines":[{"line_number":135,"context_line":"three sub-directories, viz., ``incomplete``, ``invalid`` and ``queue``."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"The ``incomplete`` sub-directory is the staging area for downloading images. An"},{"line_number":138,"context_line":"image is first downloaded to this directory. If and when the image download is"},{"line_number":139,"context_line":"successful it is moved to the base directory. However, if the download fails,"},{"line_number":140,"context_line":"the partially downloaded image file is moved to the ``invalid`` sub-directory."},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_cd979638","line":138,"range":{"start_line":138,"start_character":45,"end_line":138,"end_character":56},"updated":"2016-04-19 20:36:38.000000000","message":"nit: I think you can get by with simply \u0027When\u0027 here.","commit_id":"44f0c90531bc91154b47fc89078a66cbac48b5ea"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d103bddf7d5a619d8da770e910025f0bfffae438","unresolved":false,"context_lines":[{"line_number":139,"context_line":"successful it is moved to the base directory. However, if the download fails,"},{"line_number":140,"context_line":"the partially downloaded image file is moved to the ``invalid`` sub-directory."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"The third sub-directory ``queue`` is used for queuing images for download."},{"line_number":143,"context_line":"This is used primarily by the cache-prefetcher, which can be scheduled as a"},{"line_number":144,"context_line":"periodic task like cache-pruner and cache-cleaner, to cache images ahead of"},{"line_number":145,"context_line":"their usage. Upon receiving the request to cache an image, Glance touches a"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_2dc0ca29","line":142,"range":{"start_line":142,"start_character":4,"end_line":142,"end_character":9},"updated":"2016-04-19 20:36:38.000000000","message":"maybe drop \u0027third\u0027 and just say \u0027The ``queue`` subdirectory ...\u0027\n\nBy the way, I think \"subdirectory\" doesn\u0027t have a hyphen.","commit_id":"44f0c90531bc91154b47fc89078a66cbac48b5ea"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d103bddf7d5a619d8da770e910025f0bfffae438","unresolved":false,"context_lines":[{"line_number":145,"context_line":"their usage. Upon receiving the request to cache an image, Glance touches a"},{"line_number":146,"context_line":"file in the ``queue`` directory with the image id as the file name. The"},{"line_number":147,"context_line":"cache-prefetcher, when running, polls for the files in ``queue`` directory and"},{"line_number":148,"context_line":"starts downloading them in the order they were created. If and when the"},{"line_number":149,"context_line":"download is successful, the zero-sized file is deleted from the ``queue``"},{"line_number":150,"context_line":"directory. If the download fails, the zero-sized file remains and it\u0027ll be"},{"line_number":151,"context_line":"re-tried the next time cache-prefetcher runs."}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_6d8002c1","line":148,"range":{"start_line":148,"start_character":56,"end_line":148,"end_character":67},"updated":"2016-04-19 20:36:38.000000000","message":"I prefer simply \u0027When\u0027, but it\u0027s just my preference, feel free to disregard this and my earlier suggestion.","commit_id":"44f0c90531bc91154b47fc89078a66cbac48b5ea"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"4f36411301ad9e958b5eadfa3a3316fedeba0399","unresolved":false,"context_lines":[{"line_number":84,"context_line":"image cache grows over time as the number of downloads increases. To keep the"},{"line_number":85,"context_line":"cache size from becoming unmanageable, it is recommended to run the"},{"line_number":86,"context_line":"cache-pruner as a periodic task. When the cache pruner is kicked off, it"},{"line_number":87,"context_line":"compares the current size of image cache and triggers a clean-up if the image"},{"line_number":88,"context_line":"cache grew beyond the size specified here. After the cleanup, the size of"},{"line_number":89,"context_line":"cache is less than or equal to size specified here."},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_dd99d17a","line":87,"range":{"start_line":87,"start_character":61,"end_line":87,"end_character":62},"updated":"2016-04-20 15:42:22.000000000","message":"Nit: don\u0027t need the hyphen","commit_id":"ddb614f55ddd5db7f67ba5ed2444de012aa1f264"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"aec4241979ba7bc4c69854d7c4e4c21dfcf8b1f7","unresolved":false,"context_lines":[{"line_number":42,"context_line":"different image-cache drivers available. An image-cache driver is responsible"},{"line_number":43,"context_line":"for providing the essential functions of image-cache like write images to/read"},{"line_number":44,"context_line":"images from cache, track age and usage of cached images, provide a list of"},{"line_number":45,"context_line":"cached images, fetch size of the cache, queue images for caching and cleanup"},{"line_number":46,"context_line":"the cache, etc."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"The essential functions of a driver are defined in the base class"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_a6db267b","line":45,"range":{"start_line":45,"start_character":69,"end_line":45,"end_character":76},"updated":"2016-04-20 16:18:32.000000000","message":"I think this needed the space.  You can say \"clean up the cache\" or \"cache cleanup\", up to you.\n\nhttp://grammarist.com/usage/cleanup-clean-up/","commit_id":"ed574c1f46d4aea58e9bce5f9a9f384483f9bf9c"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"045719a3439ec6bb7848903cf8ac9486bccda6a7","unresolved":false,"context_lines":[{"line_number":88,"context_line":"cache grew beyond the size specified here. After the cleanup, the size of"},{"line_number":89,"context_line":"cache is less than or equal to size specified here."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Services which consume this:"},{"line_number":92,"context_line":"    * None (consumed by cache-pruner, an independent periodic task)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Possible values:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a122d0e_9193c25a","line":91,"updated":"2016-04-20 16:39:08.000000000","message":"might be nice to add \"Default value\" as well to the help text","commit_id":"e8e11baebbd7b8a5902332ceec5a0cbca8569285"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"620488949ec11b7572c558bb26017c80a9f275d9","unresolved":false,"context_lines":[{"line_number":88,"context_line":"cache grew beyond the size specified here. After the cleanup, the size of"},{"line_number":89,"context_line":"cache is less than or equal to size specified here."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Services which consume this:"},{"line_number":92,"context_line":"    * None (consumed by cache-pruner, an independent periodic task)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Possible values:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a122d0e_f192f6f4","line":91,"in_reply_to":"1a122d0e_9193c25a","updated":"2016-04-20 16:57:23.000000000","message":"I think oslo config-generator spits out of the default value when it generates the sample config. But, yeah, it maybe useful to document the default value in the help text when an operator wants to revert to the default.","commit_id":"e8e11baebbd7b8a5902332ceec5a0cbca8569285"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"c3e337bf02bbd06de3fa350eae97a06f06465277","unresolved":false,"context_lines":[{"line_number":88,"context_line":"cache grew beyond the size specified here. After the cleanup, the size of"},{"line_number":89,"context_line":"cache is less than or equal to size specified here."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Services which consume this:"},{"line_number":92,"context_line":"    * None (consumed by cache-pruner, an independent periodic task)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Possible values:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a122d0e_37d3be61","line":91,"in_reply_to":"1a122d0e_f192f6f4","updated":"2016-04-20 17:12:41.000000000","message":"Well, on a second thought, I think we can achieve this in oslo config-generator because the default value is already specified in the Opt definition. That way, we avoid duplicating the default value too. What do you think?","commit_id":"e8e11baebbd7b8a5902332ceec5a0cbca8569285"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"045719a3439ec6bb7848903cf8ac9486bccda6a7","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    * None (consumed by cache-pruner, an independent periodic task)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Possible values:"},{"line_number":95,"context_line":"    * A positive integer"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Related options:"},{"line_number":98,"context_line":"    * None"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a122d0e_b1d19e25","line":95,"updated":"2016-04-20 16:39:08.000000000","message":"math nit - zero is a valid argument but it is not a positive integer.  Howsabout \"An integer greater than or equal to zero\" (or something like that)?","commit_id":"e8e11baebbd7b8a5902332ceec5a0cbca8569285"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"620488949ec11b7572c558bb26017c80a9f275d9","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    * None (consumed by cache-pruner, an independent periodic task)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Possible values:"},{"line_number":95,"context_line":"    * A positive integer"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Related options:"},{"line_number":98,"context_line":"    * None"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a122d0e_31bf4e62","line":95,"in_reply_to":"1a122d0e_b1d19e25","updated":"2016-04-20 16:57:23.000000000","message":"Done","commit_id":"e8e11baebbd7b8a5902332ceec5a0cbca8569285"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"045719a3439ec6bb7848903cf8ac9486bccda6a7","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    * None (consumed by cache-cleaner, an independent periodic task)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Possible values:"},{"line_number":123,"context_line":"    * A positive integer"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Related options:"},{"line_number":126,"context_line":"    * None"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a122d0e_f1c79661","line":123,"updated":"2016-04-20 16:39:08.000000000","message":"same as above","commit_id":"e8e11baebbd7b8a5902332ceec5a0cbca8569285"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"620488949ec11b7572c558bb26017c80a9f275d9","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    * None (consumed by cache-cleaner, an independent periodic task)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Possible values:"},{"line_number":123,"context_line":"    * A positive integer"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Related options:"},{"line_number":126,"context_line":"    * None"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a122d0e_11c212e9","line":123,"in_reply_to":"1a122d0e_f1c79661","updated":"2016-04-20 16:57:23.000000000","message":"Done","commit_id":"e8e11baebbd7b8a5902332ceec5a0cbca8569285"},{"author":{"_account_id":21722,"name":"Dharini Chandrasekar","email":"dharini.chandrasekar@intel.com","username":"dharinic"},"change_message_id":"e631050515afa828b957c1b6f3cfece30234957b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"               choices\u003d(\u0027sqlite\u0027, \u0027xattr\u0027), ignore_case\u003dTrue,"},{"line_number":38,"context_line":"               help\u003d_(\"\"\""},{"line_number":39,"context_line":"The driver to use for image cache management."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"This configuration option provides the flexibility to choose between the"},{"line_number":42,"context_line":"different image-cache drivers available. An image-cache driver is responsible"},{"line_number":43,"context_line":"for providing the essential functions of image-cache like write images to/read"}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_b56d9906","line":40,"updated":"2016-07-18 23:23:29.000000000","message":"While regenerating the conf file for WSGI opts, though this is merged,\nI noticed that the wrapping of lines for the help text doesn\u0027t comply with the wrap_width\u003d70 of oslo config generator resulting in formatting issues.","commit_id":"a37cc47817ccfffc06eb74c69295ac722a6a85a8"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"e9236d33e7b776a4cef0c723a981cf964404b3f2","unresolved":false,"context_lines":[{"line_number":37,"context_line":"               choices\u003d(\u0027sqlite\u0027, \u0027xattr\u0027), ignore_case\u003dTrue,"},{"line_number":38,"context_line":"               help\u003d_(\"\"\""},{"line_number":39,"context_line":"The driver to use for image cache management."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"This configuration option provides the flexibility to choose between the"},{"line_number":42,"context_line":"different image-cache drivers available. An image-cache driver is responsible"},{"line_number":43,"context_line":"for providing the essential functions of image-cache like write images to/read"}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_f0139f5a","line":40,"in_reply_to":"dada55a8_b56d9906","updated":"2016-07-18 23:25:41.000000000","message":"You\u0027re right. We didn\u0027t realize that issue initially. I think it\u0027s only after merging this one, Erno noticed the issue.","commit_id":"a37cc47817ccfffc06eb74c69295ac722a6a85a8"}],"glance/image_cache/drivers/sqlite.py":[{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"f4c3fd888343bc059b61900f5f7534717df6d86f","unresolved":false,"context_lines":[{"line_number":46,"context_line":"usage statistics of image cache. The path is relative to image cache base"},{"line_number":47,"context_line":"directory, specified by the configuration opt ``image_cache_dir``."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"This database has one table called ``cached_images`` and it looks as following:"},{"line_number":50,"context_line":"                CREATE TABLE IF NOT EXISTS cached_images ("},{"line_number":51,"context_line":"                    image_id TEXT PRIMARY KEY,"},{"line_number":52,"context_line":"                    last_accessed REAL DEFAULT 0.0,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_41735715","line":49,"updated":"2016-04-19 18:47:57.000000000","message":"nit - change to \"follows\"","commit_id":"44f0c90531bc91154b47fc89078a66cbac48b5ea"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d103bddf7d5a619d8da770e910025f0bfffae438","unresolved":false,"context_lines":[{"line_number":47,"context_line":"directory, specified by the configuration opt ``image_cache_dir``."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"This database has one table called ``cached_images`` and it looks as following:"},{"line_number":50,"context_line":"                CREATE TABLE IF NOT EXISTS cached_images ("},{"line_number":51,"context_line":"                    image_id TEXT PRIMARY KEY,"},{"line_number":52,"context_line":"                    last_accessed REAL DEFAULT 0.0,"},{"line_number":53,"context_line":"                    last_modified REAL DEFAULT 0.0,"},{"line_number":54,"context_line":"                    size INTEGER DEFAULT 0,"},{"line_number":55,"context_line":"                    hits INTEGER DEFAULT 0,"},{"line_number":56,"context_line":"                    checksum TEXT"},{"line_number":57,"context_line":"                );"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Services which consume this:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_2da60a53","line":56,"range":{"start_line":50,"start_character":0,"end_line":56,"end_character":33},"updated":"2016-04-19 20:36:38.000000000","message":"I wonder whether this is too much information (this is the kind of thing that could change behind the scenes without affecting this config option).  Maybe just say it\u0027s a lightweight database consisting of one table?","commit_id":"44f0c90531bc91154b47fc89078a66cbac48b5ea"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"4f36411301ad9e958b5eadfa3a3316fedeba0399","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"This is a relative path to the sqlite file database that tracks the age and"},{"line_number":46,"context_line":"usage statistics of image cache. The path is relative to image cache base"},{"line_number":47,"context_line":"directory, specified by the configuration opt ``image_cache_dir``."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"This is a lightweight database with just one table."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_7d9ebd07","line":47,"range":{"start_line":47,"start_character":42,"end_line":47,"end_character":45},"updated":"2016-04-20 15:42:22.000000000","message":"Nit: in the other file, you spelled out \u0027option\u0027; should probably do it here also for consistency.","commit_id":"ddb614f55ddd5db7f67ba5ed2444de012aa1f264"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"045719a3439ec6bb7848903cf8ac9486bccda6a7","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    * A valid relative path to sqlite file database"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Related options:"},{"line_number":58,"context_line":"    * image_cache_dir"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"\"\"\")),"},{"line_number":61,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a122d0e_917aa222","line":58,"updated":"2016-04-20 16:39:08.000000000","message":"some related options are in double backquotes but not this one","commit_id":"e8e11baebbd7b8a5902332ceec5a0cbca8569285"},{"author":{"_account_id":8158,"name":"Hemanth Makkapati","email":"makstacker+osgerrit@gmail.com","username":"hemanth.makkapati"},"change_message_id":"620488949ec11b7572c558bb26017c80a9f275d9","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    * A valid relative path to sqlite file database"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Related options:"},{"line_number":58,"context_line":"    * image_cache_dir"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"\"\"\")),"},{"line_number":61,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a122d0e_f1fb1645","line":58,"in_reply_to":"1a122d0e_917aa222","updated":"2016-04-20 16:57:23.000000000","message":"Done","commit_id":"e8e11baebbd7b8a5902332ceec5a0cbca8569285"}]}
