)]}'
{"nova/compute/api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a86cfe490825c0324efa5b6c5941beee5ace338f","unresolved":false,"context_lines":[{"line_number":2774,"context_line":"            if bdm.volume_id:"},{"line_number":2775,"context_line":"                vol \u003d self.volume_api.get(context, bdm.volume_id)"},{"line_number":2776,"context_line":"                self.volume_api.check_attached(context, vol)"},{"line_number":2777,"context_line":"        if compute_utils.is_volume_backed_instance(context, instance, bdms):"},{"line_number":2778,"context_line":"            reason \u003d _(\"Cannot rescue a volume-backed instance\")"},{"line_number":2779,"context_line":"            raise exception.InstanceNotRescuable(instance_id\u003dinstance.uuid,"},{"line_number":2780,"context_line":"                                                 reason\u003dreason)"}],"source_content_type":"text/x-python","patch_set":16,"id":"3aaa91ec_03edfdb6","side":"PARENT","line":2777,"updated":"2016-06-29 14:19:09.000000000","message":"We\u0027re going to need to replace this with a compute service version bump and pin in the API until the minimum compute version in the deployment is running the new code to support this. See what we\u0027re doing for device tagging and get-me-a-network, it\u0027s the same idea.","commit_id":"fd3836b615de0fcf388ec2496757f4cfc7eebd6d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"efade7b2fc0b80a5eb3d12eebcd06ebfbcd4d974","unresolved":false,"context_lines":[{"line_number":2774,"context_line":"            if bdm.volume_id:"},{"line_number":2775,"context_line":"                vol \u003d self.volume_api.get(context, bdm.volume_id)"},{"line_number":2776,"context_line":"                self.volume_api.check_attached(context, vol)"},{"line_number":2777,"context_line":"        if compute_utils.is_volume_backed_instance(context, instance, bdms):"},{"line_number":2778,"context_line":"            reason \u003d _(\"Cannot rescue a volume-backed instance\")"},{"line_number":2779,"context_line":"            raise exception.InstanceNotRescuable(instance_id\u003dinstance.uuid,"},{"line_number":2780,"context_line":"                                                 reason\u003dreason)"}],"source_content_type":"text/x-python","patch_set":16,"id":"3aaa91ec_37478fbd","side":"PARENT","line":2777,"in_reply_to":"3aaa91ec_03edfdb6","updated":"2016-06-29 15:14:05.000000000","message":"Honestly I think we need a microversion change in the API for this capability, this is really a behavior change in the API.\n\nAs a user, how do I know when I can reasonably expect to request a rescue of a volume-backed instance w/o a microversion? It\u0027s the same idea as knowing when I can tag devices, or request automatic network allocation.","commit_id":"fd3836b615de0fcf388ec2496757f4cfc7eebd6d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"91a35f66ef68fa68a00da09112ebb8336a5e628d","unresolved":false,"context_lines":[{"line_number":2774,"context_line":"            if bdm.volume_id:"},{"line_number":2775,"context_line":"                vol \u003d self.volume_api.get(context, bdm.volume_id)"},{"line_number":2776,"context_line":"                self.volume_api.check_attached(context, vol)"},{"line_number":2777,"context_line":"        if compute_utils.is_volume_backed_instance(context, instance, bdms):"},{"line_number":2778,"context_line":"            reason \u003d _(\"Cannot rescue a volume-backed instance\")"},{"line_number":2779,"context_line":"            raise exception.InstanceNotRescuable(instance_id\u003dinstance.uuid,"},{"line_number":2780,"context_line":"                                                 reason\u003dreason)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_9d1a616d","side":"PARENT","line":2777,"updated":"2016-07-02 22:20:25.000000000","message":"You\u0027d need to move this to the REST API I think, but you probably don\u0027t have the BDMs there, so you\u0027d have to move that also and probably change the method signature in nova.compute.api.API to take those BDMs (so we don\u0027t have to look them up more than once in the API). Then I think we\u0027d have a microversion to signal that you can start requesting rescue of volume-backed instances (it\u0027s just a signal, there is no schema change in the request/response). But if that microversion is request and it is a volume-backed instance AND the minimum nova-compute service version in the deployment is the version you changed in this patch, then you\u0027d allow it to continue to the compute.\n\nActually, the rescue is going to the compute that\u0027s hosting the instance, so we\u0027d probably just check the nova-compute service version of the service on that host (from instance.host), and if that supports this then we can continue, else we have to fail.\n\nI\u0027m not totally sure if we need a microversion in that case, but it seems more correct to signal that you can even start requesting this and potentially expect it to work - which is the point of the microversion signal. If there are questions about this or I\u0027m not thinking through it clearly we should discuss in the mailing list so others can chime in on anything I\u0027m not thinking of.\n\nI\u0027d also probably leave compute API restriction in this patch and then remove it in the same patch that moves this stuff and does the check in the REST API so it\u0027s cleanly separated.","commit_id":"0b8789e2df4fea9caff3ec7cdfe7bede3c7d467a"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"035ff7af7873ccfc44e7c0824a46a7b82bdad46e","unresolved":false,"context_lines":[{"line_number":2774,"context_line":"            if bdm.volume_id:"},{"line_number":2775,"context_line":"                vol \u003d self.volume_api.get(context, bdm.volume_id)"},{"line_number":2776,"context_line":"                self.volume_api.check_attached(context, vol)"},{"line_number":2777,"context_line":"        if compute_utils.is_volume_backed_instance(context, instance, bdms):"},{"line_number":2778,"context_line":"            reason \u003d _(\"Cannot rescue a volume-backed instance\")"},{"line_number":2779,"context_line":"            raise exception.InstanceNotRescuable(instance_id\u003dinstance.uuid,"},{"line_number":2780,"context_line":"                                                 reason\u003dreason)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_0929e537","side":"PARENT","line":2777,"in_reply_to":"1aa78d24_9d1a616d","updated":"2016-07-08 23:39:43.000000000","message":"Just curious about the microversion aspect there. In this case the rescue API contract with the client would not change at all so I wouldn\u0027t think a microversion bump is needed. So it is true that to the client, driver-supported BFV instances would no longer be rejected as before. However, this seems similar to if a cloud provider adds more flavors to their data center, so now instance create requests that were failing before might now succeed due to the new deployed capabilities. In either of these cases a microversion bump doesn\u0027t seem to be required.","commit_id":"0b8789e2df4fea9caff3ec7cdfe7bede3c7d467a"},{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"035ff7af7873ccfc44e7c0824a46a7b82bdad46e","unresolved":false,"context_lines":[{"line_number":2775,"context_line":"                vol \u003d self.volume_api.get(context, bdm.volume_id)"},{"line_number":2776,"context_line":"                self.volume_api.check_attached(context, vol)"},{"line_number":2777,"context_line":"        if compute_utils.is_volume_backed_instance(context, instance, bdms):"},{"line_number":2778,"context_line":"            reason \u003d _(\"Cannot rescue a volume-backed instance\")"},{"line_number":2779,"context_line":"            raise exception.InstanceNotRescuable(instance_id\u003dinstance.uuid,"},{"line_number":2780,"context_line":"                                                 reason\u003dreason)"},{"line_number":2781,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_a9f1b1cf","side":"PARENT","line":2778,"updated":"2016-07-08 23:39:43.000000000","message":"+1 that the REST API should give an immediate response back if BFV rescues are not supported.","commit_id":"0b8789e2df4fea9caff3ec7cdfe7bede3c7d467a"}],"nova/compute/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"91a35f66ef68fa68a00da09112ebb8336a5e628d","unresolved":false,"context_lines":[{"line_number":3263,"context_line":"        block_device_info \u003d self._get_instance_block_device_info("},{"line_number":3264,"context_line":"                                context, instance, bdms\u003dbdms)"},{"line_number":3265,"context_line":"        if compute_utils.is_volume_backed_instance(context, instance, bdms):"},{"line_number":3266,"context_line":"            if not self.driver.capabilities[\u0027supports_stable_rescue\u0027]:"},{"line_number":3267,"context_line":"                reason \u003d _(\"Driver not capable of rescuing volume backed \""},{"line_number":3268,"context_line":"                           \"instances\")"},{"line_number":3269,"context_line":"                raise exception.InstanceNotRescuable(instance_id\u003dinstance.uuid,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_79034a10","line":3266,"range":{"start_line":3266,"start_character":31,"end_line":3266,"end_character":69},"updated":"2016-07-02 22:20:25.000000000","message":"Use .get() in case a driver doesn\u0027t override and set this in it\u0027s capabilities to avoid a KeyError.","commit_id":"4bb44a6658c37e6ff682dc5faed39927a7569b17"}],"nova/virt/hyperv/vmops.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"b4ae1738eba3354e5f2a1544967f58951bf692d1","unresolved":false,"context_lines":[{"line_number":749,"context_line":"        if compute_utils.is_volume_backed_instance(context, instance):"},{"line_number":750,"context_line":"            reason \u003d _(\"Cannot rescue a volume-backed instance\")"},{"line_number":751,"context_line":"            raise exception.InstanceNotRescuable(instance_id\u003dinstance.uuid,"},{"line_number":752,"context_line":"                                                 reason\u003dreason)"},{"line_number":753,"context_line":""},{"line_number":754,"context_line":"        rescue_image_id \u003d image_meta.id or instance.image_ref"},{"line_number":755,"context_line":"        rescue_vhd_path \u003d self._create_root_vhd("}],"source_content_type":"text/x-python","patch_set":11,"id":"7aa08908_9798d9c1","line":752,"updated":"2016-06-08 09:41:17.000000000","message":"I think you need this check in the rescue_instance method instead. By putting it in _rescue_instance, you\u0027re going to cause the caller to run the self.unrescue_instance code which I don\u0027t believe is desired, since we\u0027ve not even started to rescue it at this point.","commit_id":"112f7798f0e85b45c61fac996fd104802bc5c070"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"23ee824531fd12cfa3c22beb61993685f6cac058","unresolved":false,"context_lines":[{"line_number":733,"context_line":"    def rescue_instance(self, context, instance, network_info, image_meta,"},{"line_number":734,"context_line":"                        rescue_password):"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"        if compute_utils.is_volume_backed_instance(context, instance):"},{"line_number":737,"context_line":"            reason \u003d _(\"Cannot rescue a volume-backed instance\")"},{"line_number":738,"context_line":"            raise exception.InstanceNotRescuable(instance_id\u003dinstance.uuid,"},{"line_number":739,"context_line":"                                                 reason\u003dreason)"}],"source_content_type":"text/x-python","patch_set":16,"id":"3aaa91ec_c375b5cb","line":736,"updated":"2016-06-29 14:22:58.000000000","message":"We should have a virt driver capability, like in the device tagging series, and check that in the compute manager and fail when asked to rescue a volume-backed instance and the virt driver doesn\u0027t support that capability - we shouldn\u0027t check this in every compute driver that doesn\u0027t support it individually.","commit_id":"7a1180383ddbb663cf161f6aa949d9837fc45a4e"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"91a35f66ef68fa68a00da09112ebb8336a5e628d","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        \"supports_migrate_to_same_host\": False,"},{"line_number":327,"context_line":"        \"supports_attach_interface\": True,"},{"line_number":328,"context_line":"        \"supports_device_tagging\": True,"},{"line_number":329,"context_line":"        \"supports_stable_rescue\": False"},{"line_number":330,"context_line":"    }"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def __init__(self, virtapi, read_only\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_dd03490c","line":329,"updated":"2016-07-02 22:20:25.000000000","message":"Isn\u0027t this true for libvirt?","commit_id":"4bb44a6658c37e6ff682dc5faed39927a7569b17"}]}
