)]}'
{"specs/liberty/image-volume-cache.rst":[{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"527fbc80caed9c0450b881b8151b9c2ad42420b3","unresolved":false,"context_lines":[{"line_number":45,"context_line":"* Check if an image is in the cache."},{"line_number":46,"context_line":"* If it is and has been updated, delete it."},{"line_number":47,"context_line":"* If it wasn\u0027t in the cache (or isn\u0027t anymore)"},{"line_number":48,"context_line":"    * Evict an old image in room is needed."},{"line_number":49,"context_line":"    * Create a volume from an image (the \u0027normal\u0027 way of copying data over),"},{"line_number":50,"context_line":"      this volume will henceforth be known as the \u0027image-volume\u0027."},{"line_number":51,"context_line":"    * Update the cache to know about this new image-volume and its image"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a0c5dc1_4ade7d6e","line":48,"updated":"2015-05-13 02:47:13.000000000","message":"\"if\"... so the interesting detail is determining that threshold","commit_id":"b6770789dc88a407946321265be76b7d212d34ad"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"2f8ff654b4f2005255dbddd55d2bbc9fb3fa9764","unresolved":false,"context_lines":[{"line_number":45,"context_line":"* Check if an image is in the cache."},{"line_number":46,"context_line":"* If it is and has been updated, delete it."},{"line_number":47,"context_line":"* If it wasn\u0027t in the cache (or isn\u0027t anymore)"},{"line_number":48,"context_line":"    * Evict an old image in room is needed."},{"line_number":49,"context_line":"    * Create a volume from an image (the \u0027normal\u0027 way of copying data over),"},{"line_number":50,"context_line":"      this volume will henceforth be known as the \u0027image-volume\u0027."},{"line_number":51,"context_line":"    * Update the cache to know about this new image-volume and its image"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a0c5dc1_beff7a00","line":48,"in_reply_to":"9a0c5dc1_4ade7d6e","updated":"2015-05-13 04:33:58.000000000","message":"Hah, yea, this might turn into more of a number of cached objects check instead of size in space thing which I had originally thought it to be. Or some combination of them...","commit_id":"b6770789dc88a407946321265be76b7d212d34ad"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"527fbc80caed9c0450b881b8151b9c2ad42420b3","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Name: cinder_internal"},{"line_number":71,"context_line":"Type: Boolean"},{"line_number":72,"context_line":"Default: False"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"We then would need a new table to track our image cache. This table will have"},{"line_number":75,"context_line":"the following fields:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a0c5dc1_aad5f943","line":72,"updated":"2015-05-13 02:47:13.000000000","message":"cool, one thing though; ideally this would remain hidden from the end-user IMO.  We would need/want some sort of \"global\" tenant to manage this and be able to share them with other tenants I think.","commit_id":"b6770789dc88a407946321265be76b7d212d34ad"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"2f8ff654b4f2005255dbddd55d2bbc9fb3fa9764","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Name: cinder_internal"},{"line_number":71,"context_line":"Type: Boolean"},{"line_number":72,"context_line":"Default: False"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"We then would need a new table to track our image cache. This table will have"},{"line_number":75,"context_line":"the following fields:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a0c5dc1_3eb02a43","line":72,"in_reply_to":"9a0c5dc1_aad5f943","updated":"2015-05-13 04:33:58.000000000","message":"Ah ok, I see what you mean. We would have like a \u0027Cinder\u0027 tenant or something that owns these objects.\n\nDo you think this would be something set up by an admin and we pick up through config options (username, password, etc)? Or something we can create automatically from cinder?","commit_id":"b6770789dc88a407946321265be76b7d212d34ad"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"527fbc80caed9c0450b881b8151b9c2ad42420b3","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"This information gives us enough to look up whether or not a image is in the"},{"line_number":96,"context_line":"cache for a target backend, and make the decision to either create a new one"},{"line_number":97,"context_line":"or not and then call _create_from_source_volume with the image-volume."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"As far as the volume driver is concerned it would be creating volumes from an"},{"line_number":100,"context_line":"image and cloning volumes, it would not need to be aware of the cache at all"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a0c5dc1_ca370daf","line":97,"updated":"2015-05-13 02:47:13.000000000","message":"You\u0027ll need a column to indicate what imageID the volume is associated with.  Either that or a naming algorithm which I DONT think is a good idea here.","commit_id":"b6770789dc88a407946321265be76b7d212d34ad"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"2f8ff654b4f2005255dbddd55d2bbc9fb3fa9764","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"This information gives us enough to look up whether or not a image is in the"},{"line_number":96,"context_line":"cache for a target backend, and make the decision to either create a new one"},{"line_number":97,"context_line":"or not and then call _create_from_source_volume with the image-volume."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"As far as the volume driver is concerned it would be creating volumes from an"},{"line_number":100,"context_line":"image and cloning volumes, it would not need to be aware of the cache at all"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a0c5dc1_1e11e652","line":97,"in_reply_to":"9a0c5dc1_ca370daf","updated":"2015-05-13 04:33:58.000000000","message":"Oops, yea, definitely need a volume id. Done","commit_id":"b6770789dc88a407946321265be76b7d212d34ad"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"527fbc80caed9c0450b881b8151b9c2ad42420b3","unresolved":false,"context_lines":[{"line_number":101,"context_line":"for the creation methods."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"One downside of this approach is that the api\u0027s which list volumes and search"},{"line_number":104,"context_line":"for them would need to be updated to ignore the cinder_internal volumes. These"},{"line_number":105,"context_line":"internal volumes would not be counted towards any quota and would potentially"},{"line_number":106,"context_line":"eat up space on the backend that would need to be reported by the volume"},{"line_number":107,"context_line":"driver accordingly."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a0c5dc1_6a46e124","line":104,"updated":"2015-05-13 02:47:13.000000000","message":"^^ So a \"special\" tenant would alleviate that I think","commit_id":"b6770789dc88a407946321265be76b7d212d34ad"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"2f8ff654b4f2005255dbddd55d2bbc9fb3fa9764","unresolved":false,"context_lines":[{"line_number":101,"context_line":"for the creation methods."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"One downside of this approach is that the api\u0027s which list volumes and search"},{"line_number":104,"context_line":"for them would need to be updated to ignore the cinder_internal volumes. These"},{"line_number":105,"context_line":"internal volumes would not be counted towards any quota and would potentially"},{"line_number":106,"context_line":"eat up space on the backend that would need to be reported by the volume"},{"line_number":107,"context_line":"driver accordingly."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a0c5dc1_9e3156a5","line":104,"in_reply_to":"9a0c5dc1_6a46e124","updated":"2015-05-13 04:33:58.000000000","message":"Nice, I\u0027m liking the tenant approach more and more.","commit_id":"b6770789dc88a407946321265be76b7d212d34ad"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"527fbc80caed9c0450b881b8151b9c2ad42420b3","unresolved":false,"context_lines":[{"line_number":104,"context_line":"for them would need to be updated to ignore the cinder_internal volumes. These"},{"line_number":105,"context_line":"internal volumes would not be counted towards any quota and would potentially"},{"line_number":106,"context_line":"eat up space on the backend that would need to be reported by the volume"},{"line_number":107,"context_line":"driver accordingly."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"There is a possibility of a race within the cache where an image would be"},{"line_number":110,"context_line":"getting deleted and is selected to be used for a clone operation. If this"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a0c5dc1_2a490932","line":107,"updated":"2015-05-13 02:47:13.000000000","message":"We\u0027ll probably want a new \"limit\" concept that sets this.  The other thing to consider is \"space reclamation\".  In other words when certain capacity thresholds are reached cache volumes are auto-purged and the caching feature is disabled until the threshold is within spec again.","commit_id":"b6770789dc88a407946321265be76b7d212d34ad"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"2f8ff654b4f2005255dbddd55d2bbc9fb3fa9764","unresolved":false,"context_lines":[{"line_number":104,"context_line":"for them would need to be updated to ignore the cinder_internal volumes. These"},{"line_number":105,"context_line":"internal volumes would not be counted towards any quota and would potentially"},{"line_number":106,"context_line":"eat up space on the backend that would need to be reported by the volume"},{"line_number":107,"context_line":"driver accordingly."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"There is a possibility of a race within the cache where an image would be"},{"line_number":110,"context_line":"getting deleted and is selected to be used for a clone operation. If this"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a0c5dc1_de1a2e6e","line":107,"in_reply_to":"9a0c5dc1_2a490932","updated":"2015-05-13 04:33:58.000000000","message":"Thats a good idea, any suggestions on how the reclamation would work? Something we check for on volume creation in the scheduler? Volume manager?","commit_id":"b6770789dc88a407946321265be76b7d212d34ad"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"527fbc80caed9c0450b881b8151b9c2ad42420b3","unresolved":false,"context_lines":[{"line_number":111,"context_line":"happens we should catch the error and attempt to create the volume by"},{"line_number":112,"context_line":"downloading the image. It is also possible that multiple images are cached at"},{"line_number":113,"context_line":"the same time, this is considered \u0027OK\u0027, eventually one or both will be evicted"},{"line_number":114,"context_line":"if needed."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Alternatives"},{"line_number":117,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a0c5dc1_ca5eede8","line":114,"updated":"2015-05-13 02:47:13.000000000","message":"Ahh, this is where you were talking about earlier.  Yeah, some backends will behave differently here I think.  Ideally, you try/catch throughout the create-from-clone and save yourself that way.\n\nRather fail and move on that have a lock in this situation personally.","commit_id":"b6770789dc88a407946321265be76b7d212d34ad"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"2f8ff654b4f2005255dbddd55d2bbc9fb3fa9764","unresolved":false,"context_lines":[{"line_number":111,"context_line":"happens we should catch the error and attempt to create the volume by"},{"line_number":112,"context_line":"downloading the image. It is also possible that multiple images are cached at"},{"line_number":113,"context_line":"the same time, this is considered \u0027OK\u0027, eventually one or both will be evicted"},{"line_number":114,"context_line":"if needed."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Alternatives"},{"line_number":117,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a0c5dc1_9e795696","line":114,"in_reply_to":"9a0c5dc1_ca5eede8","updated":"2015-05-13 04:33:58.000000000","message":"Yep, my goal here is to do it faster if we can, but don\u0027t try too hard and just use the slow-but-works method if anything goes wrong.","commit_id":"b6770789dc88a407946321265be76b7d212d34ad"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"e0f91faef3b1ec20064c66ee8bdea38253924ca5","unresolved":false,"context_lines":[{"line_number":45,"context_line":"* Check if an image is in the cache."},{"line_number":46,"context_line":"* If it is and has been updated, delete it."},{"line_number":47,"context_line":"* If it wasn\u0027t in the cache (or isn\u0027t anymore)"},{"line_number":48,"context_line":"    * Evict an old image in room is needed."},{"line_number":49,"context_line":"    * Create a volume from an image (the \u0027normal\u0027 way of copying data over),"},{"line_number":50,"context_line":"      this volume will henceforth be known as the \u0027image-volume\u0027. This volume"},{"line_number":51,"context_line":"      would be owned by a special tenant the is controlled by Cinder."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a0c5dc1_cf7035df","line":48,"updated":"2015-05-13 14:30:29.000000000","message":"*if* room is needed","commit_id":"0e47fb8c87c6c7a514e8bf6daf15ebd5a46a3fc7"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"ec1bc07a8329f4d480731f75d7e6bd1d608b0ca0","unresolved":false,"context_lines":[{"line_number":45,"context_line":"* Check if an image is in the cache."},{"line_number":46,"context_line":"* If it is and has been updated, delete it."},{"line_number":47,"context_line":"* If it wasn\u0027t in the cache (or isn\u0027t anymore)"},{"line_number":48,"context_line":"    * Evict an old image in room is needed."},{"line_number":49,"context_line":"    * Create a volume from an image (the \u0027normal\u0027 way of copying data over),"},{"line_number":50,"context_line":"      this volume will henceforth be known as the \u0027image-volume\u0027. This volume"},{"line_number":51,"context_line":"      would be owned by a special tenant the is controlled by Cinder."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a0c5dc1_c15a3c83","line":48,"in_reply_to":"9a0c5dc1_cf7035df","updated":"2015-05-13 15:58:41.000000000","message":"Done","commit_id":"0e47fb8c87c6c7a514e8bf6daf15ebd5a46a3fc7"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"e0f91faef3b1ec20064c66ee8bdea38253924ca5","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    * Evict an old image in room is needed."},{"line_number":49,"context_line":"    * Create a volume from an image (the \u0027normal\u0027 way of copying data over),"},{"line_number":50,"context_line":"      this volume will henceforth be known as the \u0027image-volume\u0027. This volume"},{"line_number":51,"context_line":"      would be owned by a special tenant the is controlled by Cinder."},{"line_number":52,"context_line":"    * Update the cache to know about this new image-volume and its image"},{"line_number":53,"context_line":"    contents."},{"line_number":54,"context_line":"* Clone the image cache volume."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a0c5dc1_ef441975","line":51,"updated":"2015-05-13 14:30:29.000000000","message":"*that* is controlled by Cinder","commit_id":"0e47fb8c87c6c7a514e8bf6daf15ebd5a46a3fc7"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"ec1bc07a8329f4d480731f75d7e6bd1d608b0ca0","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    * Evict an old image in room is needed."},{"line_number":49,"context_line":"    * Create a volume from an image (the \u0027normal\u0027 way of copying data over),"},{"line_number":50,"context_line":"      this volume will henceforth be known as the \u0027image-volume\u0027. This volume"},{"line_number":51,"context_line":"      would be owned by a special tenant the is controlled by Cinder."},{"line_number":52,"context_line":"    * Update the cache to know about this new image-volume and its image"},{"line_number":53,"context_line":"    contents."},{"line_number":54,"context_line":"* Clone the image cache volume."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a0c5dc1_6150305f","line":51,"in_reply_to":"9a0c5dc1_ef441975","updated":"2015-05-13 15:58:41.000000000","message":"Done","commit_id":"0e47fb8c87c6c7a514e8bf6daf15ebd5a46a3fc7"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"e0f91faef3b1ec20064c66ee8bdea38253924ca5","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"This new behavior would be enabled via a new volume driver config option"},{"line_number":57,"context_line":"called \u0027enable_image_volume_cache\u0027. The size of this cache will then be"},{"line_number":58,"context_line":"defined by a config option called \u0027image_volume_cache_size\u0027. These options"},{"line_number":59,"context_line":"are scoped to each backend."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"In the _create_from_image of CreateVolumeFromSpecTask we can add in the logic"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a0c5dc1_72ab6e1e","line":58,"updated":"2015-05-13 14:30:29.000000000","message":"Consider using a percentage or some other way that doesn\u0027t configure a hard size.","commit_id":"0e47fb8c87c6c7a514e8bf6daf15ebd5a46a3fc7"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"ec1bc07a8329f4d480731f75d7e6bd1d608b0ca0","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"This new behavior would be enabled via a new volume driver config option"},{"line_number":57,"context_line":"called \u0027enable_image_volume_cache\u0027. The size of this cache will then be"},{"line_number":58,"context_line":"defined by a config option called \u0027image_volume_cache_size\u0027. These options"},{"line_number":59,"context_line":"are scoped to each backend."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"In the _create_from_image of CreateVolumeFromSpecTask we can add in the logic"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a0c5dc1_84145244","line":58,"in_reply_to":"9a0c5dc1_72ab6e1e","updated":"2015-05-13 15:58:41.000000000","message":"Thats a good idea, would definitely work nicer than a hard size.","commit_id":"0e47fb8c87c6c7a514e8bf6daf15ebd5a46a3fc7"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"e0f91faef3b1ec20064c66ee8bdea38253924ca5","unresolved":false,"context_lines":[{"line_number":144,"context_line":"Security impact"},{"line_number":145,"context_line":"---------------"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"None"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Notifications impact"},{"line_number":150,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a0c5dc1_7207ee1c","line":147,"updated":"2015-05-13 14:30:29.000000000","message":"Do we have to be careful about the special tenant?","commit_id":"0e47fb8c87c6c7a514e8bf6daf15ebd5a46a3fc7"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"ec1bc07a8329f4d480731f75d7e6bd1d608b0ca0","unresolved":false,"context_lines":[{"line_number":144,"context_line":"Security impact"},{"line_number":145,"context_line":"---------------"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"None"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Notifications impact"},{"line_number":150,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a0c5dc1_e4caee19","line":147,"in_reply_to":"9a0c5dc1_7207ee1c","updated":"2015-05-13 15:58:41.000000000","message":"Done","commit_id":"0e47fb8c87c6c7a514e8bf6daf15ebd5a46a3fc7"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"1de8ea466be3dc018628ecf37dc4b23509f34f44","unresolved":false,"context_lines":[{"line_number":149,"context_line":"Notifications impact"},{"line_number":150,"context_line":"--------------------"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"None"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Other end user impact"},{"line_number":155,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a0c5dc1_b8dc25e5","line":152,"updated":"2015-05-13 11:02:27.000000000","message":"Are notifications for cache hits/misses useful for sizing purposes?","commit_id":"0e47fb8c87c6c7a514e8bf6daf15ebd5a46a3fc7"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"ec1bc07a8329f4d480731f75d7e6bd1d608b0ca0","unresolved":false,"context_lines":[{"line_number":149,"context_line":"Notifications impact"},{"line_number":150,"context_line":"--------------------"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"None"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Other end user impact"},{"line_number":155,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a0c5dc1_c4992a70","line":152,"in_reply_to":"9a0c5dc1_b8dc25e5","updated":"2015-05-13 15:58:41.000000000","message":"Good call, it probably would be helpful for fine-tuning the size. I\u0027m not sure what mechanism would work best for that though, I suppose just a log statement or something would be enough?","commit_id":"0e47fb8c87c6c7a514e8bf6daf15ebd5a46a3fc7"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"1de8ea466be3dc018628ecf37dc4b23509f34f44","unresolved":false,"context_lines":[{"line_number":167,"context_line":"\u0027worst case\u0027 scenario of having to do the database lookups, trying to create"},{"line_number":168,"context_line":"from a cached image, failing because it got evicted, and then doing the image"},{"line_number":169,"context_line":"download. In situations where that occurs frequently the cache size could be"},{"line_number":170,"context_line":"modified or the feature disabled."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"Other deployer impact"},{"line_number":173,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a0c5dc1_78210dfb","line":170,"updated":"2015-05-13 11:02:27.000000000","message":"Compared to the cost of doing the http transfer, this should be lost in the noise","commit_id":"0e47fb8c87c6c7a514e8bf6daf15ebd5a46a3fc7"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"82c45769ca10b69f123dbef435c4edbcb7f3e24c","unresolved":false,"context_lines":[{"line_number":70,"context_line":"anyone but the cloud admins."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"We then would need a new table to track our image cache. This table will have"},{"line_number":73,"context_line":"the following fields:"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"::"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a0c5dc1_99a4aca6","line":73,"updated":"2015-05-13 20:14:59.000000000","message":"Please, move it to Data Model Impact section","commit_id":"b5d6ebe2125468de4f130d1a546e074316df4f93"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"29b3fde839e3194d40202969a029363cebdc3b0a","unresolved":false,"context_lines":[{"line_number":70,"context_line":"anyone but the cloud admins."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"We then would need a new table to track our image cache. This table will have"},{"line_number":73,"context_line":"the following fields:"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"::"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a0c5dc1_34f82749","line":73,"in_reply_to":"9a0c5dc1_99a4aca6","updated":"2015-05-13 20:44:05.000000000","message":"Done","commit_id":"b5d6ebe2125468de4f130d1a546e074316df4f93"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"82c45769ca10b69f123dbef435c4edbcb7f3e24c","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    |    NAME    |    TYPE   |           DESCRIPTION          |"},{"line_number":79,"context_line":"    +------------+-----------+--------------------------------+"},{"line_number":80,"context_line":"    |            |           |                                |"},{"line_number":81,"context_line":"    | id         |  Integer  |  Auto generated unique id      |"},{"line_number":82,"context_line":"    |            |           |                                |"},{"line_number":83,"context_line":"    | updated_at |  DateTime |  The updated_at time from the  |"},{"line_number":84,"context_line":"    |            |           | image metadata                 |"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a0c5dc1_19de7c11","line":81,"updated":"2015-05-13 20:14:59.000000000","message":"Why you do not use uuid?","commit_id":"b5d6ebe2125468de4f130d1a546e074316df4f93"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"29b3fde839e3194d40202969a029363cebdc3b0a","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    |    NAME    |    TYPE   |           DESCRIPTION          |"},{"line_number":79,"context_line":"    +------------+-----------+--------------------------------+"},{"line_number":80,"context_line":"    |            |           |                                |"},{"line_number":81,"context_line":"    | id         |  Integer  |  Auto generated unique id      |"},{"line_number":82,"context_line":"    |            |           |                                |"},{"line_number":83,"context_line":"    | updated_at |  DateTime |  The updated_at time from the  |"},{"line_number":84,"context_line":"    |            |           | image metadata                 |"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a0c5dc1_544f1bbd","line":81,"in_reply_to":"9a0c5dc1_19de7c11","updated":"2015-05-13 20:44:05.000000000","message":"Good idea","commit_id":"b5d6ebe2125468de4f130d1a546e074316df4f93"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"82c45769ca10b69f123dbef435c4edbcb7f3e24c","unresolved":false,"context_lines":[{"line_number":185,"context_line":"Other deployer impact"},{"line_number":186,"context_line":"---------------------"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"New configuration options for a cinder backend that would potentially need to"},{"line_number":189,"context_line":"be set."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a0c5dc1_194b1c89","line":188,"updated":"2015-05-13 20:14:59.000000000","message":"It would be good to have a list of a specified options","commit_id":"b5d6ebe2125468de4f130d1a546e074316df4f93"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"29b3fde839e3194d40202969a029363cebdc3b0a","unresolved":false,"context_lines":[{"line_number":185,"context_line":"Other deployer impact"},{"line_number":186,"context_line":"---------------------"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"New configuration options for a cinder backend that would potentially need to"},{"line_number":189,"context_line":"be set."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a0c5dc1_14c88321","line":188,"in_reply_to":"9a0c5dc1_194b1c89","updated":"2015-05-13 20:44:05.000000000","message":"Done","commit_id":"b5d6ebe2125468de4f130d1a546e074316df4f93"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"06d484528249984270c9dda1a2a6f73d74ef9a4c","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"The primary (and I think only) use case for this is when creating a volume"},{"line_number":34,"context_line":"from an image more than once. As an end user I will see (potentially) faster"},{"line_number":35,"context_line":"volume creation from an image after the first time, and as ad admin once I"},{"line_number":36,"context_line":"set this up once in the backend configuration it should require no more"},{"line_number":37,"context_line":"interaction."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a0c5dc1_2ef693d7","line":35,"updated":"2015-05-13 22:04:33.000000000","message":"/ad/an/","commit_id":"82e874c2d8404aa11b2dc0b0fee06652e81d001a"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"78e4807ac865bd3845489848a6d47a3c1c5f9ee1","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"The primary (and I think only) use case for this is when creating a volume"},{"line_number":34,"context_line":"from an image more than once. As an end user I will see (potentially) faster"},{"line_number":35,"context_line":"volume creation from an image after the first time, and as ad admin once I"},{"line_number":36,"context_line":"set this up once in the backend configuration it should require no more"},{"line_number":37,"context_line":"interaction."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_be09bfdf","line":35,"in_reply_to":"9a0c5dc1_2ef693d7","updated":"2015-05-27 01:07:32.000000000","message":"Done","commit_id":"82e874c2d8404aa11b2dc0b0fee06652e81d001a"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"9dd5f76fb48a16c8417bbd011820895b88cc2f98","unresolved":false,"context_lines":[{"line_number":65,"context_line":"even more optimal clone if possible."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"For the actual image-volume I think it would be best if we can re-use the"},{"line_number":68,"context_line":"normal Cinder Volume model and database table. If the volumes belong to a"},{"line_number":69,"context_line":"special tenant only used by Cinder internally we can avoid exposing them to"},{"line_number":70,"context_line":"anyone but the cloud admins."},{"line_number":71,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_f1854107","line":68,"updated":"2015-05-26 13:15:28.000000000","message":"We discussed the use of a special Cinder tenant at the Liberty design summit (for this and live backups with snapshots, live migrations, ...) and it was well received. Could you elaborate on how that tenant will be created and managed? How will quotas be set (in cinder.conf, or manually)? Will the admin have normal permissions to modify this tenants quota, etc.?","commit_id":"82e874c2d8404aa11b2dc0b0fee06652e81d001a"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"0256d10aee1930ba4744434408e49ff2c10835f7","unresolved":false,"context_lines":[{"line_number":65,"context_line":"even more optimal clone if possible."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"For the actual image-volume I think it would be best if we can re-use the"},{"line_number":68,"context_line":"normal Cinder Volume model and database table. If the volumes belong to a"},{"line_number":69,"context_line":"special tenant only used by Cinder internally we can avoid exposing them to"},{"line_number":70,"context_line":"anyone but the cloud admins."},{"line_number":71,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_b4fb2947","line":68,"in_reply_to":"7a016987_39485787","updated":"2015-05-26 19:31:24.000000000","message":"First, sorry to drag this topic into the spec, since it complicates things.\nI think a special cinderAdmin user would be useful for at least 3 things today (image cache, migration, live replication with snapshots) and probably more in the future. Creds could be put in cinder.conf by the admin, and they could be fine grained for each functionality that used it, since replicating in cinder.conf is easy.\nYou\u0027re right, quotas could be set and changed by the admin. There\u0027s no need to complicate that part.","commit_id":"82e874c2d8404aa11b2dc0b0fee06652e81d001a"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"584e8701141156cdba7df94dad41ffbe4f615f6b","unresolved":false,"context_lines":[{"line_number":65,"context_line":"even more optimal clone if possible."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"For the actual image-volume I think it would be best if we can re-use the"},{"line_number":68,"context_line":"normal Cinder Volume model and database table. If the volumes belong to a"},{"line_number":69,"context_line":"special tenant only used by Cinder internally we can avoid exposing them to"},{"line_number":70,"context_line":"anyone but the cloud admins."},{"line_number":71,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_39485787","line":68,"in_reply_to":"7a016987_f1854107","updated":"2015-05-26 17:56:39.000000000","message":"Good question :D  ...I kind of avoided the details because I\u0027m not 100% sure how it would work.\n\nIn my mind I see a couple of ways we could go about it, and I\u0027m assuming there are a bunch of other options I haven\u0027t considered or don\u0027t know are possible...\n\nWe could use the cinder service user you have to set up for cinder to use anyway, although I\u0027m not sure if there are any restrictions/drawbacks to this approach. IIRC the credentials and info for it are in the c-api config, so we might need to do something to access it in the c-vol service.. I don\u0027t know enough about it right now, more investigation is required on my part.\n\nAnother, maybe easier approach is to just add new config options for the volume service to take a username and password for some tenant, and that is the one used by cinder for its internal stuff. Alternatively this could be more targeted as just a cinder-cache tenant... I lean towards a single user that might end up used for the temp volumes in migrates or whatever other use cases we have, but maybe others want more fine control.\n\nMy assumption for either of those cases would be that quotas are set manually by an admin, I don\u0027t really want to get into automatically adjusting quotas for users if we can avoid it.\n\nI think anyone with admin permissions that could modify the cinder service user should be able to adjust these quotas and modify objects owned by the cinder tenant.\n\nLet me know your thoughts on this (or anyone else who is following this review), if those sound like reasonable approaches I\u0027ll update the spec. Maybe this would make for a good topic at the weekly meeting just to get some feedback on how people would want it to work.","commit_id":"82e874c2d8404aa11b2dc0b0fee06652e81d001a"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"9dd5f76fb48a16c8417bbd011820895b88cc2f98","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"One downside of this approach is that these internal volumes would not be"},{"line_number":92,"context_line":"counted towards any quota and would potentially eat up space on the backend"},{"line_number":93,"context_line":"that would need to be reported by the volume driver accordingly."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"There is a possibility of a race within the cache where an image would be"},{"line_number":96,"context_line":"getting deleted and is selected to be used for a clone operation. If this"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_518e5528","line":93,"updated":"2015-05-26 13:15:28.000000000","message":"Couldn\u0027t the quota for the special \"Cinder tenant\" be set and used?","commit_id":"82e874c2d8404aa11b2dc0b0fee06652e81d001a"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"584e8701141156cdba7df94dad41ffbe4f615f6b","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"One downside of this approach is that these internal volumes would not be"},{"line_number":92,"context_line":"counted towards any quota and would potentially eat up space on the backend"},{"line_number":93,"context_line":"that would need to be reported by the volume driver accordingly."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"There is a possibility of a race within the cache where an image would be"},{"line_number":96,"context_line":"getting deleted and is selected to be used for a clone operation. If this"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_b9c4475f","line":93,"in_reply_to":"7a016987_518e5528","updated":"2015-05-26 17:56:39.000000000","message":"Oh, uh, yep, thats actually a pretty cool way we could limit the size of the cache as well.\n\nI\u0027ll update this in the next revision to be more specific to a normal user tenant, but mention that it would be tracked by the cinder user.","commit_id":"82e874c2d8404aa11b2dc0b0fee06652e81d001a"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"78e4807ac865bd3845489848a6d47a3c1c5f9ee1","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"One downside of this approach is that these internal volumes would not be"},{"line_number":92,"context_line":"counted towards any quota and would potentially eat up space on the backend"},{"line_number":93,"context_line":"that would need to be reported by the volume driver accordingly."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"There is a possibility of a race within the cache where an image would be"},{"line_number":96,"context_line":"getting deleted and is selected to be used for a clone operation. If this"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_9e0e03e4","line":93,"in_reply_to":"7a016987_b9c4475f","updated":"2015-05-27 01:07:32.000000000","message":"Done","commit_id":"82e874c2d8404aa11b2dc0b0fee06652e81d001a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"02aadc61ceba5616d2e4913559531cac9e5574ae","unresolved":false,"context_lines":[{"line_number":43,"context_line":"level steps to take:"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* Check if an image is in the cache."},{"line_number":46,"context_line":"* If it is and has been updated, delete it."},{"line_number":47,"context_line":"* If it wasn\u0027t in the cache (or isn\u0027t anymore)"},{"line_number":48,"context_line":"    * Evict an old image if room is needed."},{"line_number":49,"context_line":"    * Create a volume from an image (the \u0027normal\u0027 way of copying data over),"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a016987_ac1cf577","line":46,"updated":"2015-05-27 05:03:59.000000000","message":"Why delete it if it has been updated?","commit_id":"2d90f07e4f2eb5ca9e1dd00d14356d31ba51594a"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"d9c09b16fc27a00673580f8b3605ff1df83a9fed","unresolved":false,"context_lines":[{"line_number":43,"context_line":"level steps to take:"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* Check if an image is in the cache."},{"line_number":46,"context_line":"* If it is and has been updated, delete it."},{"line_number":47,"context_line":"* If it wasn\u0027t in the cache (or isn\u0027t anymore)"},{"line_number":48,"context_line":"    * Evict an old image if room is needed."},{"line_number":49,"context_line":"    * Create a volume from an image (the \u0027normal\u0027 way of copying data over),"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a016987_c4f48fd0","line":46,"in_reply_to":"7a016987_ac1cf577","updated":"2015-05-27 14:59:18.000000000","message":"If the image has been updated we need to delete the old one from the cache. Maybe in future versions of this we could do something smarter to re-use it or something, but for now my plan is to just delete the cached one and create a new image-volume with the most up to date image.","commit_id":"2d90f07e4f2eb5ca9e1dd00d14356d31ba51594a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"02aadc61ceba5616d2e4913559531cac9e5574ae","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Data model impact"},{"line_number":123,"context_line":"-----------------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"A new database table for the image cache and new column for the Volume table."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"::"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a016987_073402dc","line":125,"updated":"2015-05-27 05:03:59.000000000","message":"Please specify what exactly will be the new column name in the Volumes table.  Are you going to store the UUID of the image cache in the Volumes table?  This seems to be cross-referencing.  Or do you mean something else?  Anyway, please clarify.","commit_id":"2d90f07e4f2eb5ca9e1dd00d14356d31ba51594a"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"d9c09b16fc27a00673580f8b3605ff1df83a9fed","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Data model impact"},{"line_number":123,"context_line":"-----------------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"A new database table for the image cache and new column for the Volume table."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"::"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a016987_e420ab4b","line":125,"in_reply_to":"7a016987_073402dc","updated":"2015-05-27 14:59:18.000000000","message":"Oops, good catch, that was a holdover from a previous iteration of this. The current version doesn\u0027t change the volume table.","commit_id":"2d90f07e4f2eb5ca9e1dd00d14356d31ba51594a"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"f0fd58395529d3edca644283611b0ba90f6763d2","unresolved":false,"context_lines":[{"line_number":98,"context_line":"happens we should catch the error and attempt to create the volume by"},{"line_number":99,"context_line":"downloading the image. It is also possible that multiple of the same images"},{"line_number":100,"context_line":"are cached at the same time, this is considered \u0027OK\u0027, eventually extra ones"},{"line_number":101,"context_line":"will be evicted if space is needed."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Alternatives"},{"line_number":104,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_f5ecc6f4","line":101,"updated":"2015-05-27 23:18:40.000000000","message":"During migration, we see two volumes in the database and cinder list. one is source and the other is destination. I actually want hide the destination volume from being accessed via cinder list. I know we need to work out a generic way to resolve these issues. Could you add some more explanations about how this BP can help with this use cases?\nThank you.","commit_id":"3aac6a4f3c927c38697fb4a2fc724483cebe5419"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"ea17688e050134196f28a43fdeef3d20499b5ffd","unresolved":false,"context_lines":[{"line_number":98,"context_line":"happens we should catch the error and attempt to create the volume by"},{"line_number":99,"context_line":"downloading the image. It is also possible that multiple of the same images"},{"line_number":100,"context_line":"are cached at the same time, this is considered \u0027OK\u0027, eventually extra ones"},{"line_number":101,"context_line":"will be evicted if space is needed."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Alternatives"},{"line_number":104,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_21fd7c3a","line":101,"in_reply_to":"7a016987_986dc906","updated":"2015-05-28 02:46:43.000000000","message":"Thank you, Patrick.","commit_id":"3aac6a4f3c927c38697fb4a2fc724483cebe5419"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"29058d41456852917ea7f30325c6c92925963da3","unresolved":false,"context_lines":[{"line_number":98,"context_line":"happens we should catch the error and attempt to create the volume by"},{"line_number":99,"context_line":"downloading the image. It is also possible that multiple of the same images"},{"line_number":100,"context_line":"are cached at the same time, this is considered \u0027OK\u0027, eventually extra ones"},{"line_number":101,"context_line":"will be evicted if space is needed."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Alternatives"},{"line_number":104,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_986dc906","line":101,"in_reply_to":"7a016987_f5ecc6f4","updated":"2015-05-28 00:12:04.000000000","message":"I split that out of this spec and have a review up specifically for the tenant here: https://review.openstack.org/#/c/186232/\n\nWe can figure out the details there... Please review that one and help decide how it should work : )","commit_id":"3aac6a4f3c927c38697fb4a2fc724483cebe5419"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"05d11e38e517cd38c51bd6cffd1e2a449678cbd8","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"This new behavior would be enabled via a new volume driver config option"},{"line_number":57,"context_line":"called \u0027image_volume_cache_enabled\u0027. The size of this cache will then be"},{"line_number":58,"context_line":"defined by a config option called \u0027image_volume_cache_size\u0027. These options"},{"line_number":59,"context_line":"are scoped to each backend."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"In the _create_from_image of CreateVolumeFromSpecTask we can add in the logic"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5afe65bd_39ad1789","line":58,"updated":"2015-06-01 17:12:32.000000000","message":"I\u0027m inclined to think that we should have \u0027image_volume_cache_percent\u0027 instead, defaulting to, say, 5.\n\nThe reason is that as a storage administrator I may grow or shrink my backend pool dynamically without reconfiguring or restarting cinder volume process.  And a cinder administrator, I may configure cinder without actually knowing the specific size of the backend pool but still have a sense of the relative amount of the pool that I want to use for cache.","commit_id":"144434a1b17f48d938f5ec89bc1838e2238330cb"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"7df029e6e22f659167b6ce4c3f276bfa9828a3b6","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"This new behavior would be enabled via a new volume driver config option"},{"line_number":57,"context_line":"called \u0027image_volume_cache_enabled\u0027. The size of this cache will then be"},{"line_number":58,"context_line":"defined by a config option called \u0027image_volume_cache_size\u0027. These options"},{"line_number":59,"context_line":"are scoped to each backend."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"In the _create_from_image of CreateVolumeFromSpecTask we can add in the logic"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5afe65bd_5aa0c190","line":58,"in_reply_to":"5afe65bd_39ad1789","updated":"2015-06-01 18:27:57.000000000","message":"Good point, I\u0027ll expand the config options a little bit to cover more fine grained configs.","commit_id":"144434a1b17f48d938f5ec89bc1838e2238330cb"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"662cf2a4ba30192742d83b4c173dbb1e603cc442","unresolved":false,"context_lines":[{"line_number":42,"context_line":"When creating a volume from an image using the cache there are a few high"},{"line_number":43,"context_line":"level steps to take:"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* Check if an image is in the cache."},{"line_number":46,"context_line":"* If it is and has been updated, delete it."},{"line_number":47,"context_line":"* If it wasn\u0027t in the cache (or isn\u0027t anymore)"},{"line_number":48,"context_line":"    * Evict an old image if room is needed."}],"source_content_type":"text/x-rst","patch_set":13,"id":"5afe65bd_c7af357c","line":45,"updated":"2015-06-01 21:25:48.000000000","message":"image -\u003e image-volume ?","commit_id":"a5b2d4f20576cac56085ab29fc12cc2d4bd6e23d"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"249d0a892ea7fc65a48fae411e305d122291a4ac","unresolved":false,"context_lines":[{"line_number":42,"context_line":"When creating a volume from an image using the cache there are a few high"},{"line_number":43,"context_line":"level steps to take:"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* Check if an image is in the cache."},{"line_number":46,"context_line":"* If it is and has been updated, delete it."},{"line_number":47,"context_line":"* If it wasn\u0027t in the cache (or isn\u0027t anymore)"},{"line_number":48,"context_line":"    * Evict an old image if room is needed."}],"source_content_type":"text/x-rst","patch_set":13,"id":"5afe65bd_93f97fcb","line":45,"in_reply_to":"5afe65bd_c7af357c","updated":"2015-06-01 22:15:52.000000000","message":"Done","commit_id":"a5b2d4f20576cac56085ab29fc12cc2d4bd6e23d"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"662cf2a4ba30192742d83b4c173dbb1e603cc442","unresolved":false,"context_lines":[{"line_number":43,"context_line":"level steps to take:"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* Check if an image is in the cache."},{"line_number":46,"context_line":"* If it is and has been updated, delete it."},{"line_number":47,"context_line":"* If it wasn\u0027t in the cache (or isn\u0027t anymore)"},{"line_number":48,"context_line":"    * Evict an old image if room is needed."},{"line_number":49,"context_line":"    * Create a volume from an image (the \u0027normal\u0027 way of copying data over),"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5afe65bd_a73f99d5","line":46,"updated":"2015-06-01 21:25:48.000000000","message":"If some cloned volumes are created from old image-volume and still exist, can we remove the old image-volume? I guess it depends on the back-end storage.\n\nCan we check whether the old image-volume is not referenced any more, and then remove it?\n\nAlso this old image-volume deletion should do after clone volume will be finished because this might take several seconds before clone volume.","commit_id":"a5b2d4f20576cac56085ab29fc12cc2d4bd6e23d"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"25af1082e305d4dabd871d88a80e20bcaf788e97","unresolved":false,"context_lines":[{"line_number":43,"context_line":"level steps to take:"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* Check if an image is in the cache."},{"line_number":46,"context_line":"* If it is and has been updated, delete it."},{"line_number":47,"context_line":"* If it wasn\u0027t in the cache (or isn\u0027t anymore)"},{"line_number":48,"context_line":"    * Evict an old image if room is needed."},{"line_number":49,"context_line":"    * Create a volume from an image (the \u0027normal\u0027 way of copying data over),"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5afe65bd_9354df54","line":46,"in_reply_to":"5afe65bd_980cfc43","updated":"2015-06-01 22:27:36.000000000","message":"OK. I understand. Thank you for the consideration.","commit_id":"a5b2d4f20576cac56085ab29fc12cc2d4bd6e23d"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"249d0a892ea7fc65a48fae411e305d122291a4ac","unresolved":false,"context_lines":[{"line_number":43,"context_line":"level steps to take:"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* Check if an image is in the cache."},{"line_number":46,"context_line":"* If it is and has been updated, delete it."},{"line_number":47,"context_line":"* If it wasn\u0027t in the cache (or isn\u0027t anymore)"},{"line_number":48,"context_line":"    * Evict an old image if room is needed."},{"line_number":49,"context_line":"    * Create a volume from an image (the \u0027normal\u0027 way of copying data over),"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5afe65bd_980cfc43","line":46,"in_reply_to":"5afe65bd_a73f99d5","updated":"2015-06-01 22:15:52.000000000","message":"The assumption is that yes, we can always safely remove the old image-volumes. I think this is the same as if you were to create a volume from a volume in cinder normally via the cli or something, there is no dependency on the original. This feature will initially only work on that assumption, although I\u0027m sure it could be expanded in the future if there is demand. \n\nAs far as the order of when to delete vs create a new one, I agree deleting after makes sense, ideally it should be asynchronous so it does not block the create call from returning successfully. Once I\u0027ve got some code in place I intend to do some experiments with the ordering and strategy here to get the best results.","commit_id":"a5b2d4f20576cac56085ab29fc12cc2d4bd6e23d"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"662cf2a4ba30192742d83b4c173dbb1e603cc442","unresolved":false,"context_lines":[{"line_number":45,"context_line":"* Check if an image is in the cache."},{"line_number":46,"context_line":"* If it is and has been updated, delete it."},{"line_number":47,"context_line":"* If it wasn\u0027t in the cache (or isn\u0027t anymore)"},{"line_number":48,"context_line":"    * Evict an old image if room is needed."},{"line_number":49,"context_line":"    * Create a volume from an image (the \u0027normal\u0027 way of copying data over),"},{"line_number":50,"context_line":"      this volume will henceforth be known as the \u0027image-volume\u0027. This volume"},{"line_number":51,"context_line":"      would be owned by a special tenant that is controlled by Cinder."}],"source_content_type":"text/x-rst","patch_set":13,"id":"5afe65bd_07378db1","line":48,"updated":"2015-06-01 21:25:48.000000000","message":"image -\u003e image-volume ?","commit_id":"a5b2d4f20576cac56085ab29fc12cc2d4bd6e23d"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"249d0a892ea7fc65a48fae411e305d122291a4ac","unresolved":false,"context_lines":[{"line_number":45,"context_line":"* Check if an image is in the cache."},{"line_number":46,"context_line":"* If it is and has been updated, delete it."},{"line_number":47,"context_line":"* If it wasn\u0027t in the cache (or isn\u0027t anymore)"},{"line_number":48,"context_line":"    * Evict an old image if room is needed."},{"line_number":49,"context_line":"    * Create a volume from an image (the \u0027normal\u0027 way of copying data over),"},{"line_number":50,"context_line":"      this volume will henceforth be known as the \u0027image-volume\u0027. This volume"},{"line_number":51,"context_line":"      would be owned by a special tenant that is controlled by Cinder."}],"source_content_type":"text/x-rst","patch_set":13,"id":"5afe65bd_d37b777a","line":48,"in_reply_to":"5afe65bd_07378db1","updated":"2015-06-01 22:15:52.000000000","message":"Done","commit_id":"a5b2d4f20576cac56085ab29fc12cc2d4bd6e23d"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"a8dbf1b76a2b889083e02af24fdd39aa702af717","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"New info log messages for whether or not the cache hit or missed. That way"},{"line_number":177,"context_line":"there is enough info to determine how effective it is and if settings need to"},{"line_number":178,"context_line":"be adjusted."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Other end user impact"},{"line_number":181,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"5afe65bd_abff0966","line":178,"updated":"2015-06-03 16:10:15.000000000","message":"Can we emit events please? Way easier to aggregate than log messages","commit_id":"b5d12ed965f82895c7b716ba882f0a62a7463524"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"cc2e29ac41457d3713a3ae9a198dddfdfc5e01fb","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"New info log messages for whether or not the cache hit or missed. That way"},{"line_number":177,"context_line":"there is enough info to determine how effective it is and if settings need to"},{"line_number":178,"context_line":"be adjusted."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Other end user impact"},{"line_number":181,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"5afe65bd_0b2cdda9","line":178,"in_reply_to":"5afe65bd_abff0966","updated":"2015-06-03 16:18:25.000000000","message":"Good point. I\u0027ll add that in.","commit_id":"b5d12ed965f82895c7b716ba882f0a62a7463524"}]}
