)]}'
{"nova/api/openstack/compute/evacuate.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d396a0bf287a3defff241f735063fca53922c39e","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        evacuate_body \u003d body[\"evacuate\"]"},{"line_number":88,"context_line":"        host \u003d evacuate_body.get(\"host\")"},{"line_number":89,"context_line":"        force \u003d None"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        on_shared_storage \u003d self._get_on_shared_storage(req, evacuate_body)"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ff0f0b1f_ab9ff3b2","line":89,"updated":"2017-05-17 18:42:23.000000000","message":"Shouldn\u0027t this default to False because of the assumption made here:\n\nhttps://review.openstack.org/#/c/315572/12/nova/compute/api.py@3496\n\nSee https://bugs.launchpad.net/nova/+bug/1658070","commit_id":"86706785ff251b841dff3590dc60f6b4834d7b7e"}],"nova/api/openstack/compute/schemas/evacuate.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"6b6618da15dcda2bcb7d81255d9742498a39214f","unresolved":false,"context_lines":[{"line_number":39,"context_line":"del evacuate_v214[\u0027properties\u0027][\u0027evacuate\u0027][\u0027properties\u0027][\u0027onSharedStorage\u0027]"},{"line_number":40,"context_line":"del evacuate_v214[\u0027properties\u0027][\u0027evacuate\u0027][\u0027required\u0027]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"force \u003d copy.deepcopy(parameter_types.boolean)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"evacuate_v2_27 \u003d copy.deepcopy(evacuate_v214)"},{"line_number":45,"context_line":"evacuate_v214[\u0027properties\u0027][\u0027evacuate\u0027][\u0027properties\u0027][\u0027force\u0027] \u003d force"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_dc64e34a","line":42,"updated":"2016-05-18 11:00:57.000000000","message":"why are you doing a deepcopy here?","commit_id":"1fb301315286748d47fc36e2a8c27d5774285c50"}],"nova/api/openstack/compute/schemas/migrate_server.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"6b6618da15dcda2bcb7d81255d9742498a39214f","unresolved":false,"context_lines":[{"line_number":50,"context_line":"migrate_live_v2_25[\u0027properties\u0027][\u0027os-migrateLive\u0027][\u0027required\u0027] \u003d ("},{"line_number":51,"context_line":"    [\u0027block_migration\u0027, \u0027host\u0027])"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"force \u003d copy.deepcopy(parameter_types.boolean)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"migrate_live_v2_27 \u003d copy.deepcopy(migrate_live_v2_25)"},{"line_number":56,"context_line":"migrate_live_v2_27[\u0027properties\u0027][\u0027os-migrateLive\u0027][\u0027properties\u0027]["}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_5cd8f3ef","line":53,"updated":"2016-05-18 11:00:57.000000000","message":"ditto here","commit_id":"1fb301315286748d47fc36e2a8c27d5774285c50"}],"nova/api/openstack/rest_api_version_history.rst":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"7d5cea1de8b0aca414cf499c09cf3d62c760294c","unresolved":false,"context_lines":[{"line_number":289,"context_line":""},{"line_number":290,"context_line":"Updates the POST request body for the ``evacuate`` action to include the"},{"line_number":291,"context_line":"optional ``force`` boolean field defaulted to False."},{"line_number":292,"context_line":"Also changes the evacuate action behaviour when providing an ``host`` string"},{"line_number":293,"context_line":"field by calling the nova scheduler to verify the provided host unless the"},{"line_number":294,"context_line":"``force`` attribute is set."}],"source_content_type":"text/x-rst","patch_set":9,"id":"bab6814e_35e001fa","line":292,"range":{"start_line":292,"start_character":58,"end_line":292,"end_character":60},"updated":"2016-05-20 22:32:00.000000000","message":"nit: s/an/a","commit_id":"fc3401c497f552dfbe25c74d7f7211741d87d2d1"}],"nova/compute/api.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"6b6618da15dcda2bcb7d81255d9742498a39214f","unresolved":false,"context_lines":[{"line_number":3564,"context_line":"            # to call the scheduler to have the same default behaviour"},{"line_number":3565,"context_line":"            host \u003d None"},{"line_number":3566,"context_line":"        if request_spec and host and not force:"},{"line_number":3567,"context_line":"            nodes \u003d objects.ComputeNodeList.get_all_by_host(context, host)"},{"line_number":3568,"context_line":"            if not nodes:"},{"line_number":3569,"context_line":"                raise exception.ComputeHostNotFound(host\u003dhost)"},{"line_number":3570,"context_line":"            # FIXME(sbauza): Since only Ironic driver uses more than one"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_f7fe2004","line":3567,"updated":"2016-05-18 11:00:57.000000000","message":"I wonder how this works in the cells world, do we need to list the host mappings instead?","commit_id":"1fb301315286748d47fc36e2a8c27d5774285c50"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"45f69c0183da506493ff0a7b70709adf8763fee1","unresolved":false,"context_lines":[{"line_number":3564,"context_line":"            # to call the scheduler to have the same default behaviour"},{"line_number":3565,"context_line":"            host \u003d None"},{"line_number":3566,"context_line":"        if request_spec and host and not force:"},{"line_number":3567,"context_line":"            nodes \u003d objects.ComputeNodeList.get_all_by_host(context, host)"},{"line_number":3568,"context_line":"            if not nodes:"},{"line_number":3569,"context_line":"                raise exception.ComputeHostNotFound(host\u003dhost)"},{"line_number":3570,"context_line":"            # FIXME(sbauza): Since only Ironic driver uses more than one"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_dd491eb9","line":3567,"in_reply_to":"bab6814e_1a5e1612","updated":"2016-05-25 16:30:51.000000000","message":"I agree with doing a check in order to provide the quick error response to the user.\n\nWith cells this doesn\u0027t quite accomplish that afaict but shouldn\u0027t harm anything. Cells doesn\u0027t run this method in nova-api, it will run it in the child nova-cells service. RequestSpec objects do not exist in the db at that point so request_spec will be None and this check will be skipped.\n\nSo cells don\u0027t get the nice API feedback, but don\u0027t break either.","commit_id":"1fb301315286748d47fc36e2a8c27d5774285c50"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"c3b765ca38ef43625afc93d1aa51aa4e267ce83c","unresolved":false,"context_lines":[{"line_number":3564,"context_line":"            # to call the scheduler to have the same default behaviour"},{"line_number":3565,"context_line":"            host \u003d None"},{"line_number":3566,"context_line":"        if request_spec and host and not force:"},{"line_number":3567,"context_line":"            nodes \u003d objects.ComputeNodeList.get_all_by_host(context, host)"},{"line_number":3568,"context_line":"            if not nodes:"},{"line_number":3569,"context_line":"                raise exception.ComputeHostNotFound(host\u003dhost)"},{"line_number":3570,"context_line":"            # FIXME(sbauza): Since only Ironic driver uses more than one"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_1a5e1612","line":3567,"in_reply_to":"bab6814e_d3b030e0","updated":"2016-05-25 13:57:33.000000000","message":"Ok, if alaski says it works, that cool with me.","commit_id":"1fb301315286748d47fc36e2a8c27d5774285c50"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1187db29d9d345c615bc3cb462723dff229bfaca","unresolved":false,"context_lines":[{"line_number":3564,"context_line":"            # to call the scheduler to have the same default behaviour"},{"line_number":3565,"context_line":"            host \u003d None"},{"line_number":3566,"context_line":"        if request_spec and host and not force:"},{"line_number":3567,"context_line":"            nodes \u003d objects.ComputeNodeList.get_all_by_host(context, host)"},{"line_number":3568,"context_line":"            if not nodes:"},{"line_number":3569,"context_line":"                raise exception.ComputeHostNotFound(host\u003dhost)"},{"line_number":3570,"context_line":"            # FIXME(sbauza): Since only Ironic driver uses more than one"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_445e6c46","line":3567,"in_reply_to":"bab6814e_dd491eb9","updated":"2016-05-27 09:09:30.000000000","message":"agreed with cells v1, I was worried with cells v2 if we should really be using the host mappings, but this seems OK for now.","commit_id":"1fb301315286748d47fc36e2a8c27d5774285c50"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"28c320c3ac26a56f5727e7508e6a21a2e852c5f5","unresolved":false,"context_lines":[{"line_number":3564,"context_line":"            # to call the scheduler to have the same default behaviour"},{"line_number":3565,"context_line":"            host \u003d None"},{"line_number":3566,"context_line":"        if request_spec and host and not force:"},{"line_number":3567,"context_line":"            nodes \u003d objects.ComputeNodeList.get_all_by_host(context, host)"},{"line_number":3568,"context_line":"            if not nodes:"},{"line_number":3569,"context_line":"                raise exception.ComputeHostNotFound(host\u003dhost)"},{"line_number":3570,"context_line":"            # FIXME(sbauza): Since only Ironic driver uses more than one"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_d3b030e0","line":3567,"in_reply_to":"bab6814e_f7fe2004","updated":"2016-05-18 19:34:56.000000000","message":"It\u0027s a top/down call so that\u0027s still okay. After discussing with Alaski in IRC, we agreed to leave that one in order to very quickly provide a 404 if the user provides a bad host.","commit_id":"1fb301315286748d47fc36e2a8c27d5774285c50"}],"releasenotes/notes/check_destination_when_evacuating-37b52ebe8b5b086c.yaml":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"7d5cea1de8b0aca414cf499c09cf3d62c760294c","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    In case the administrator doesn\u0027t want to call the scheduler when providing"},{"line_number":9,"context_line":"    a destination, a new request body field called ``force`` (defaulted to"},{"line_number":10,"context_line":"    False) will modify that new behaviour by forcing the evacuate operation"},{"line_number":11,"context_line":"    to the destination without verifying the scheduler."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"bab6814e_f57f99dd","line":11,"range":{"start_line":11,"start_character":31,"end_line":11,"end_character":54},"updated":"2016-05-20 22:32:00.000000000","message":"the scheduler verifying the host","commit_id":"fc3401c497f552dfbe25c74d7f7211741d87d2d1"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"8650ba3aa62c6f674750c04285ed5eaa192abfab","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - On evacuate actions, the default behaviour when providing an host in"},{"line_number":4,"context_line":"    the request body changed. Now, instead of bypassing the scheduler when"},{"line_number":5,"context_line":"    asking for a destination, it will instead call it with the requested"},{"line_number":6,"context_line":"    destination to make sure the proposed host is accepted by all the filters"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"bab6814e_f9d6bdef","line":3,"range":{"start_line":3,"start_character":62,"end_line":3,"end_character":64},"updated":"2016-05-25 14:54:22.000000000","message":"Nit: a host","commit_id":"353bcb9bc4114e203bb0df3fdf835cba98873d01"}]}
