)]}'
{"specs/queens/approved/volume-backed-flavors.rst":[{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"0374599363378e9bc7715ad2a28c1112a1bc5309","unresolved":false,"context_lines":[{"line_number":21,"context_line":"There are two main problems this spec is trying to address."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"#. Operators would like to use the block storage service for all of their"},{"line_number":24,"context_line":"   storage needs, including \"ephemeral\" storage for compute instances."},{"line_number":25,"context_line":"   However, there is no good interoperable way to force users to create"},{"line_number":26,"context_line":"   volume-backed instances which will use that block storage since"},{"line_number":27,"context_line":"   ``block_device_mapping_v2`` is optional when creating an instance."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f4b6375_2a940944","line":24,"updated":"2017-10-18 17:53:50.000000000","message":"There could be \"billing\" implication here. Let me explain.\n\nAn an operator, you wish to use your block storage service for \"ephemeral\" storage. There are multiple reasons here: it\u0027s just a better solution or it happens Nova doesn\u0027t have this specific driver for ephemeral.\n\nThis \"ephemeral\" storage is usually \"included\" in the flavor/instance. So you bill your user for \"one instance of this flavor\" which happens to use some ephemeral storage somewhere.\n\nBy \"forcing\" the user to create a Cinder volume, you end up with 2 billable items in the project: an instance and a volume.\n\nThis complicates things when it comes to billing because one operator/provider could very well want to not bill the user for that \"builtin ephemeral storage\". All the operator wanted is use/reuse his block storage for ephemeral storage. And the operator ends up with no easy way to distinguish \"ephemeral\" volumes from \"real persistent\" ones for billing/accounting purposes.\n\nI know there are long term plans to add a Cinder image backend driver to Nova. But I don\u0027t feel this plan will fully address the concerns/use cases mentioned above.\n\nSo what I\u0027m asking is: How do you support this use case?","commit_id":"a522b5a8b35ec00b9d75744b39d9cc10ff3066e7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2d707735a5fa7726fd3b65ae98521203f51b5662","unresolved":false,"context_lines":[{"line_number":21,"context_line":"There are two main problems this spec is trying to address."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"#. Operators would like to use the block storage service for all of their"},{"line_number":24,"context_line":"   storage needs, including \"ephemeral\" storage for compute instances."},{"line_number":25,"context_line":"   However, there is no good interoperable way to force users to create"},{"line_number":26,"context_line":"   volume-backed instances which will use that block storage since"},{"line_number":27,"context_line":"   ``block_device_mapping_v2`` is optional when creating an instance."}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf659307_b9e046ce","line":24,"in_reply_to":"3f4b6375_2a940944","updated":"2018-03-27 16:56:24.000000000","message":"\u003e This complicates things when it comes to billing because one operator/provider could very well want to not bill the user for that \"builtin ephemeral storage\". All the operator wanted is use/reuse his block storage for ephemeral storage. And the operator ends up with no easy way to distinguish \"ephemeral\" volumes from \"real persistent\" ones for billing/accounting purposes.\n\nIf the BDM has delete_on_termination\u003dTrue, I would consider it ephemeral in that nova will delete the volume when the instance is deleted. That information is also available in versioned notifications:\n\nhttps://docs.openstack.org/nova/latest/reference/notifications.html#versioned-notification-samples\n\nSee the instance.snapshot.start sample there, the payload has the BDM information in it, so presumably a billing system could build on this to know if the volume-backed instance is \u0027ephemeral\u0027 volume storage or not.","commit_id":"a522b5a8b35ec00b9d75744b39d9cc10ff3066e7"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"f721869fbb062e5faa316deaaa739b072706af1c","unresolved":false,"context_lines":[{"line_number":21,"context_line":"There are two main problems this spec is trying to address."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"#. Operators would like to use the block storage service for all of their"},{"line_number":24,"context_line":"   storage needs, including \"ephemeral\" storage for compute instances."},{"line_number":25,"context_line":"   However, there is no good interoperable way to force users to create"},{"line_number":26,"context_line":"   volume-backed instances which will use that block storage since"},{"line_number":27,"context_line":"   ``block_device_mapping_v2`` is optional when creating an instance."}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf659307_b998461b","line":24,"in_reply_to":"bf659307_b9e046ce","updated":"2018-03-27 17:00:38.000000000","message":"This isn\u0027t always true. A user could very well create a volume and boot on it (with delete_on_termination) while still being billed for it because he choose a special volume type which doesn\u0027t match the default one provided by a flavor and therefore shouldn\u0027t be free.","commit_id":"a522b5a8b35ec00b9d75744b39d9cc10ff3066e7"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"0374599363378e9bc7715ad2a28c1112a1bc5309","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"#. Operators would like to use the block storage service for all of their"},{"line_number":24,"context_line":"   storage needs, including \"ephemeral\" storage for compute instances."},{"line_number":25,"context_line":"   However, there is no good interoperable way to force users to create"},{"line_number":26,"context_line":"   volume-backed instances which will use that block storage since"},{"line_number":27,"context_line":"   ``block_device_mapping_v2`` is optional when creating an instance."},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f4b6375_2a69a9bd","line":25,"updated":"2017-10-18 17:53:50.000000000","message":"You mentioned below \"an operator that wants part of the deployment only using cinder for storage - no local disk\"\n\nThe propose solution won\u0027t forbid a user from using local disk if the user overrides the BDM. This would require a new field or way to convey this restriction and make it discoverable. Otherwise the use case \"no local disk, ever for this flavor\" is just not answered.","commit_id":"a522b5a8b35ec00b9d75744b39d9cc10ff3066e7"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"d0fbadc4d4a9e062c4197833661c91e8edb52d72","unresolved":false,"context_lines":[{"line_number":56,"context_line":"A *volume* BDM in this context is one that is considered to be a BDM where"},{"line_number":57,"context_line":"``destination_type\u003dvolume`` and ``source_type`` is not ``blank``."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"User-defined and image-defined *volume* block device mappings in a server"},{"line_number":60,"context_line":"create request would take precedence over the ``volume_backed`` value of the"},{"line_number":61,"context_line":"flavor."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"* A user-defined BDM is where the user specifies a"},{"line_number":64,"context_line":"  ``block_device_mapping_v2`` entry in the ``POST /servers`` request."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f4e5783_2dbda301","line":61,"range":{"start_line":59,"start_character":0,"end_line":61,"end_character":7},"updated":"2017-10-16 13:36:44.000000000","message":"My first reaction is that this would create confusion, but I think it\u0027s fine. There\u0027s no possibility that the user wants something but gets something else - at least if we handle delete_on_termination like on L115, which would make it impossible for a user to end up with a mysterious left-over volume after their apparently ephemeral instance gets deleted.","commit_id":"a522b5a8b35ec00b9d75744b39d9cc10ff3066e7"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"4a253276f1d3a78c483fc40d62db520b70d7aac0","unresolved":false,"context_lines":[{"line_number":85,"context_line":"      \u0027delete_on_termination\u0027: False,"},{"line_number":86,"context_line":"   }"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"If the user wants anything more custom with the block device mapping such as"},{"line_number":89,"context_line":"a different ``bus_type``, ``delete_on_termination`` or device ``tag`` values"},{"line_number":90,"context_line":"they would need to specify a ``block_device_mapping_v2`` entry in the request."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":".. note:: The ``delete_on_termination`` flag for BDMs auto-created via the"},{"line_number":93,"context_line":"   flavor would be set to False which is the same as the default when"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f4e5783_281c9676","line":90,"range":{"start_line":88,"start_character":0,"end_line":90,"end_character":78},"updated":"2017-10-13 21:44:28.000000000","message":"One thing that will come up again is volume-type, is that something you want to explicitly dismiss or is there a plan to use block_device_mapping_v2 entry for that purpose?","commit_id":"a522b5a8b35ec00b9d75744b39d9cc10ff3066e7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2c11fd26b128a4a83cf8e511dfb85ace70e18575","unresolved":false,"context_lines":[{"line_number":85,"context_line":"      \u0027delete_on_termination\u0027: False,"},{"line_number":86,"context_line":"   }"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"If the user wants anything more custom with the block device mapping such as"},{"line_number":89,"context_line":"a different ``bus_type``, ``delete_on_termination`` or device ``tag`` values"},{"line_number":90,"context_line":"they would need to specify a ``block_device_mapping_v2`` entry in the request."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":".. note:: The ``delete_on_termination`` flag for BDMs auto-created via the"},{"line_number":93,"context_line":"   flavor would be set to False which is the same as the default when"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f4e5783_f0017206","line":90,"range":{"start_line":88,"start_character":0,"end_line":90,"end_character":78},"in_reply_to":"5f4e5783_281c9676","updated":"2017-10-18 00:50:42.000000000","message":"Nope, if they want a non-default volume type they need to create the volume first and bring it to nova.","commit_id":"a522b5a8b35ec00b9d75744b39d9cc10ff3066e7"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"293672c511255e12851dd8504cd1e740601cead1","unresolved":false,"context_lines":[{"line_number":94,"context_line":"   specifying ``block_device_mapping_v2`` today. There are pros and cons to"},{"line_number":95,"context_line":"   this:"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"   * To simplify the user experience for getting a volume-backed instance, we"},{"line_number":98,"context_line":"     need to not delete the volume on instance termination, otherwise it\u0027s"},{"line_number":99,"context_line":"     not a persistent volume. Users arguably are booting from volume for"},{"line_number":100,"context_line":"     long-lived pets where they do not want to lose the disk if the instance"},{"line_number":101,"context_line":"     has to be rebuilt or deleted."},{"line_number":102,"context_line":"   * For users that do not want a persistent volume-backed instance, if"},{"line_number":103,"context_line":"     ``volume_backed\u003dTrue`` is the only kind of flavor available in a given"},{"line_number":104,"context_line":"     cloud then the user will have to delete the volume in addition to deleting"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ff82abbf_09119fac","line":101,"range":{"start_line":97,"start_character":5,"end_line":101,"end_character":34},"updated":"2017-11-25 05:36:40.000000000","message":"this is confusing.  If they boot an instance with a flavor that sets \"volume_backed\u003dTrue\", then delete the instance, they\u0027ll have a left-over volume.  How do they then boot a new instance from that volume in a simplified way?  If they have to use block_device_mapping_v2 then that defeats the whole purpose of simplification, no?","commit_id":"a522b5a8b35ec00b9d75744b39d9cc10ff3066e7"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"d0fbadc4d4a9e062c4197833661c91e8edb52d72","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":".. todo:: Resolve the issues with delete_on_termination and if the"},{"line_number":114,"context_line":"   volume_backed attribute should really be a boolean, or if it should be"},{"line_number":115,"context_line":"   something like \"false\", \"ephemeral\", \"persistent\" which would give the"},{"line_number":116,"context_line":"   operator the choice of defining if they provide these at all, and if so,"},{"line_number":117,"context_line":"   are they persistent or not."},{"line_number":118,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f4e5783_6db03b44","line":115,"range":{"start_line":115,"start_character":18,"end_line":115,"end_character":52},"updated":"2017-10-16 13:36:44.000000000","message":"+1 for this.","commit_id":"a522b5a8b35ec00b9d75744b39d9cc10ff3066e7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2d707735a5fa7726fd3b65ae98521203f51b5662","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":".. todo:: Resolve the issues with delete_on_termination and if the"},{"line_number":114,"context_line":"   volume_backed attribute should really be a boolean, or if it should be"},{"line_number":115,"context_line":"   something like \"false\", \"ephemeral\", \"persistent\" which would give the"},{"line_number":116,"context_line":"   operator the choice of defining if they provide these at all, and if so,"},{"line_number":117,"context_line":"   are they persistent or not."},{"line_number":118,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf659307_b9092696","line":115,"range":{"start_line":115,"start_character":18,"end_line":115,"end_character":52},"in_reply_to":"3f4b6375_aa8eb924","updated":"2018-03-27 16:56:24.000000000","message":"See my response above, I think delete_on_termination is the signal.","commit_id":"a522b5a8b35ec00b9d75744b39d9cc10ff3066e7"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"0374599363378e9bc7715ad2a28c1112a1bc5309","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":".. todo:: Resolve the issues with delete_on_termination and if the"},{"line_number":114,"context_line":"   volume_backed attribute should really be a boolean, or if it should be"},{"line_number":115,"context_line":"   something like \"false\", \"ephemeral\", \"persistent\" which would give the"},{"line_number":116,"context_line":"   operator the choice of defining if they provide these at all, and if so,"},{"line_number":117,"context_line":"   are they persistent or not."},{"line_number":118,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f4b6375_aa8eb924","line":115,"range":{"start_line":115,"start_character":18,"end_line":115,"end_character":52},"in_reply_to":"5f4e5783_6db03b44","updated":"2017-10-18 17:53:50.000000000","message":"Will there be a way to programatically discover if the created volume is \"ephemeral\" or \"persistent\"? I\u0027m more or less referring to the use case I mentioned above.","commit_id":"a522b5a8b35ec00b9d75744b39d9cc10ff3066e7"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"d0fbadc4d4a9e062c4197833661c91e8edb52d72","unresolved":false,"context_lines":[{"line_number":144,"context_line":"not accurately reflect its root disk. Think of this like trying to rebuild"},{"line_number":145,"context_line":"a volume-backed instance with a new image; the image in the root disk does not"},{"line_number":146,"context_line":"actually get replaced in this case which leads to a confusing user experience."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"Alternatives"},{"line_number":149,"context_line":"------------"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f4e5783_cdd96f57","line":147,"updated":"2017-10-16 13:36:44.000000000","message":"Thinking out loud here, so purely hypothetical and potentially ignorant on my part - I\u0027m wondering what other instance operations we need to take into account. For example, migrating to a different AZ (is that even a thing?) that has a different storage backend, and thus the original volume is not available.","commit_id":"a522b5a8b35ec00b9d75744b39d9cc10ff3066e7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2c11fd26b128a4a83cf8e511dfb85ace70e18575","unresolved":false,"context_lines":[{"line_number":144,"context_line":"not accurately reflect its root disk. Think of this like trying to rebuild"},{"line_number":145,"context_line":"a volume-backed instance with a new image; the image in the root disk does not"},{"line_number":146,"context_line":"actually get replaced in this case which leads to a confusing user experience."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"Alternatives"},{"line_number":149,"context_line":"------------"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f4e5783_5010464e","line":147,"in_reply_to":"5f4e5783_cdd96f57","updated":"2017-10-18 00:50:42.000000000","message":"I think the only way you could be live migrated or evacuated to another AZ is if the operator forced it and bypassed the scheduler, something we discourage because it can screw stuff up, like the AZ the instance thought it was in.\n\nRegardless, this would be no different in that regard. What this spec is providing is just some helpers for doing bfv-only or only using cinder for storage (no local disk).\n\nAnd the resize consideration is here because the only APIs that accept a flavor are server create and resize.","commit_id":"a522b5a8b35ec00b9d75744b39d9cc10ff3066e7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3a934769153f0e06710bc2d66a5f7e61885f6727","unresolved":false,"context_lines":[{"line_number":189,"context_line":"   per virt driver, so writing something like this would also potentially"},{"line_number":190,"context_line":"   require making it generic across virt drivers. What is proposed in *this*"},{"line_number":191,"context_line":"   spec, however, will work the same regardless of virt driver."},{"line_number":192,"context_line":""},{"line_number":193,"context_line":".. _api-paste middleware: https://gist.github.com/mgagne/161bd7eaeb4c747fa1ae97c0bc43c093"},{"line_number":194,"context_line":".. _spec approved: https://specs.openstack.org/openstack/nova-specs/specs/newton/approved/flavor-root-disk-none.html"},{"line_number":195,"context_line":".. _proof-of-concept patch: https://review.openstack.org/#/c/432503/"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf659307_795dcee7","line":192,"updated":"2018-03-27 16:49:36.000000000","message":"The other alternative is clouds can define all of their images to have image-defined BDMs, so simply using those images creates a volume-backed server. If the cloud allows users to upload their own images, then that gets hairier. Is it possible to define an image metadata schema in glance such that uploads have to pass that schema validation?","commit_id":"a522b5a8b35ec00b9d75744b39d9cc10ff3066e7"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"d0fbadc4d4a9e062c4197833661c91e8edb52d72","unresolved":false,"context_lines":[{"line_number":197,"context_line":"Data model impact"},{"line_number":198,"context_line":"-----------------"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"Add a Boolean ``volume_backed`` column to the ``nova_api.flavors`` table. The"},{"line_number":201,"context_line":"default value would be False."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f4e5783_cda72fbd","line":200,"range":{"start_line":200,"start_character":6,"end_line":200,"end_character":13},"updated":"2017-10-16 13:36:44.000000000","message":"I\u0027d vote for an enum as mentioned in L115.","commit_id":"a522b5a8b35ec00b9d75744b39d9cc10ff3066e7"},{"author":{"_account_id":7156,"name":"Mathieu Gagné","email":"mgagne@calavera.ca","username":"mgagne"},"change_message_id":"0374599363378e9bc7715ad2a28c1112a1bc5309","unresolved":false,"context_lines":[{"line_number":197,"context_line":"Data model impact"},{"line_number":198,"context_line":"-----------------"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"Add a Boolean ``volume_backed`` column to the ``nova_api.flavors`` table. The"},{"line_number":201,"context_line":"default value would be False."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f4b6375_aa4c7976","line":200,"range":{"start_line":200,"start_character":6,"end_line":200,"end_character":13},"in_reply_to":"5f4e5783_cda72fbd","updated":"2017-10-18 17:53:50.000000000","message":"I think we should find a better name than \"volume_backed\". The reason is that \"volume_backed\" is kind of a statement of fact while in fact, the user can override it when creating the instance. Maybe something like \"default_root_backend\" or something like that to convey the idea that \"volume backed\" is only a default, not an immutable/forced option.\n\nI also agree that this should be an enum to allow for expansion if there are other ideas later so we don\u0027t have to introduce a new field later (if it makes sense to expand on the existing one)","commit_id":"a522b5a8b35ec00b9d75744b39d9cc10ff3066e7"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"8fab1cfcaa3b72d6e8300903105266ed9c248f3a","unresolved":false,"context_lines":[{"line_number":218,"context_line":"           \"ram\": 1024,"},{"line_number":219,"context_line":"           \"vcpus\": 2,"},{"line_number":220,"context_line":"           \"disk\": 10,"},{"line_number":221,"context_line":"           \"volume_backed\": True"},{"line_number":222,"context_line":"       }"},{"line_number":223,"context_line":"     }"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f4e5783_03065d1e","line":221,"range":{"start_line":221,"start_character":11,"end_line":221,"end_character":32},"updated":"2017-10-13 21:46:37.000000000","message":"Do you have an example of what you were thinking in terms of the enum?  The use of a boolean seems logical her but I may be missing a use case or an advantage to an enum","commit_id":"a522b5a8b35ec00b9d75744b39d9cc10ff3066e7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2c11fd26b128a4a83cf8e511dfb85ace70e18575","unresolved":false,"context_lines":[{"line_number":218,"context_line":"           \"ram\": 1024,"},{"line_number":219,"context_line":"           \"vcpus\": 2,"},{"line_number":220,"context_line":"           \"disk\": 10,"},{"line_number":221,"context_line":"           \"volume_backed\": True"},{"line_number":222,"context_line":"       }"},{"line_number":223,"context_line":"     }"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f4e5783_b0209a9c","line":221,"range":{"start_line":221,"start_character":11,"end_line":221,"end_character":32},"in_reply_to":"5f4e5783_03065d1e","updated":"2017-10-18 00:50:42.000000000","message":"The reason I started thinking about an enum are because of the issues pointed out in the note starting on L92. The boolean seems a bit rigid, and it\u0027s biased toward what an operator wants vs what the user wants, but an enum could potentially handle both cases (an operator that wants part of the deployment only using cinder for storage - no local disk, and a user that wants simplified boot from volume).","commit_id":"a522b5a8b35ec00b9d75744b39d9cc10ff3066e7"}]}
