)]}'
{"specs/train/approved/server-move-operations-with-ports-having-resource-request.rst":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"e5b59934c12541f1a7515bce25155305b8add64f","unresolved":false,"context_lines":[{"line_number":14,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Since `microversion 2.72`_ nova supports creating servers with neutron ports"},{"line_number":17,"context_line":"having resource request. However moving such servers are not possible due to"},{"line_number":18,"context_line":"missing resource handling implementation in nova."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_6a875b11","line":17,"range":{"start_line":17,"start_character":53,"end_line":17,"end_character":56},"updated":"2019-04-15 11:04:33.000000000","message":"nit: is","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c08afc5150d1d1c72fc36a4ca643740c5eae8c07","unresolved":false,"context_lines":[{"line_number":14,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Since `microversion 2.72`_ nova supports creating servers with neutron ports"},{"line_number":17,"context_line":"having resource request. However moving such servers are not possible due to"},{"line_number":18,"context_line":"missing resource handling implementation in nova."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_2d840db1","line":17,"range":{"start_line":17,"start_character":53,"end_line":17,"end_character":56},"in_reply_to":"3fce034c_6a875b11","updated":"2019-04-15 12:15:12.000000000","message":"Done","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"e5b59934c12541f1a7515bce25155305b8add64f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"including the request groups from the ``requested_resources`` field as well."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"However this field is not persisted to the database intentionally as the port"},{"line_number":37,"context_line":"resource request are owned and persisted by neutron. So during any operation"},{"line_number":38,"context_line":"that creates a new allocation of an existing server the port resource"},{"line_number":39,"context_line":"request needs to be queried from neutron and the ``requested_resources`` needs"},{"line_number":40,"context_line":"to be populated in the ``RequestSpec`` before the new allocation candidate"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_ca776f3a","line":37,"range":{"start_line":37,"start_character":17,"end_line":37,"end_character":20},"updated":"2019-04-15 11:04:33.000000000","message":"nit: is","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c08afc5150d1d1c72fc36a4ca643740c5eae8c07","unresolved":false,"context_lines":[{"line_number":34,"context_line":"including the request groups from the ``requested_resources`` field as well."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"However this field is not persisted to the database intentionally as the port"},{"line_number":37,"context_line":"resource request are owned and persisted by neutron. So during any operation"},{"line_number":38,"context_line":"that creates a new allocation of an existing server the port resource"},{"line_number":39,"context_line":"request needs to be queried from neutron and the ``requested_resources`` needs"},{"line_number":40,"context_line":"to be populated in the ``RequestSpec`` before the new allocation candidate"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_ed8da5d3","line":37,"range":{"start_line":37,"start_character":17,"end_line":37,"end_character":20},"in_reply_to":"3fce034c_ca776f3a","updated":"2019-04-15 12:15:12.000000000","message":"Done","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"e5b59934c12541f1a7515bce25155305b8add64f","unresolved":false,"context_lines":[{"line_number":41,"context_line":"query is sent to placement."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"After the new allocation is created in placement the ``allocation`` key in the"},{"line_number":44,"context_line":"``binding:profile`` of the neutron ports needs to be update to point to the"},{"line_number":45,"context_line":"new resource providers providing the resources for the port. To figure out"},{"line_number":46,"context_line":"which resource provider fulfills which port\u0027s resource request in a given"},{"line_number":47,"context_line":"allocation the already introduced mapping code can be reused."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_0a601701","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":59},"updated":"2019-04-15 11:04:33.000000000","message":"Shall we use the multiple bindings API (at least for live-migrate) and allow two allocations to co-exist temporarily?","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"e5b59934c12541f1a7515bce25155305b8add64f","unresolved":false,"context_lines":[{"line_number":41,"context_line":"query is sent to placement."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"After the new allocation is created in placement the ``allocation`` key in the"},{"line_number":44,"context_line":"``binding:profile`` of the neutron ports needs to be update to point to the"},{"line_number":45,"context_line":"new resource providers providing the resources for the port. To figure out"},{"line_number":46,"context_line":"which resource provider fulfills which port\u0027s resource request in a given"},{"line_number":47,"context_line":"allocation the already introduced mapping code can be reused."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_0aa337a0","line":44,"range":{"start_line":44,"start_character":35,"end_line":44,"end_character":40},"updated":"2019-04-15 11:04:33.000000000","message":"nit: port","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"e5b59934c12541f1a7515bce25155305b8add64f","unresolved":false,"context_lines":[{"line_number":41,"context_line":"query is sent to placement."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"After the new allocation is created in placement the ``allocation`` key in the"},{"line_number":44,"context_line":"``binding:profile`` of the neutron ports needs to be update to point to the"},{"line_number":45,"context_line":"new resource providers providing the resources for the port. To figure out"},{"line_number":46,"context_line":"which resource provider fulfills which port\u0027s resource request in a given"},{"line_number":47,"context_line":"allocation the already introduced mapping code can be reused."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_eaa7cba6","line":44,"range":{"start_line":44,"start_character":53,"end_line":44,"end_character":59},"updated":"2019-04-15 11:04:33.000000000","message":"nit: updated","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c08afc5150d1d1c72fc36a4ca643740c5eae8c07","unresolved":false,"context_lines":[{"line_number":41,"context_line":"query is sent to placement."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"After the new allocation is created in placement the ``allocation`` key in the"},{"line_number":44,"context_line":"``binding:profile`` of the neutron ports needs to be update to point to the"},{"line_number":45,"context_line":"new resource providers providing the resources for the port. To figure out"},{"line_number":46,"context_line":"which resource provider fulfills which port\u0027s resource request in a given"},{"line_number":47,"context_line":"allocation the already introduced mapping code can be reused."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_0d603101","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":59},"in_reply_to":"3fce034c_0a601701","updated":"2019-04-15 12:15:12.000000000","message":"Good point. Added extra info about live-migration.","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c08afc5150d1d1c72fc36a4ca643740c5eae8c07","unresolved":false,"context_lines":[{"line_number":41,"context_line":"query is sent to placement."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"After the new allocation is created in placement the ``allocation`` key in the"},{"line_number":44,"context_line":"``binding:profile`` of the neutron ports needs to be update to point to the"},{"line_number":45,"context_line":"new resource providers providing the resources for the port. To figure out"},{"line_number":46,"context_line":"which resource provider fulfills which port\u0027s resource request in a given"},{"line_number":47,"context_line":"allocation the already introduced mapping code can be reused."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_4d3b99ea","line":44,"range":{"start_line":44,"start_character":35,"end_line":44,"end_character":40},"in_reply_to":"3fce034c_0aa337a0","updated":"2019-04-15 12:15:12.000000000","message":"Done","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c08afc5150d1d1c72fc36a4ca643740c5eae8c07","unresolved":false,"context_lines":[{"line_number":41,"context_line":"query is sent to placement."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"After the new allocation is created in placement the ``allocation`` key in the"},{"line_number":44,"context_line":"``binding:profile`` of the neutron ports needs to be update to point to the"},{"line_number":45,"context_line":"new resource providers providing the resources for the port. To figure out"},{"line_number":46,"context_line":"which resource provider fulfills which port\u0027s resource request in a given"},{"line_number":47,"context_line":"allocation the already introduced mapping code can be reused."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_0d2591c2","line":44,"range":{"start_line":44,"start_character":53,"end_line":44,"end_character":59},"in_reply_to":"3fce034c_eaa7cba6","updated":"2019-04-15 12:15:12.000000000","message":"Done","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"e5b59934c12541f1a7515bce25155305b8add64f","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"After the new allocation is created in placement the ``allocation`` key in the"},{"line_number":44,"context_line":"``binding:profile`` of the neutron ports needs to be update to point to the"},{"line_number":45,"context_line":"new resource providers providing the resources for the port. To figure out"},{"line_number":46,"context_line":"which resource provider fulfills which port\u0027s resource request in a given"},{"line_number":47,"context_line":"allocation the already introduced mapping code can be reused."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_aa98e31a","line":45,"range":{"start_line":45,"start_character":13,"end_line":45,"end_character":22},"updated":"2019-04-15 11:04:33.000000000","message":"provider","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c08afc5150d1d1c72fc36a4ca643740c5eae8c07","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"After the new allocation is created in placement the ``allocation`` key in the"},{"line_number":44,"context_line":"``binding:profile`` of the neutron ports needs to be update to point to the"},{"line_number":45,"context_line":"new resource providers providing the resources for the port. To figure out"},{"line_number":46,"context_line":"which resource provider fulfills which port\u0027s resource request in a given"},{"line_number":47,"context_line":"allocation the already introduced mapping code can be reused."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_2d208db0","line":45,"range":{"start_line":45,"start_character":13,"end_line":45,"end_character":22},"in_reply_to":"3fce034c_aa98e31a","updated":"2019-04-15 12:15:12.000000000","message":"Done","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"e5b59934c12541f1a7515bce25155305b8add64f","unresolved":false,"context_lines":[{"line_number":79,"context_line":"* Introduce a new microversion. If the move operations are requested with an"},{"line_number":80,"context_line":"  older microversion for these servers then the request is rejected in the same"},{"line_number":81,"context_line":"  way as today. If the move operation is requested with the new (or newer)"},{"line_number":82,"context_line":"  microversion the the operation is accepted and handled properly."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"* Consider the missing support for these operations as bugs. Implement the"},{"line_number":85,"context_line":"  above proposed changes as bugfixes without any new microversion. After the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_8abe4763","line":82,"range":{"start_line":82,"start_character":23,"end_line":82,"end_character":32},"updated":"2019-04-15 11:04:33.000000000","message":"nit: request","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c08afc5150d1d1c72fc36a4ca643740c5eae8c07","unresolved":false,"context_lines":[{"line_number":79,"context_line":"* Introduce a new microversion. If the move operations are requested with an"},{"line_number":80,"context_line":"  older microversion for these servers then the request is rejected in the same"},{"line_number":81,"context_line":"  way as today. If the move operation is requested with the new (or newer)"},{"line_number":82,"context_line":"  microversion the the operation is accepted and handled properly."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"* Consider the missing support for these operations as bugs. Implement the"},{"line_number":85,"context_line":"  above proposed changes as bugfixes without any new microversion. After the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_ad1d5d74","line":82,"range":{"start_line":82,"start_character":23,"end_line":82,"end_character":32},"in_reply_to":"3fce034c_8abe4763","updated":"2019-04-15 12:15:12.000000000","message":"Done","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"e5b59934c12541f1a7515bce25155305b8add64f","unresolved":false,"context_lines":[{"line_number":81,"context_line":"  way as today. If the move operation is requested with the new (or newer)"},{"line_number":82,"context_line":"  microversion the the operation is accepted and handled properly."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"* Consider the missing support for these operations as bugs. Implement the"},{"line_number":85,"context_line":"  above proposed changes as bugfixes without any new microversion. After the"},{"line_number":86,"context_line":"  implementation is done requesting such move operations with older than"},{"line_number":87,"context_line":"  `microversion 2.72`_ is still rejected (as well as creating servers) but"},{"line_number":88,"context_line":"  requesting a move operation with bigger than `microversion 2.72`_ is accepted"},{"line_number":89,"context_line":"  and handled properly."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"For background about these options see the `ML thread`_"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_ead58be6","line":89,"range":{"start_line":84,"start_character":0,"end_line":89,"end_character":23},"updated":"2019-04-15 11:04:33.000000000","message":"This would practically mean the API changes its behavior without a way to discover which behavior to expect, right?\n\nIf that\u0027s the case I prefer the other option.","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c08afc5150d1d1c72fc36a4ca643740c5eae8c07","unresolved":false,"context_lines":[{"line_number":81,"context_line":"  way as today. If the move operation is requested with the new (or newer)"},{"line_number":82,"context_line":"  microversion the the operation is accepted and handled properly."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"* Consider the missing support for these operations as bugs. Implement the"},{"line_number":85,"context_line":"  above proposed changes as bugfixes without any new microversion. After the"},{"line_number":86,"context_line":"  implementation is done requesting such move operations with older than"},{"line_number":87,"context_line":"  `microversion 2.72`_ is still rejected (as well as creating servers) but"},{"line_number":88,"context_line":"  requesting a move operation with bigger than `microversion 2.72`_ is accepted"},{"line_number":89,"context_line":"  and handled properly."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"For background about these options see the `ML thread`_"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_98ff7d00","line":89,"range":{"start_line":84,"start_character":0,"end_line":89,"end_character":23},"in_reply_to":"3fce034c_ead58be6","updated":"2019-04-15 12:15:12.000000000","message":"yeah, like you don\u0027t have a way to discover when API bugfixes are implemented.","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"e5b59934c12541f1a7515bce25155305b8add64f","unresolved":false,"context_lines":[{"line_number":109,"context_line":"Performance Impact"},{"line_number":110,"context_line":"------------------"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"During move operations the conductor needs to query neutron to get the"},{"line_number":113,"context_line":"resource request of the ports that are attached to the server. Also, after the"},{"line_number":114,"context_line":"scheduling the request group - resource provider mapping needs to be"},{"line_number":115,"context_line":"recalculated and the binding:profile of the ports needs to be updated in"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_4a005f68","line":112,"range":{"start_line":112,"start_character":27,"end_line":112,"end_character":36},"updated":"2019-04-15 11:04:33.000000000","message":"Is it the conductor today that queries resource_request in the first place?","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"e5b59934c12541f1a7515bce25155305b8add64f","unresolved":false,"context_lines":[{"line_number":112,"context_line":"During move operations the conductor needs to query neutron to get the"},{"line_number":113,"context_line":"resource request of the ports that are attached to the server. Also, after the"},{"line_number":114,"context_line":"scheduling the request group - resource provider mapping needs to be"},{"line_number":115,"context_line":"recalculated and the binding:profile of the ports needs to be updated in"},{"line_number":116,"context_line":"neutron."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Other deployer impact"},{"line_number":119,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_eaeeebb2","line":116,"range":{"start_line":115,"start_character":21,"end_line":116,"end_character":7},"updated":"2019-04-15 11:04:33.000000000","message":"How do we guarantee this will always be treated as a re-bind in neutron when resizing to the same host? (I\u0027m aware this question will likely fall back on me. :-)","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"e5b59934c12541f1a7515bce25155305b8add64f","unresolved":false,"context_lines":[{"line_number":128,"context_line":"Upgrade impact"},{"line_number":129,"context_line":"--------------"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"The support for move operations make it possible to heal missing or"},{"line_number":132,"context_line":"inconsistent port allocation as during the move the requested resources are"},{"line_number":133,"context_line":"re-calculated and the new allocation created accordingly in placement."},{"line_number":134,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_ca21affd","line":131,"range":{"start_line":131,"start_character":32,"end_line":131,"end_character":36},"updated":"2019-04-15 11:04:33.000000000","message":"nit: makes","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c08afc5150d1d1c72fc36a4ca643740c5eae8c07","unresolved":false,"context_lines":[{"line_number":128,"context_line":"Upgrade impact"},{"line_number":129,"context_line":"--------------"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"The support for move operations make it possible to heal missing or"},{"line_number":132,"context_line":"inconsistent port allocation as during the move the requested resources are"},{"line_number":133,"context_line":"re-calculated and the new allocation created accordingly in placement."},{"line_number":134,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_5809152a","line":131,"range":{"start_line":131,"start_character":32,"end_line":131,"end_character":36},"in_reply_to":"3fce034c_ca21affd","updated":"2019-04-15 12:15:12.000000000","message":"Done","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"e5b59934c12541f1a7515bce25155305b8add64f","unresolved":false,"context_lines":[{"line_number":128,"context_line":"Upgrade impact"},{"line_number":129,"context_line":"--------------"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"The support for move operations make it possible to heal missing or"},{"line_number":132,"context_line":"inconsistent port allocation as during the move the requested resources are"},{"line_number":133,"context_line":"re-calculated and the new allocation created accordingly in placement."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Implementation"},{"line_number":136,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_0a56d75d","line":133,"range":{"start_line":131,"start_character":0,"end_line":133,"end_character":70},"updated":"2019-04-15 11:04:33.000000000","message":"If I were an operator I\u0027d be interested in the question: How do I minimimize the number of move operations needed to heal all allocations?","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c08afc5150d1d1c72fc36a4ca643740c5eae8c07","unresolved":false,"context_lines":[{"line_number":128,"context_line":"Upgrade impact"},{"line_number":129,"context_line":"--------------"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"The support for move operations make it possible to heal missing or"},{"line_number":132,"context_line":"inconsistent port allocation as during the move the requested resources are"},{"line_number":133,"context_line":"re-calculated and the new allocation created accordingly in placement."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Implementation"},{"line_number":136,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_186aadb2","line":133,"range":{"start_line":131,"start_character":0,"end_line":133,"end_character":70},"in_reply_to":"3fce034c_0a56d75d","updated":"2019-04-15 12:15:12.000000000","message":"Extended this section.","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"e5b59934c12541f1a7515bce25155305b8add64f","unresolved":false,"context_lines":[{"line_number":157,"context_line":"Testing"},{"line_number":158,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"Each move operation will have a functional test asserting that the proper"},{"line_number":161,"context_line":"allocation exists after the move."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Documentation Impact"},{"line_number":164,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_6a175b53","line":161,"range":{"start_line":160,"start_character":0,"end_line":161,"end_character":33},"updated":"2019-04-15 11:04:33.000000000","message":"... and the previous allocation was freed.\n\n... and the neutron port was updated accordingly.","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c08afc5150d1d1c72fc36a4ca643740c5eae8c07","unresolved":false,"context_lines":[{"line_number":157,"context_line":"Testing"},{"line_number":158,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"Each move operation will have a functional test asserting that the proper"},{"line_number":161,"context_line":"allocation exists after the move."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Documentation Impact"},{"line_number":164,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_18af0de4","line":161,"range":{"start_line":160,"start_character":0,"end_line":161,"end_character":33},"in_reply_to":"3fce034c_6a175b53","updated":"2019-04-15 12:15:12.000000000","message":"Done","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"e5b59934c12541f1a7515bce25155305b8add64f","unresolved":false,"context_lines":[{"line_number":173,"context_line":"* The documentation of `microversion 2.72`_ introducing the support for"},{"line_number":174,"context_line":"  creating such servers."},{"line_number":175,"context_line":"* The nova API guide for the existing feature: `Using ports with resource request`_"},{"line_number":176,"context_line":"* The neutron admin guide for this feature `Quality of Service Guaranteed Minimum Bandwidth`_"},{"line_number":177,"context_line":"* `ML thread`_ about the possible options for the API impact."},{"line_number":178,"context_line":""},{"line_number":179,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_8dff4100","line":176,"range":{"start_line":176,"start_character":0,"end_line":176,"end_character":93},"updated":"2019-04-15 11:04:33.000000000","message":"I\u0027ll happily update the networking guide if you remind me when this is done.","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c08afc5150d1d1c72fc36a4ca643740c5eae8c07","unresolved":false,"context_lines":[{"line_number":173,"context_line":"* The documentation of `microversion 2.72`_ introducing the support for"},{"line_number":174,"context_line":"  creating such servers."},{"line_number":175,"context_line":"* The nova API guide for the existing feature: `Using ports with resource request`_"},{"line_number":176,"context_line":"* The neutron admin guide for this feature `Quality of Service Guaranteed Minimum Bandwidth`_"},{"line_number":177,"context_line":"* `ML thread`_ about the possible options for the API impact."},{"line_number":178,"context_line":""},{"line_number":179,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fce034c_98845d60","line":176,"range":{"start_line":176,"start_character":0,"end_line":176,"end_character":93},"in_reply_to":"3fce034c_8dff4100","updated":"2019-04-15 12:15:12.000000000","message":"Thanks. I added a note to the Documentation section about it.","commit_id":"2f80f2a487341b8b2c9ebc5ed2ea11a63077c1ef"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6fa60c0291a7115ee55e5881da687499320acaa0","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Server move operations with ports having resource request"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/support-server-move-operations-with-ports-having-resource-request"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Problem description"},{"line_number":14,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_ee5c9f7f","line":11,"range":{"start_line":11,"start_character":44,"end_line":11,"end_character":109},"updated":"2019-04-16 17:06:19.000000000","message":"The spec filename needs to match the blueprint name.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"27af947f5806e6d04cbde6822dd3b595d6145e06","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Server move operations with ports having resource request"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/support-server-move-operations-with-ports-having-resource-request"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Problem description"},{"line_number":14,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffb9cba7_f100fe69","line":11,"range":{"start_line":11,"start_character":44,"end_line":11,"end_character":109},"in_reply_to":"3fce034c_ee5c9f7f","updated":"2019-04-25 13:31:56.000000000","message":"Done","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6fa60c0291a7115ee55e5881da687499320acaa0","unresolved":false,"context_lines":[{"line_number":57,"context_line":"The generic steps are:"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* the server move request reaches the conductor"},{"line_number":60,"context_line":"* the conductor calls query the ports from neutron that are bound to the"},{"line_number":61,"context_line":"  server"},{"line_number":62,"context_line":"* the conductor updates the ``RequestSpec.requested_resources`` field based"},{"line_number":63,"context_line":"  on the resource request of the ports"},{"line_number":64,"context_line":"* the conductor requests select_destination from the scheduler"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_8ee07b98","line":61,"range":{"start_line":60,"start_character":0,"end_line":61,"end_character":8},"updated":"2019-04-16 17:06:19.000000000","message":"An implementation detail, but could we avoid the neutron API call if we can determine up-front that the instance doesn\u0027t have ports with resource requests by checking the binding:profile in the instance network info cache to see if it has an \u0027allocation\u0027 set and if not, assume we don\u0027t need to do anything during the move.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6cbb9930269366fa0b36152c5ed8202fa9c5e65","unresolved":false,"context_lines":[{"line_number":57,"context_line":"The generic steps are:"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* the server move request reaches the conductor"},{"line_number":60,"context_line":"* the conductor calls query the ports from neutron that are bound to the"},{"line_number":61,"context_line":"  server"},{"line_number":62,"context_line":"* the conductor updates the ``RequestSpec.requested_resources`` field based"},{"line_number":63,"context_line":"  on the resource request of the ports"},{"line_number":64,"context_line":"* the conductor requests select_destination from the scheduler"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_511be4ce","line":61,"range":{"start_line":60,"start_character":0,"end_line":61,"end_character":8},"in_reply_to":"3fce034c_491d9bbb","updated":"2019-04-18 14:10:53.000000000","message":"Hmm, that kind of sucks. Why is that the _heal_instance_info_cache periodic task in the compute couldn\u0027t heal these things? We have the ports so we\u0027d know if they have resource requests, and if the port had a resource request but not allocation in the binding:profile couldn\u0027t we know that we need to heal it?","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f175543073fa1d5cb75fb98c31f8ffdc6547ee7d","unresolved":false,"context_lines":[{"line_number":57,"context_line":"The generic steps are:"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* the server move request reaches the conductor"},{"line_number":60,"context_line":"* the conductor calls query the ports from neutron that are bound to the"},{"line_number":61,"context_line":"  server"},{"line_number":62,"context_line":"* the conductor updates the ``RequestSpec.requested_resources`` field based"},{"line_number":63,"context_line":"  on the resource request of the ports"},{"line_number":64,"context_line":"* the conductor requests select_destination from the scheduler"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_91294c9c","line":61,"range":{"start_line":60,"start_character":0,"end_line":61,"end_character":8},"in_reply_to":"3fce034c_511be4ce","updated":"2019-04-18 15:00:20.000000000","message":"If there is not enough inventory to heal the port allocation in place then the only way to heal it is to migrate the instance. But if the migrate code in the conductor does not query the neutron for the port request then the migrate will not heal the port allocation either.\n\nAnother problem with any healing call that does not do a new scheduling is the same as the first one I described in the commit message of heal_allocation patch[1]. Basically the code would need to replicate placement code in nova (again). The proposed implementation in heal_allocation patch does a really simplified version of what placement a_c in_tree would do. Therefore there are cases it cannot handle. \n\nIn Train we could call placement a_c with in_tree but then we cannot backport the healing code to Stein.\n\n[1] https://review.openstack.org/#/c/637955/17//COMMIT_MSG@19","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2d728276f202b5213c4b078c31a41dcccc9b6990","unresolved":false,"context_lines":[{"line_number":57,"context_line":"The generic steps are:"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* the server move request reaches the conductor"},{"line_number":60,"context_line":"* the conductor calls query the ports from neutron that are bound to the"},{"line_number":61,"context_line":"  server"},{"line_number":62,"context_line":"* the conductor updates the ``RequestSpec.requested_resources`` field based"},{"line_number":63,"context_line":"  on the resource request of the ports"},{"line_number":64,"context_line":"* the conductor requests select_destination from the scheduler"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_491d9bbb","line":61,"range":{"start_line":60,"start_character":0,"end_line":61,"end_character":8},"in_reply_to":"3fce034c_8ee07b98","updated":"2019-04-18 13:49:51.000000000","message":"it is tempting to optimize but as I mentioned in the Upgrade impact section there will be cases when missing port allocation can only be healed by moving the server. So the port will not have an allocation key in the binding:profile in this case.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6fa60c0291a7115ee55e5881da687499320acaa0","unresolved":false,"context_lines":[{"line_number":66,"context_line":"  ``RequestSpec.requested_resources``, then selects and allocates a candidate"},{"line_number":67,"context_line":"* the conductor updates the port - resource provider mapping in the"},{"line_number":68,"context_line":"  ``RequestSpec`` based on the ``Selection`` object returned from the scheduler"},{"line_number":69,"context_line":"* the conductor requests the move operation from the conductor based on the"},{"line_number":70,"context_line":"  ``Selection`` object."},{"line_number":71,"context_line":"* the target compute updates the port binding in neutron. The ``allocation``"},{"line_number":72,"context_line":"  key in the ``binding:profile`` is also updated based on the mapping in the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_ae04574b","line":69,"range":{"start_line":69,"start_character":53,"end_line":69,"end_character":62},"updated":"2019-04-16 17:06:19.000000000","message":"compute?","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"27af947f5806e6d04cbde6822dd3b595d6145e06","unresolved":false,"context_lines":[{"line_number":66,"context_line":"  ``RequestSpec.requested_resources``, then selects and allocates a candidate"},{"line_number":67,"context_line":"* the conductor updates the port - resource provider mapping in the"},{"line_number":68,"context_line":"  ``RequestSpec`` based on the ``Selection`` object returned from the scheduler"},{"line_number":69,"context_line":"* the conductor requests the move operation from the conductor based on the"},{"line_number":70,"context_line":"  ``Selection`` object."},{"line_number":71,"context_line":"* the target compute updates the port binding in neutron. The ``allocation``"},{"line_number":72,"context_line":"  key in the ``binding:profile`` is also updated based on the mapping in the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffb9cba7_5118ead1","line":69,"range":{"start_line":69,"start_character":53,"end_line":69,"end_character":62},"in_reply_to":"3fce034c_ae04574b","updated":"2019-04-25 13:31:56.000000000","message":"Done","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6fa60c0291a7115ee55e5881da687499320acaa0","unresolved":false,"context_lines":[{"line_number":68,"context_line":"  ``RequestSpec`` based on the ``Selection`` object returned from the scheduler"},{"line_number":69,"context_line":"* the conductor requests the move operation from the conductor based on the"},{"line_number":70,"context_line":"  ``Selection`` object."},{"line_number":71,"context_line":"* the target compute updates the port binding in neutron. The ``allocation``"},{"line_number":72,"context_line":"  key in the ``binding:profile`` is also updated based on the mapping in the"},{"line_number":73,"context_line":"  ``RequestSpec`` object."},{"line_number":74,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_eeb81f77","line":71,"updated":"2019-04-16 17:06:19.000000000","message":"Do we pass RequestSpec to the compute service in all of these move operations? It looks like evacuate (rebuild_instance), resize/migrate (prep_resize) do but live migration and unshelve don\u0027t.\n\nAh I see you go into this below.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2d728276f202b5213c4b078c31a41dcccc9b6990","unresolved":false,"context_lines":[{"line_number":68,"context_line":"  ``RequestSpec`` based on the ``Selection`` object returned from the scheduler"},{"line_number":69,"context_line":"* the conductor requests the move operation from the conductor based on the"},{"line_number":70,"context_line":"  ``Selection`` object."},{"line_number":71,"context_line":"* the target compute updates the port binding in neutron. The ``allocation``"},{"line_number":72,"context_line":"  key in the ``binding:profile`` is also updated based on the mapping in the"},{"line_number":73,"context_line":"  ``RequestSpec`` object."},{"line_number":74,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_a983dfcb","line":71,"in_reply_to":"3fce034c_11afca94","updated":"2019-04-18 13:49:51.000000000","message":"Discussed below.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5cd4fbb99e655f0b37d2ccd4629c506e57d0bdd8","unresolved":false,"context_lines":[{"line_number":68,"context_line":"  ``RequestSpec`` based on the ``Selection`` object returned from the scheduler"},{"line_number":69,"context_line":"* the conductor requests the move operation from the conductor based on the"},{"line_number":70,"context_line":"  ``Selection`` object."},{"line_number":71,"context_line":"* the target compute updates the port binding in neutron. The ``allocation``"},{"line_number":72,"context_line":"  key in the ``binding:profile`` is also updated based on the mapping in the"},{"line_number":73,"context_line":"  ``RequestSpec`` object."},{"line_number":74,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_11afca94","line":71,"in_reply_to":"3fce034c_eeb81f77","updated":"2019-04-16 17:26:57.000000000","message":"for live migration at least we normally create an inactive prot binding in teh condocutor. so this would only be in the cold migration flow.\n\nideally we would converge both to the live migration workflow at some point.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6fa60c0291a7115ee55e5881da687499320acaa0","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  key in the ``binding:profile`` is also updated based on the mapping in the"},{"line_number":73,"context_line":"  ``RequestSpec`` object."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"During resize and migrate the compute manager\u0027s ``finish_resize`` call does the"},{"line_number":76,"context_line":"port binding update. But the ``RequestSpec`` does not passed to this call. So"},{"line_number":77,"context_line":"here the RPC API needs to be extended with a new ``request_spec`` parameter."},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_91509ad6","line":75,"updated":"2019-04-16 17:06:19.000000000","message":"Are there any weird implications for resize to the same host? Like is it possible to have a port with multiple binding profiles that are all allocated to the same resource provider? I would think that\u0027s OK, and actually in case of resize, we don\u0027t even have multiple port bindings do we (that\u0027s only for live migrate).","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f175543073fa1d5cb75fb98c31f8ffdc6547ee7d","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  key in the ``binding:profile`` is also updated based on the mapping in the"},{"line_number":73,"context_line":"  ``RequestSpec`` object."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"During resize and migrate the compute manager\u0027s ``finish_resize`` call does the"},{"line_number":76,"context_line":"port binding update. But the ``RequestSpec`` does not passed to this call. So"},{"line_number":77,"context_line":"here the RPC API needs to be extended with a new ``request_spec`` parameter."},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_b74c7842","line":75,"in_reply_to":"3fce034c_5169a41e","updated":"2019-04-18 15:00:20.000000000","message":"\u003e \u003e Before the scheduling of the resize the port is unbound.\n \u003e \n \u003e I\u0027m not following you here. The port shouldn\u0027t be unbound before\n \u003e scheduling - it was bound when the server was created. Do you mean\n \u003e it\u0027s unbound during the resize_instance compute manager method and\n \u003e then re-bound in the finish_resize method (which is normally the\n \u003e dest but would be the same host in this case).\n\nYou are right. My mistake.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f175543073fa1d5cb75fb98c31f8ffdc6547ee7d","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  key in the ``binding:profile`` is also updated based on the mapping in the"},{"line_number":73,"context_line":"  ``RequestSpec`` object."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"During resize and migrate the compute manager\u0027s ``finish_resize`` call does the"},{"line_number":76,"context_line":"port binding update. But the ``RequestSpec`` does not passed to this call. So"},{"line_number":77,"context_line":"here the RPC API needs to be extended with a new ``request_spec`` parameter."},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_7748505b","line":75,"in_reply_to":"3fce034c_7174e0fe","updated":"2019-04-18 15:00:20.000000000","message":"\u003e I definitely don\u0027t agree with same host resize being devstack /\n \u003e test only - it\u0027s the only way you can resize an instance in an\n \u003e affinity group, for one thing, and it\u0027s also going to become more\n \u003e and more important for edge sites with limited nodes/capacity, see:\n \u003e \n \u003e https://bugs.launchpad.net/nova/+bug/1790204\n\nOK. My bad. \nDo you suggest to try to special case the same-host resize  to avoid doubling the port allocation on the same host? I can try to look into the code if it is feasible.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"842476ef5555fcf4fdee4471a5ebf9093307a795","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  key in the ``binding:profile`` is also updated based on the mapping in the"},{"line_number":73,"context_line":"  ``RequestSpec`` object."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"During resize and migrate the compute manager\u0027s ``finish_resize`` call does the"},{"line_number":76,"context_line":"port binding update. But the ``RequestSpec`` does not passed to this call. So"},{"line_number":77,"context_line":"here the RPC API needs to be extended with a new ``request_spec`` parameter."},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_b77f9813","line":75,"in_reply_to":"3fce034c_7748505b","updated":"2019-04-18 15:07:29.000000000","message":"\u003e Do you suggest to try to special case the same-host resize  to\n \u003e avoid doubling the port allocation on the same host? I can try to\n \u003e look into the code if it is feasible.\n\nWell, we already double all resource allocations during a same host resize today anyway, so I don\u0027t think it\u0027s the end of the world if that\u0027s what happens with this either, I was just wondering if there was anything weird with a same host resize for this type of port being involved - if it\u0027s just \"the allocations are doubled until confirm/revert\" then that\u0027s not \"weird\" it\u0027s just how things work today.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2d728276f202b5213c4b078c31a41dcccc9b6990","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  key in the ``binding:profile`` is also updated based on the mapping in the"},{"line_number":73,"context_line":"  ``RequestSpec`` object."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"During resize and migrate the compute manager\u0027s ``finish_resize`` call does the"},{"line_number":76,"context_line":"port binding update. But the ``RequestSpec`` does not passed to this call. So"},{"line_number":77,"context_line":"here the RPC API needs to be extended with a new ``request_spec`` parameter."},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_c9d42bc0","line":75,"in_reply_to":"3fce034c_91509ad6","updated":"2019-04-18 13:49:51.000000000","message":"during resize there is one binding for a port (only live migration uses the multi-bindings api today). Before the scheduling of the resize the port is unbound. When the scheduling select the same host for the instance the port will be re-bound to the same host. In theory we could reuse some information from the binding:profile but I think it is lot less complex to use the same codepath as in non-same-host resize and recalculate the mapping and rebind the port based on that mapping.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5cd4fbb99e655f0b37d2ccd4629c506e57d0bdd8","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  key in the ``binding:profile`` is also updated based on the mapping in the"},{"line_number":73,"context_line":"  ``RequestSpec`` object."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"During resize and migrate the compute manager\u0027s ``finish_resize`` call does the"},{"line_number":76,"context_line":"port binding update. But the ``RequestSpec`` does not passed to this call. So"},{"line_number":77,"context_line":"here the RPC API needs to be extended with a new ``request_spec`` parameter."},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_d19e2253","line":75,"in_reply_to":"3fce034c_91509ad6","updated":"2019-04-16 17:26:57.000000000","message":"for resize e.g. cold migrate we dont have multiple port binding in neutron the active/inactive sense but since placement does not know this is a resize it would provide a new allcoation candiate  for the current host so we would still need to swap over the allocation. \n\nsince resize is changing the falvor all the other resuoces in the existing allocation for cpu ectra would be invalid so we cant just resuse it but it does mean we will still need to double allocation during resize.\n\ni dont know if a simple way around that without a new api in placemeetn.\n\nfor example if passing an addtional applocation uuid to /allocation_candiatew where we as placement to try and reuse as much fo the exsiting allcoation as possible while fultille the new requireemtn.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"27af947f5806e6d04cbde6822dd3b595d6145e06","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  key in the ``binding:profile`` is also updated based on the mapping in the"},{"line_number":73,"context_line":"  ``RequestSpec`` object."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"During resize and migrate the compute manager\u0027s ``finish_resize`` call does the"},{"line_number":76,"context_line":"port binding update. But the ``RequestSpec`` does not passed to this call. So"},{"line_number":77,"context_line":"here the RPC API needs to be extended with a new ``request_spec`` parameter."},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffb9cba7_f1831ecb","line":75,"in_reply_to":"3fce034c_a805f947","updated":"2019-04-25 13:31:56.000000000","message":"Added an extra sentence to about resize to same host.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"62b03fb066444934ce774fc375b5238eeda0e16f","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  key in the ``binding:profile`` is also updated based on the mapping in the"},{"line_number":73,"context_line":"  ``RequestSpec`` object."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"During resize and migrate the compute manager\u0027s ``finish_resize`` call does the"},{"line_number":76,"context_line":"port binding update. But the ``RequestSpec`` does not passed to this call. So"},{"line_number":77,"context_line":"here the RPC API needs to be extended with a new ``request_spec`` parameter."},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_a805f947","line":75,"in_reply_to":"3fce034c_b77f9813","updated":"2019-04-18 17:56:49.000000000","message":"i wasnt nessisaily saying we should try and come up with a way to not do double allocations. i just wanted to point out that they would happen on a same host resize and if we were to try an prevent that we should proably do so with a placement feature to help rather then  try to do this on the nova side.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6cbb9930269366fa0b36152c5ed8202fa9c5e65","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  key in the ``binding:profile`` is also updated based on the mapping in the"},{"line_number":73,"context_line":"  ``RequestSpec`` object."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"During resize and migrate the compute manager\u0027s ``finish_resize`` call does the"},{"line_number":76,"context_line":"port binding update. But the ``RequestSpec`` does not passed to this call. So"},{"line_number":77,"context_line":"here the RPC API needs to be extended with a new ``request_spec`` parameter."},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_5169a41e","line":75,"in_reply_to":"3fce034c_c9d42bc0","updated":"2019-04-18 14:10:53.000000000","message":"\u003e Before the scheduling of the resize the port is unbound.\n\nI\u0027m not following you here. The port shouldn\u0027t be unbound before scheduling - it was bound when the server was created. Do you mean it\u0027s unbound during the resize_instance compute manager method and then re-bound in the finish_resize method (which is normally the dest but would be the same host in this case).","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6cbb9930269366fa0b36152c5ed8202fa9c5e65","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  key in the ``binding:profile`` is also updated based on the mapping in the"},{"line_number":73,"context_line":"  ``RequestSpec`` object."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"During resize and migrate the compute manager\u0027s ``finish_resize`` call does the"},{"line_number":76,"context_line":"port binding update. But the ``RequestSpec`` does not passed to this call. So"},{"line_number":77,"context_line":"here the RPC API needs to be extended with a new ``request_spec`` parameter."},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_7174e0fe","line":75,"in_reply_to":"3fce034c_c9ed0b8c","updated":"2019-04-18 14:10:53.000000000","message":"\u003e True there will be double port allocation on the same host during\n \u003e the same-host resize. But I think same-host resize is an edge case\n \u003e that is there for devstack testing. In a normal cloud there will be\n \u003e other hosts for the resize anyhow. So I don\u0027t really want to\n \u003e overcomplicate the code to avoid the double allocation.\n\nI definitely don\u0027t agree with same host resize being devstack / test only - it\u0027s the only way you can resize an instance in an affinity group, for one thing, and it\u0027s also going to become more and more important for edge sites with limited nodes/capacity, see:\n\nhttps://bugs.launchpad.net/nova/+bug/1790204","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2d728276f202b5213c4b078c31a41dcccc9b6990","unresolved":false,"context_lines":[{"line_number":72,"context_line":"  key in the ``binding:profile`` is also updated based on the mapping in the"},{"line_number":73,"context_line":"  ``RequestSpec`` object."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"During resize and migrate the compute manager\u0027s ``finish_resize`` call does the"},{"line_number":76,"context_line":"port binding update. But the ``RequestSpec`` does not passed to this call. So"},{"line_number":77,"context_line":"here the RPC API needs to be extended with a new ``request_spec`` parameter."},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_c9ed0b8c","line":75,"in_reply_to":"3fce034c_d19e2253","updated":"2019-04-18 13:49:51.000000000","message":"True there will be double port allocation on the same host during the same-host resize. But I think same-host resize is an edge case that is there for devstack testing. In a normal cloud there will be other hosts for the resize anyhow. So I don\u0027t really want to overcomplicate the code to avoid the double allocation.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6fa60c0291a7115ee55e5881da687499320acaa0","unresolved":false,"context_lines":[{"line_number":73,"context_line":"  ``RequestSpec`` object."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"During resize and migrate the compute manager\u0027s ``finish_resize`` call does the"},{"line_number":76,"context_line":"port binding update. But the ``RequestSpec`` does not passed to this call. So"},{"line_number":77,"context_line":"here the RPC API needs to be extended with a new ``request_spec`` parameter."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"During confirm resize (and migrate) the source allocation is deleted as today,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_8ea71b50","line":76,"range":{"start_line":76,"start_character":45,"end_line":76,"end_character":49},"updated":"2019-04-16 17:06:19.000000000","message":"is","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"27af947f5806e6d04cbde6822dd3b595d6145e06","unresolved":false,"context_lines":[{"line_number":73,"context_line":"  ``RequestSpec`` object."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"During resize and migrate the compute manager\u0027s ``finish_resize`` call does the"},{"line_number":76,"context_line":"port binding update. But the ``RequestSpec`` does not passed to this call. So"},{"line_number":77,"context_line":"here the RPC API needs to be extended with a new ``request_spec`` parameter."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"During confirm resize (and migrate) the source allocation is deleted as today,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffb9cba7_b16da633","line":76,"range":{"start_line":76,"start_character":45,"end_line":76,"end_character":49},"in_reply_to":"3fce034c_8ea71b50","updated":"2019-04-25 13:31:56.000000000","message":"Done","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6fa60c0291a7115ee55e5881da687499320acaa0","unresolved":false,"context_lines":[{"line_number":84,"context_line":"migration_uuid as consumer to the instance_uuid. No extra step is needed here."},{"line_number":85,"context_line":"However the port needs to be bound again to the source host and during that"},{"line_number":86,"context_line":"binding the ``allocation`` key of the ``binding:profile`` need to be reverted"},{"line_number":87,"context_line":"too. This is problematic as at this point the RequestSpec already"},{"line_number":88,"context_line":"contains the port - resource provider mapping according to the target host"},{"line_number":89,"context_line":"allocation."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"During evacuate the compute manager\u0027s ``rebuild_instance`` call does the port"},{"line_number":92,"context_line":"binding update. This call has a ``request_spec`` parameter so this"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_4e35b3f6","line":89,"range":{"start_line":87,"start_character":5,"end_line":89,"end_character":11},"updated":"2019-04-16 17:06:19.000000000","message":"Do we have a solution for this? One idea is we could store something on the MigrationContext to track the old port allocation which could be used on revert and dropped on confirm with the rest of the instance.migration_context. It\u0027s kind of a weird fit since MigrationContext today is just used to track old/new values for fields on the Instance object, but I don\u0027t think that probably excludes it from being used for tracking other per-migration operation state old/new values.\n\nOtherwise we also track the old_flavor information in the instance system_metadata (which predated the MigrationContext) but maybe we shouldn\u0027t build on that model (the old flavor stuff in instance system_metadata should probably be ported to MigrationContext at some point since it\u0027s a similar model).","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"27af947f5806e6d04cbde6822dd3b595d6145e06","unresolved":false,"context_lines":[{"line_number":84,"context_line":"migration_uuid as consumer to the instance_uuid. No extra step is needed here."},{"line_number":85,"context_line":"However the port needs to be bound again to the source host and during that"},{"line_number":86,"context_line":"binding the ``allocation`` key of the ``binding:profile`` need to be reverted"},{"line_number":87,"context_line":"too. This is problematic as at this point the RequestSpec already"},{"line_number":88,"context_line":"contains the port - resource provider mapping according to the target host"},{"line_number":89,"context_line":"allocation."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"During evacuate the compute manager\u0027s ``rebuild_instance`` call does the port"},{"line_number":92,"context_line":"binding update. This call has a ``request_spec`` parameter so this"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffb9cba7_9172e210","line":89,"range":{"start_line":87,"start_character":5,"end_line":89,"end_character":11},"in_reply_to":"3fce034c_08bbed71","updated":"2019-04-25 13:31:56.000000000","message":"I go for the 3 (recalculate) now as that has the least complexity in my mind.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6cbb9930269366fa0b36152c5ed8202fa9c5e65","unresolved":false,"context_lines":[{"line_number":84,"context_line":"migration_uuid as consumer to the instance_uuid. No extra step is needed here."},{"line_number":85,"context_line":"However the port needs to be bound again to the source host and during that"},{"line_number":86,"context_line":"binding the ``allocation`` key of the ``binding:profile`` need to be reverted"},{"line_number":87,"context_line":"too. This is problematic as at this point the RequestSpec already"},{"line_number":88,"context_line":"contains the port - resource provider mapping according to the target host"},{"line_number":89,"context_line":"allocation."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"During evacuate the compute manager\u0027s ``rebuild_instance`` call does the port"},{"line_number":92,"context_line":"binding update. This call has a ``request_spec`` parameter so this"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_b1dc88e4","line":89,"range":{"start_line":87,"start_character":5,"end_line":89,"end_character":11},"in_reply_to":"3fce034c_295a8f4e","updated":"2019-04-18 14:10:53.000000000","message":"3 and 4 seem the best short-term options (2 sounds really nasty), and yeah 1 is probably best long-term but it\u0027s a lot more work and thought that is needed.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2d728276f202b5213c4b078c31a41dcccc9b6990","unresolved":false,"context_lines":[{"line_number":84,"context_line":"migration_uuid as consumer to the instance_uuid. No extra step is needed here."},{"line_number":85,"context_line":"However the port needs to be bound again to the source host and during that"},{"line_number":86,"context_line":"binding the ``allocation`` key of the ``binding:profile`` need to be reverted"},{"line_number":87,"context_line":"too. This is problematic as at this point the RequestSpec already"},{"line_number":88,"context_line":"contains the port - resource provider mapping according to the target host"},{"line_number":89,"context_line":"allocation."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"During evacuate the compute manager\u0027s ``rebuild_instance`` call does the port"},{"line_number":92,"context_line":"binding update. This call has a ``request_spec`` parameter so this"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_295a8f4e","line":89,"range":{"start_line":87,"start_character":5,"end_line":89,"end_character":11},"in_reply_to":"3fce034c_3115269d","updated":"2019-04-18 13:49:51.000000000","message":"Options I see so far:\n1) use multi port binding API for every move operation\n2) extend the scope of bp placement-resource-provider-request-group-mapping-in-allocation-candidates in a way that placement not only returns the mapping but it also capable of persists the mapping as part of persisting an allocation.\n3) re-calculate the mapping based on the source host allocation (held by the migration_uuid), the ports resource request, RP data from placement. Basically calling nova.objects.request_spec.RequestSpec.map_requested_resources_to_providers() again during the revert.\n4) store the source host mapping in the MigrationContext.\n\n--\n\nFor now 3) feels tempting to me, but on the long run 1) seems to be a better solution for me.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5cd4fbb99e655f0b37d2ccd4629c506e57d0bdd8","unresolved":false,"context_lines":[{"line_number":84,"context_line":"migration_uuid as consumer to the instance_uuid. No extra step is needed here."},{"line_number":85,"context_line":"However the port needs to be bound again to the source host and during that"},{"line_number":86,"context_line":"binding the ``allocation`` key of the ``binding:profile`` need to be reverted"},{"line_number":87,"context_line":"too. This is problematic as at this point the RequestSpec already"},{"line_number":88,"context_line":"contains the port - resource provider mapping according to the target host"},{"line_number":89,"context_line":"allocation."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"During evacuate the compute manager\u0027s ``rebuild_instance`` call does the port"},{"line_number":92,"context_line":"binding update. This call has a ``request_spec`` parameter so this"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_3115269d","line":89,"range":{"start_line":87,"start_character":5,"end_line":89,"end_character":11},"in_reply_to":"3fce034c_4e35b3f6","updated":"2019-04-16 17:26:57.000000000","message":"another soltuion would be to use the live migration multple port binding flow for all move operations.\n\ne.g. always create an active and inactive port binding so that we dont need to modify the existing port binding and instead updated the inactive one and attomicaly the active and inactie binding.\n\nif we need to revert the ortign port binding is still intact","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"62b03fb066444934ce774fc375b5238eeda0e16f","unresolved":false,"context_lines":[{"line_number":84,"context_line":"migration_uuid as consumer to the instance_uuid. No extra step is needed here."},{"line_number":85,"context_line":"However the port needs to be bound again to the source host and during that"},{"line_number":86,"context_line":"binding the ``allocation`` key of the ``binding:profile`` need to be reverted"},{"line_number":87,"context_line":"too. This is problematic as at this point the RequestSpec already"},{"line_number":88,"context_line":"contains the port - resource provider mapping according to the target host"},{"line_number":89,"context_line":"allocation."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"During evacuate the compute manager\u0027s ``rebuild_instance`` call does the port"},{"line_number":92,"context_line":"binding update. This call has a ``request_spec`` parameter so this"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_08bbed71","line":89,"range":{"start_line":87,"start_character":5,"end_line":89,"end_character":11},"in_reply_to":"3fce034c_b1dc88e4","updated":"2019-04-18 17:56:49.000000000","message":"its an object change but i would lean towards 4 just because i think there will be less bugs related to storing it rather then recaluating but 3 and 4 make the most sense to me for train also.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5cd4fbb99e655f0b37d2ccd4629c506e57d0bdd8","unresolved":false,"context_lines":[{"line_number":96,"context_line":"``unshelve_instance`` call does the port binding update and here the RPC API"},{"line_number":97,"context_line":"needs to be extended with a new ``request_spec`` parameter."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"During live-migrate nova uses the multiple bindings API of neutron to manage"},{"line_number":100,"context_line":"the bindings on the source and the target host in parallel. The conductor"},{"line_number":101,"context_line":"creates the new binding on the destination host and it will update the"},{"line_number":102,"context_line":"``allocation`` key in the new binding according to the ``RequestSpec``."},{"line_number":103,"context_line":"When the live-migrate finishes the source port binding is deleted along with"},{"line_number":104,"context_line":"the source host allocation. When the live-migration is rolled back the source"},{"line_number":105,"context_line":"host binding still have the proper ``allocation`` key set."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Currently these move operations are rejected by nova if the server has ports"},{"line_number":108,"context_line":"attached with resource request. After the above proposed change is implemented"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_b156f65b","line":105,"range":{"start_line":99,"start_character":0,"end_line":105,"end_character":58},"updated":"2019-04-16 17:26:57.000000000","message":"its a seperate spec but doing this for all move operation as i said above would simply this spec.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"56f133b328fbc52855a6b85fafc8d9418bd45914","unresolved":false,"context_lines":[{"line_number":96,"context_line":"``unshelve_instance`` call does the port binding update and here the RPC API"},{"line_number":97,"context_line":"needs to be extended with a new ``request_spec`` parameter."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"During live-migrate nova uses the multiple bindings API of neutron to manage"},{"line_number":100,"context_line":"the bindings on the source and the target host in parallel. The conductor"},{"line_number":101,"context_line":"creates the new binding on the destination host and it will update the"},{"line_number":102,"context_line":"``allocation`` key in the new binding according to the ``RequestSpec``."},{"line_number":103,"context_line":"When the live-migrate finishes the source port binding is deleted along with"},{"line_number":104,"context_line":"the source host allocation. When the live-migration is rolled back the source"},{"line_number":105,"context_line":"host binding still have the proper ``allocation`` key set."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Currently these move operations are rejected by nova if the server has ports"},{"line_number":108,"context_line":"attached with resource request. After the above proposed change is implemented"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffb9cba7_513b0a9b","line":105,"range":{"start_line":99,"start_character":0,"end_line":105,"end_character":58},"in_reply_to":"3fce034c_08a20d4c","updated":"2019-04-25 12:20:22.000000000","message":"I spent some time poking the multi port binding path. I wanted to check if by using the multi port binding I can implement the move operations _without_ depending on new code in the nova-compute. My idea was to pre-create the inactive port binding in the conductor to the target host with proper allocation key then let the old nova-compute code simply try to create the port binding again to the dest host with the old way (with the ports api) without providing any allocation key. Unfortunately neutron in this case does not try to merge the data in the pre-created inactive binding with the data in the new, actively created binding (both targets the dest host). Instead neutron fails with a \"Duplicate entry\" db error when it tries to create another binding with the same hostname as key.\n\nIn conclusion both multi port binding and RequestSpec passing solutions need nova-compute code change. Therefore I would not gain much with going to the more complex multi port binding path.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"62b03fb066444934ce774fc375b5238eeda0e16f","unresolved":false,"context_lines":[{"line_number":96,"context_line":"``unshelve_instance`` call does the port binding update and here the RPC API"},{"line_number":97,"context_line":"needs to be extended with a new ``request_spec`` parameter."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"During live-migrate nova uses the multiple bindings API of neutron to manage"},{"line_number":100,"context_line":"the bindings on the source and the target host in parallel. The conductor"},{"line_number":101,"context_line":"creates the new binding on the destination host and it will update the"},{"line_number":102,"context_line":"``allocation`` key in the new binding according to the ``RequestSpec``."},{"line_number":103,"context_line":"When the live-migrate finishes the source port binding is deleted along with"},{"line_number":104,"context_line":"the source host allocation. When the live-migration is rolled back the source"},{"line_number":105,"context_line":"host binding still have the proper ``allocation`` key set."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Currently these move operations are rejected by nova if the server has ports"},{"line_number":108,"context_line":"attached with resource request. After the above proposed change is implemented"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_08a20d4c","line":105,"range":{"start_line":99,"start_character":0,"end_line":105,"end_character":58},"in_reply_to":"3fce034c_370728cd","updated":"2019-04-18 17:56:49.000000000","message":"ya i dont want to get bogged down on this point to much.\n\ni think it could make sense for resize/cold migrate.\n\nunshelve likely shoudl not use it\nrebuild is not really a move operation but also would not need it as we are not change host and therefor dont need to rebind the port.\n\nso really rather then all move operation if we were to do it it would just be modifying cold migrate/resize to use it.\n\nill drop this point for now as a long term thing.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f175543073fa1d5cb75fb98c31f8ffdc6547ee7d","unresolved":false,"context_lines":[{"line_number":96,"context_line":"``unshelve_instance`` call does the port binding update and here the RPC API"},{"line_number":97,"context_line":"needs to be extended with a new ``request_spec`` parameter."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"During live-migrate nova uses the multiple bindings API of neutron to manage"},{"line_number":100,"context_line":"the bindings on the source and the target host in parallel. The conductor"},{"line_number":101,"context_line":"creates the new binding on the destination host and it will update the"},{"line_number":102,"context_line":"``allocation`` key in the new binding according to the ``RequestSpec``."},{"line_number":103,"context_line":"When the live-migrate finishes the source port binding is deleted along with"},{"line_number":104,"context_line":"the source host allocation. When the live-migration is rolled back the source"},{"line_number":105,"context_line":"host binding still have the proper ``allocation`` key set."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Currently these move operations are rejected by nova if the server has ports"},{"line_number":108,"context_line":"attached with resource request. After the above proposed change is implemented"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_370728cd","line":105,"range":{"start_line":99,"start_character":0,"end_line":105,"end_character":58},"in_reply_to":"3fce034c_918dccd4","updated":"2019-04-18 15:00:20.000000000","message":"Ack.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2d728276f202b5213c4b078c31a41dcccc9b6990","unresolved":false,"context_lines":[{"line_number":96,"context_line":"``unshelve_instance`` call does the port binding update and here the RPC API"},{"line_number":97,"context_line":"needs to be extended with a new ``request_spec`` parameter."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"During live-migrate nova uses the multiple bindings API of neutron to manage"},{"line_number":100,"context_line":"the bindings on the source and the target host in parallel. The conductor"},{"line_number":101,"context_line":"creates the new binding on the destination host and it will update the"},{"line_number":102,"context_line":"``allocation`` key in the new binding according to the ``RequestSpec``."},{"line_number":103,"context_line":"When the live-migrate finishes the source port binding is deleted along with"},{"line_number":104,"context_line":"the source host allocation. When the live-migration is rolled back the source"},{"line_number":105,"context_line":"host binding still have the proper ``allocation`` key set."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Currently these move operations are rejected by nova if the server has ports"},{"line_number":108,"context_line":"attached with resource request. After the above proposed change is implemented"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_ce02d53d","line":105,"range":{"start_line":99,"start_character":0,"end_line":105,"end_character":58},"in_reply_to":"3fce034c_b156f65b","updated":"2019-04-18 13:49:51.000000000","message":"Yeah. Using the the multi-port binding feature for all move operations would remove the need to pass around the RequestSpec as the port binding creation would happen in the conductor where the RequestSpec is available. So the binding:profile allocation key can be set in freely. And also it would store both allocation rp_uuid, one for the target host and one for the source host.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6cbb9930269366fa0b36152c5ed8202fa9c5e65","unresolved":false,"context_lines":[{"line_number":96,"context_line":"``unshelve_instance`` call does the port binding update and here the RPC API"},{"line_number":97,"context_line":"needs to be extended with a new ``request_spec`` parameter."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"During live-migrate nova uses the multiple bindings API of neutron to manage"},{"line_number":100,"context_line":"the bindings on the source and the target host in parallel. The conductor"},{"line_number":101,"context_line":"creates the new binding on the destination host and it will update the"},{"line_number":102,"context_line":"``allocation`` key in the new binding according to the ``RequestSpec``."},{"line_number":103,"context_line":"When the live-migrate finishes the source port binding is deleted along with"},{"line_number":104,"context_line":"the source host allocation. When the live-migration is rolled back the source"},{"line_number":105,"context_line":"host binding still have the proper ``allocation`` key set."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Currently these move operations are rejected by nova if the server has ports"},{"line_number":108,"context_line":"attached with resource request. After the above proposed change is implemented"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_918dccd4","line":105,"range":{"start_line":99,"start_character":0,"end_line":105,"end_character":58},"in_reply_to":"3fce034c_ce02d53d","updated":"2019-04-18 14:10:53.000000000","message":"I very much doubt we could implement multi port binding support for all move operations without also requiring some behavioral changes in the compute code - we had that with live migration. It\u0027s hard to say though without someone really spending the time to dig into what needs to happen there. If we eventually do multi-port binding support for other move operations, it\u0027d probably be easier to digest if we do them one at a time.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8454af15b39e39de7b5f90c89f85ff90e80d90fc","unresolved":false,"context_lines":[{"line_number":96,"context_line":"``unshelve_instance`` call does the port binding update and here the RPC API"},{"line_number":97,"context_line":"needs to be extended with a new ``request_spec`` parameter."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"During live-migrate nova uses the multiple bindings API of neutron to manage"},{"line_number":100,"context_line":"the bindings on the source and the target host in parallel. The conductor"},{"line_number":101,"context_line":"creates the new binding on the destination host and it will update the"},{"line_number":102,"context_line":"``allocation`` key in the new binding according to the ``RequestSpec``."},{"line_number":103,"context_line":"When the live-migrate finishes the source port binding is deleted along with"},{"line_number":104,"context_line":"the source host allocation. When the live-migration is rolled back the source"},{"line_number":105,"context_line":"host binding still have the proper ``allocation`` key set."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Currently these move operations are rejected by nova if the server has ports"},{"line_number":108,"context_line":"attached with resource request. After the above proposed change is implemented"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffb9cba7_b1b28693","line":105,"range":{"start_line":99,"start_character":0,"end_line":105,"end_character":58},"in_reply_to":"ffb9cba7_513b0a9b","updated":"2019-04-25 13:06:41.000000000","message":"oh yes the fact it does not merge them is known and expected.\n\nif you use multipl port binding you have to activate the port binding instead of updating the host id of the old one.\n\ni need to rework https://review.opendev.org/#/c/653506/ to make it pass the tests but im gurrently trying to fix one edge case where we mistakenly try to do what you tried.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6fa60c0291a7115ee55e5881da687499320acaa0","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"None"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"REST API impact"},{"line_number":123,"context_line":"---------------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"There are two different approaches to signal that nova can handle the move"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_8e039b0f","line":122,"updated":"2019-04-16 17:06:19.000000000","message":"OK 2.68 removed the force parameter from live migrate and evacuate so we don\u0027t have to worry about dealing with a forced move operation that bypasses the scheduler, that\u0027s good.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6fa60c0291a7115ee55e5881da687499320acaa0","unresolved":false,"context_lines":[{"line_number":125,"context_line":"There are two different approaches to signal that nova can handle the move"},{"line_number":126,"context_line":"operations for these servers:"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"* Introduce a new microversion. If the move operations are requested with an"},{"line_number":129,"context_line":"  older microversion for these servers then the request is rejected in the same"},{"line_number":130,"context_line":"  way as today. If the move operation is requested with the new (or newer)"},{"line_number":131,"context_line":"  microversion the request is accepted and handled properly."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_5103120e","line":128,"updated":"2019-04-16 17:06:19.000000000","message":"Well this is definitely the more discoverable / interoperable way to do this since it\u0027s new capability.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2d728276f202b5213c4b078c31a41dcccc9b6990","unresolved":false,"context_lines":[{"line_number":125,"context_line":"There are two different approaches to signal that nova can handle the move"},{"line_number":126,"context_line":"operations for these servers:"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"* Introduce a new microversion. If the move operations are requested with an"},{"line_number":129,"context_line":"  older microversion for these servers then the request is rejected in the same"},{"line_number":130,"context_line":"  way as today. If the move operation is requested with the new (or newer)"},{"line_number":131,"context_line":"  microversion the request is accepted and handled properly."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_f1c9b0ab","line":128,"in_reply_to":"3fce034c_5103120e","updated":"2019-04-18 13:49:51.000000000","message":"I agree.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6fa60c0291a7115ee55e5881da687499320acaa0","unresolved":false,"context_lines":[{"line_number":130,"context_line":"  way as today. If the move operation is requested with the new (or newer)"},{"line_number":131,"context_line":"  microversion the request is accepted and handled properly."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"* Consider the missing support for these operations as bugs. Implement the"},{"line_number":134,"context_line":"  above proposed changes as bugfixes without any new microversion. After the"},{"line_number":135,"context_line":"  implementation is done requesting such move operations with older than"},{"line_number":136,"context_line":"  `microversion 2.72`_ is still rejected (as well as creating servers) but"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_d13ce2c0","line":133,"updated":"2019-04-16 17:06:19.000000000","message":"With this approach I can create a server with ports with resource requests using 2.72 across different clouds that support it, but might not be able to resize the server on all clouds with 2.72 if they don\u0027t have the code changes. I would get a 400 response otherwise, which is not necessarily correct - 409 is likely more appropriate but that\u0027s not going to happen for someone with the Stein level code. Based on this it seems a new microversion is warranted (and based on our guidelines the most obvious choice).","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a6cbb9930269366fa0b36152c5ed8202fa9c5e65","unresolved":false,"context_lines":[{"line_number":130,"context_line":"  way as today. If the move operation is requested with the new (or newer)"},{"line_number":131,"context_line":"  microversion the request is accepted and handled properly."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"* Consider the missing support for these operations as bugs. Implement the"},{"line_number":134,"context_line":"  above proposed changes as bugfixes without any new microversion. After the"},{"line_number":135,"context_line":"  implementation is done requesting such move operations with older than"},{"line_number":136,"context_line":"  `microversion 2.72`_ is still rejected (as well as creating servers) but"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_516a04ee","line":133,"in_reply_to":"3fce034c_11f6bcfa","updated":"2019-04-18 14:10:53.000000000","message":"\u003e I\u0027m totally OK to add a new microverison for this spec. I thought\n \u003e Dan was against that.\n\nDan can clarify his thoughts, but I seem to remember the biggest \u0027ick\u0027 factor about all of this was us talking about releasing the server create support before the move operation support was available, i.e. releasing a half-baked feature, which is definitely not something we try to do and is icky, but we compromised between a full solution in the first release (which took us years with multiattach volume support) and getting something out there with limitations we could fix later (this).","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2d728276f202b5213c4b078c31a41dcccc9b6990","unresolved":false,"context_lines":[{"line_number":130,"context_line":"  way as today. If the move operation is requested with the new (or newer)"},{"line_number":131,"context_line":"  microversion the request is accepted and handled properly."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"* Consider the missing support for these operations as bugs. Implement the"},{"line_number":134,"context_line":"  above proposed changes as bugfixes without any new microversion. After the"},{"line_number":135,"context_line":"  implementation is done requesting such move operations with older than"},{"line_number":136,"context_line":"  `microversion 2.72`_ is still rejected (as well as creating servers) but"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_11f6bcfa","line":133,"in_reply_to":"3fce034c_d13ce2c0","updated":"2019-04-18 13:49:51.000000000","message":"I\u0027m totally OK to add a new microverison for this spec. I thought Dan was against that.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6fa60c0291a7115ee55e5881da687499320acaa0","unresolved":false,"context_lines":[{"line_number":158,"context_line":"Performance Impact"},{"line_number":159,"context_line":"------------------"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"During move operations the conductor needs to query neutron to get the"},{"line_number":162,"context_line":"resource request of the ports that are attached to the server. Also, after the"},{"line_number":163,"context_line":"scheduling the request group - resource provider mapping needs to be"},{"line_number":164,"context_line":"recalculated and the binding:profile of the ports needs to be updated in"},{"line_number":165,"context_line":"neutron."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_317766a3","line":162,"range":{"start_line":161,"start_character":0,"end_line":162,"end_character":62},"updated":"2019-04-16 17:06:19.000000000","message":"Well, maybe - see above. Hopefully we can avoid this for servers that don\u0027t have these special ports.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2d728276f202b5213c4b078c31a41dcccc9b6990","unresolved":false,"context_lines":[{"line_number":158,"context_line":"Performance Impact"},{"line_number":159,"context_line":"------------------"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"During move operations the conductor needs to query neutron to get the"},{"line_number":162,"context_line":"resource request of the ports that are attached to the server. Also, after the"},{"line_number":163,"context_line":"scheduling the request group - resource provider mapping needs to be"},{"line_number":164,"context_line":"recalculated and the binding:profile of the ports needs to be updated in"},{"line_number":165,"context_line":"neutron."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_7152a0e0","line":162,"range":{"start_line":161,"start_character":0,"end_line":162,"end_character":62},"in_reply_to":"3fce034c_317766a3","updated":"2019-04-18 13:49:51.000000000","message":"That optimization would prevent us to heal missing port allocations by moving the server. See above.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6fa60c0291a7115ee55e5881da687499320acaa0","unresolved":false,"context_lines":[{"line_number":187,"context_line":"In general the operators having incomplete port allocations suggested to try to"},{"line_number":188,"context_line":"heal that with the ``heal allocation`` CLI in place if possible to minimize the"},{"line_number":189,"context_line":"number for server move operations required."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"Implementation"},{"line_number":192,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":193,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_3138c69e","line":190,"updated":"2019-04-16 17:06:19.000000000","message":"There is another wrinkle here. For most of the move operations you need to modify the compute RPC API which means two things before conductor can really support a move operation on a server:\n\n1. Is the compute service version high enough to support the new flow? We can check this like we do for the port binding stuff during live migration:\n\nhttps://github.com/openstack/nova/blob/e25d59078e61fe9f925dbef53dfe88e575d34dab/nova/conductor/tasks/live_migrate.py#L43\n\n2. Even if some computes are upgraded, if conductor is configured for rolling upgrades, the new request_spec parameter in those compute RPC API calls will be removed, i.e. if [upgrade_levels]/compute\u003dstein the request spec won\u0027t get to the compute and we will drop the port allocations - hell, this might already be a problem in stein for doing rolling upgrades with the port resource request stuff during server create - did we ever add a min service version check? I think we said that the neutron agent reporting the inventory to placement is how we\u0027d filter out computes that can\u0027t support the new code, but that doesn\u0027t necessarily mean we won\u0027t backport the RequestSpec fields and pop the requested_resources when calling build_and_run_instance if the compute RPC API version is pinned, right?\n\nAnyway, we likely need to think about a minimum nova-compute service version check before supporting the move operation and if the compute(s) aren\u0027t upgraded we need to fail with a 409 error, and also think about the RPC API pin stuff - which could just be a check in the compute RPC API code, like we did for multiattach volume support in Queens:\n\nhttps://github.com/openstack/nova/blob/28d94c50722d24e50ceb57cffb98b98adc4c4a33/nova/compute/rpcapi.py#L1044","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ddd9ede1c8773e2e908939dc7cc8316571fc1192","unresolved":false,"context_lines":[{"line_number":187,"context_line":"In general the operators having incomplete port allocations suggested to try to"},{"line_number":188,"context_line":"heal that with the ``heal allocation`` CLI in place if possible to minimize the"},{"line_number":189,"context_line":"number for server move operations required."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"Implementation"},{"line_number":192,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":193,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_b1b27693","line":190,"in_reply_to":"3fce034c_11390a40","updated":"2019-04-16 17:27:03.000000000","message":"\u003e Basically, conductor only proceeds if all computes are new enough to either (a) handle the allocations properly\n\nI think this is the min nova-compute service version we can easily check from the db Service.version like we do for live migrate already mentioned.\n\n\u003e or (b) detect that the instance needs this but fail if the rpc layer stripped out reqspec.\n\nThis is where I was trying to go with the multiattach example above - if the compute RPC API client pops the request_spec parameter we could just fail there, but that\u0027s kind of messy and doesn\u0027t translate well to when it\u0027s actually required, i.e. if I\u0027m unshelving with microversion 2.1 then I don\u0027t care about the request spec going to the dest compute. Nor does it detect when the object fields are going to be automatically backported. So yeah, my idea about handling this in the comptue RPC API client code isn\u0027t good enough - you\u0027d have to fail in the compute if you need something and it doesn\u0027t come through like Dan said.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"27af947f5806e6d04cbde6822dd3b595d6145e06","unresolved":false,"context_lines":[{"line_number":187,"context_line":"In general the operators having incomplete port allocations suggested to try to"},{"line_number":188,"context_line":"heal that with the ``heal allocation`` CLI in place if possible to minimize the"},{"line_number":189,"context_line":"number for server move operations required."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"Implementation"},{"line_number":192,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":193,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffb9cba7_b46a74b0","line":190,"in_reply_to":"3fce034c_31089890","updated":"2019-04-25 13:31:56.000000000","message":"I try to summaries the issue and the solution. Done.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fe9446a18c0c8138d07a420e8622a4ad0d5b213f","unresolved":false,"context_lines":[{"line_number":187,"context_line":"In general the operators having incomplete port allocations suggested to try to"},{"line_number":188,"context_line":"heal that with the ``heal allocation`` CLI in place if possible to minimize the"},{"line_number":189,"context_line":"number for server move operations required."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"Implementation"},{"line_number":192,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":193,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_11390a40","line":190,"in_reply_to":"3fce034c_3138c69e","updated":"2019-04-16 17:22:42.000000000","message":"\u003e There is another wrinkle here. For most of the move operations you\n \u003e need to modify the compute RPC API which means two things before\n \u003e conductor can really support a move operation on a server:\n \u003e \n \u003e 1. Is the compute service version high enough to support the new\n \u003e flow? We can check this like we do for the port binding stuff\n \u003e during live migration:\n \u003e \n \u003e https://github.com/openstack/nova/blob/e25d59078e61fe9f925dbef53dfe88e575d34dab/nova/conductor/tasks/live_migrate.py#L43\n \u003e \n\nYep, which might mean we fail the move in conductor if we\u0027re not able to move to a new enough compute, regardless of the microversion that was used.\n\n \u003e 2. Even if some computes are upgraded, if conductor is configured\n \u003e for rolling upgrades, the new request_spec parameter in those\n \u003e compute RPC API calls will be removed, i.e. if [upgrade_levels]/compute\u003dstein\n \u003e the request spec won\u0027t get to the compute and we will drop the port\n \u003e allocations - hell, this might already be a problem in stein for\n \u003e doing rolling upgrades with the port resource request stuff during\n \u003e server create - did we ever add a min service version check? I\n \u003e think we said that the neutron agent reporting the inventory to\n \u003e placement is how we\u0027d filter out computes that can\u0027t support the\n \u003e new code, but that doesn\u0027t necessarily mean we won\u0027t backport the\n \u003e RequestSpec fields and pop the requested_resources when calling\n \u003e build_and_run_instance if the compute RPC API version is pinned,\n \u003e right?\n\nYeah, so we actually really need to know what the rpc version being used is going to be, which is a little difficult. If it\u0027s \u003dstein or \u003d5.xx then it\u0027s easy, but if we\u0027re \u003dauto, we need to know what was computed. It could be that we\u0027re pinned to a lower version, and all computes have since been upgraded, so just checking the service version is not enough.\n\nYou could maybe mitigate this by making the newer compute code check and fail if the reqspec is not passed, but the instance has these extra allocations. Basically, conductor only proceeds if all computes are new enough to either (a) handle the allocations properly or (b) detect that the instance needs this but fail if the rpc layer stripped out reqspec.","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5373bd77c09a22921ab80245e6023acff055542c","unresolved":false,"context_lines":[{"line_number":187,"context_line":"In general the operators having incomplete port allocations suggested to try to"},{"line_number":188,"context_line":"heal that with the ``heal allocation`` CLI in place if possible to minimize the"},{"line_number":189,"context_line":"number for server move operations required."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"Implementation"},{"line_number":192,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":193,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_31089890","line":190,"in_reply_to":"3fce034c_5191a44d","updated":"2019-04-18 13:56:51.000000000","message":"\u003e Thanks for gathering the solution for this problem. I\u0027m not sure I\n \u003e understand all the pieces but... What do you think, would it be\n \u003e easier to implement the multi port binding usage for all the move\n \u003e operations instead of passing around the RequestSpec?\n\n(8:51:30 AM) gibi: mriedem, dansmith: about the https://review.openstack.org/#/c/652608/4/specs/train/approved/server-move-operations-with-ports-having-resource-request.rst@190 do you have a feeling which one is easier: 1) implement multiple portbinding usage for every server move operation 2) pass around the RequestSpec in the compute RPC API?\n(8:52:31 AM) mriedem: i\u0027m not sure i understand the question\n(8:52:51 AM) mriedem: you need the request spec in methods like unshelve to do the port binding in the networking api methods properly right?\n(8:53:29 AM) mriedem: oh,\n(8:53:39 AM) mriedem: you mean change all move ops to do the port binding stuff that live migration does?\n(8:53:42 AM) gibi: mriedem: cannot set up the portbinding in the conductor for unshelve?\n(8:54:07 AM) mriedem: i\u0027d think you\u0027d still have behavioral changes in the compute if you did that\n(8:54:09 AM) gibi: mriedem: yeah, do multiple portbinding in the conducotr for every move operation then the binding is created in the conductor\n(8:54:27 AM) mriedem: it\u0027s really hard for me to say without it being poc\u0027ed first\n(8:54:38 AM) gibi: mriedem: true, we anyhow need a behavior change in the compute either due to the requestspec or due to the multiple portbinding\n(8:54:43 AM) mriedem: for live migration we create the port bindings in the conductor but there were changes in the compute to use those port bindings if they existed\n(8:54:57 AM) gibi: mriedem: yes\n(8:55:05 AM) mriedem: changing the compute rpc api interface is much more straightforward to me\n(8:55:41 AM) gibi: mriedem: OK that is the kind of input I\u0027m looking for as for me both is blackbox now\n(8:55:47 AM) gibi: mriedem: thanks\n(8:56:20 AM) mriedem: if you haven\u0027t heard, there is some weird issue sean-k-mooney is working on with the port binding live migratoin stuff too, so until the root cause of that is figured out i\u0027d be nervous about switching everything over","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2d728276f202b5213c4b078c31a41dcccc9b6990","unresolved":false,"context_lines":[{"line_number":187,"context_line":"In general the operators having incomplete port allocations suggested to try to"},{"line_number":188,"context_line":"heal that with the ``heal allocation`` CLI in place if possible to minimize the"},{"line_number":189,"context_line":"number for server move operations required."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"Implementation"},{"line_number":192,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":193,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fce034c_5191a44d","line":190,"in_reply_to":"3fce034c_b1b27693","updated":"2019-04-18 13:49:51.000000000","message":"Thanks for gathering the solution for this problem. I\u0027m not sure I understand all the pieces but... What do you think, would it be easier to implement the multi port binding usage for all the move operations instead of passing around the RequestSpec?","commit_id":"65e7f7b97e5c481659c4f217313346008e08c431"}],"specs/train/approved/support-move-ops-with-qos-ports.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"19e1460844d990a3d6feed497ec3568d4aaeb4ee","unresolved":false,"context_lines":[{"line_number":222,"context_line":"inconsistent port allocation as during the move the requested resources are"},{"line_number":223,"context_line":"re-calculated and the new allocation created accordingly in placement. This"},{"line_number":224,"context_line":"will complement `the port allocation healing capabilities`_ of the"},{"line_number":225,"context_line":"``nova-manage placement heal allocation`` CLI that has multiple limitation in"},{"line_number":226,"context_line":"this regard."},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"In general the operators having incomplete port allocations suggested to try to"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bfb3d3c7_4c7fa114","line":225,"range":{"start_line":225,"start_character":24,"end_line":225,"end_character":39},"updated":"2019-05-28 16:18:35.000000000","message":"heal_allocations\n\nhttps://docs.openstack.org/nova/latest/cli/nova-manage.html#placement","commit_id":"7db08e9c48764cfdda454569ceee5a6f721df045"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"378435b750ccf1ac8f3564b28764172934144a91","unresolved":false,"context_lines":[{"line_number":222,"context_line":"inconsistent port allocation as during the move the requested resources are"},{"line_number":223,"context_line":"re-calculated and the new allocation created accordingly in placement. This"},{"line_number":224,"context_line":"will complement `the port allocation healing capabilities`_ of the"},{"line_number":225,"context_line":"``nova-manage placement heal allocation`` CLI that has multiple limitation in"},{"line_number":226,"context_line":"this regard."},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"In general the operators having incomplete port allocations suggested to try to"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bfb3d3c7_ec0c55a6","line":225,"range":{"start_line":225,"start_character":24,"end_line":225,"end_character":39},"in_reply_to":"bfb3d3c7_4c7fa114","updated":"2019-05-28 16:24:01.000000000","message":"Done","commit_id":"7db08e9c48764cfdda454569ceee5a6f721df045"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"19e1460844d990a3d6feed497ec3568d4aaeb4ee","unresolved":false,"context_lines":[{"line_number":225,"context_line":"``nova-manage placement heal allocation`` CLI that has multiple limitation in"},{"line_number":226,"context_line":"this regard."},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"In general the operators having incomplete port allocations suggested to try to"},{"line_number":229,"context_line":"heal that with the ``heal allocation`` CLI in place if possible to minimize the"},{"line_number":230,"context_line":"number for server move operations required."},{"line_number":231,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"bfb3d3c7_cc907146","line":228,"range":{"start_line":228,"start_character":60,"end_line":228,"end_character":69},"updated":"2019-05-28 16:18:35.000000000","message":"are recommended","commit_id":"7db08e9c48764cfdda454569ceee5a6f721df045"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"378435b750ccf1ac8f3564b28764172934144a91","unresolved":false,"context_lines":[{"line_number":225,"context_line":"``nova-manage placement heal allocation`` CLI that has multiple limitation in"},{"line_number":226,"context_line":"this regard."},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"In general the operators having incomplete port allocations suggested to try to"},{"line_number":229,"context_line":"heal that with the ``heal allocation`` CLI in place if possible to minimize the"},{"line_number":230,"context_line":"number for server move operations required."},{"line_number":231,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"bfb3d3c7_8cfd996f","line":228,"range":{"start_line":228,"start_character":60,"end_line":228,"end_character":69},"in_reply_to":"bfb3d3c7_cc907146","updated":"2019-05-28 16:24:01.000000000","message":"Done","commit_id":"7db08e9c48764cfdda454569ceee5a6f721df045"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"19e1460844d990a3d6feed497ec3568d4aaeb4ee","unresolved":false,"context_lines":[{"line_number":226,"context_line":"this regard."},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"In general the operators having incomplete port allocations suggested to try to"},{"line_number":229,"context_line":"heal that with the ``heal allocation`` CLI in place if possible to minimize the"},{"line_number":230,"context_line":"number for server move operations required."},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bfb3d3c7_6c7ce51e","line":229,"range":{"start_line":229,"start_character":21,"end_line":229,"end_character":36},"updated":"2019-05-28 16:18:35.000000000","message":"heal_allocations","commit_id":"7db08e9c48764cfdda454569ceee5a6f721df045"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"378435b750ccf1ac8f3564b28764172934144a91","unresolved":false,"context_lines":[{"line_number":226,"context_line":"this regard."},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"In general the operators having incomplete port allocations suggested to try to"},{"line_number":229,"context_line":"heal that with the ``heal allocation`` CLI in place if possible to minimize the"},{"line_number":230,"context_line":"number for server move operations required."},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":7,"id":"bfb3d3c7_ac02dd6d","line":229,"range":{"start_line":229,"start_character":21,"end_line":229,"end_character":36},"in_reply_to":"bfb3d3c7_6c7ce51e","updated":"2019-05-28 16:24:01.000000000","message":"Done","commit_id":"7db08e9c48764cfdda454569ceee5a6f721df045"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bfe4396f37528bc21119da9516488c368a0197c0","unresolved":false,"context_lines":[{"line_number":21,"context_line":"---------"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"The owner or the admin needs to be able to resize, migrate, live-migrate,"},{"line_number":24,"context_line":"evacuate and unshelve after shelve offload servers having ports with resource"},{"line_number":25,"context_line":"request."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Servers could be created before Stein with SRIOV ports having QoS minimum"}],"source_content_type":"text/x-rst","patch_set":8,"id":"bfb3d3c7_f223a3a5","line":24,"range":{"start_line":24,"start_character":12,"end_line":24,"end_character":50},"updated":"2019-05-30 13:18:25.000000000","message":"nit: unshelve shelve offloaded servers,","commit_id":"7bd0dfc8ce0281d925283e40b62ae6f0af3a0aee"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bfe4396f37528bc21119da9516488c368a0197c0","unresolved":false,"context_lines":[{"line_number":63,"context_line":"The generic steps are:"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* the server move request reaches the conductor"},{"line_number":66,"context_line":"* the conductor calls query the ports from neutron that are bound to the"},{"line_number":67,"context_line":"  server"},{"line_number":68,"context_line":"* the conductor updates the ``RequestSpec.requested_resources`` field based"},{"line_number":69,"context_line":"  on the resource request of the ports"}],"source_content_type":"text/x-rst","patch_set":8,"id":"bfb3d3c7_72b2534b","line":66,"range":{"start_line":66,"start_character":16,"end_line":66,"end_character":27},"updated":"2019-05-30 13:18:25.000000000","message":"nit: queries","commit_id":"7bd0dfc8ce0281d925283e40b62ae6f0af3a0aee"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9223a045b105eab847b4c79a2d70ad251303b192","unresolved":false,"context_lines":[{"line_number":140,"context_line":"object would not need to be passed down to the nova-compute in each move"},{"line_number":141,"context_line":"operations as the inactive binding can be created with the necessary"},{"line_number":142,"context_line":"allocation information in the conductor. However this solution would still"},{"line_number":143,"context_line":"result in nova-compute impact to active the bindings during move instead of"},{"line_number":144,"context_line":"creating a new binding as today."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":8,"id":"bfb3d3c7_6f283096","line":143,"range":{"start_line":143,"start_character":33,"end_line":143,"end_character":39},"updated":"2019-05-30 13:19:20.000000000","message":"activate","commit_id":"7bd0dfc8ce0281d925283e40b62ae6f0af3a0aee"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bfe4396f37528bc21119da9516488c368a0197c0","unresolved":false,"context_lines":[{"line_number":164,"context_line":"  implementation is done requesting such move operations with any microversion"},{"line_number":165,"context_line":"  is accepted and handled properly."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"For background about these options see the `ML thread`_ . On the Train PTG we"},{"line_number":168,"context_line":"`agreed to the bugfix approach`_."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"bfb3d3c7_12d51744","line":167,"range":{"start_line":167,"start_character":58,"end_line":167,"end_character":60},"updated":"2019-05-30 13:18:25.000000000","message":"nit: At","commit_id":"7bd0dfc8ce0281d925283e40b62ae6f0af3a0aee"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9223a045b105eab847b4c79a2d70ad251303b192","unresolved":false,"context_lines":[{"line_number":222,"context_line":"inconsistent port allocation as during the move the requested resources are"},{"line_number":223,"context_line":"re-calculated and the new allocation created accordingly in placement. This"},{"line_number":224,"context_line":"will complement `the port allocation healing capabilities`_ of the"},{"line_number":225,"context_line":"``nova-manage placement heal_allocations`` CLI that has multiple limitation in"},{"line_number":226,"context_line":"this regard."},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"In general the operators having incomplete port allocations are recommended to"}],"source_content_type":"text/x-rst","patch_set":8,"id":"bfb3d3c7_af0b8827","line":225,"range":{"start_line":225,"start_character":65,"end_line":225,"end_character":75},"updated":"2019-05-30 13:19:20.000000000","message":"limitations","commit_id":"7bd0dfc8ce0281d925283e40b62ae6f0af3a0aee"}],"specs/train/approved/support-server-move-operations-with-ports-having-resource-request.rst":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6289d216e255728e561a4a227edc6f68ed963007","unresolved":false,"context_lines":[{"line_number":113,"context_line":"When the live-migrate finishes the source port binding is deleted along with"},{"line_number":114,"context_line":"the source host allocation. When the live-migration is rolled back the source"},{"line_number":115,"context_line":"host binding still have the proper ``allocation`` key set."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Currently these move operations are rejected by nova if the server has ports"},{"line_number":118,"context_line":"attached with resource request. After the above proposed change is implemented"},{"line_number":119,"context_line":"these operations will be allowed. The way we will signal that nova is capable"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ffb9cba7_99716e0f","line":116,"updated":"2019-04-29 19:49:41.000000000","message":"Unfortunately we still need to support the case when the multiple binding extension is not available. In that case it is the nova-compute that sets up the port binding on the dest host and we have to make sure that the binding there contains the proper rp uuid.","commit_id":"14b3b2cf621f96b2617cfe1c31dc9812e30f59a5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a3a9dd4c9add475179eee5f14e2774187918c177","unresolved":false,"context_lines":[{"line_number":113,"context_line":"When the live-migrate finishes the source port binding is deleted along with"},{"line_number":114,"context_line":"the source host allocation. When the live-migration is rolled back the source"},{"line_number":115,"context_line":"host binding still have the proper ``allocation`` key set."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Currently these move operations are rejected by nova if the server has ports"},{"line_number":118,"context_line":"attached with resource request. After the above proposed change is implemented"},{"line_number":119,"context_line":"these operations will be allowed. The way we will signal that nova is capable"}],"source_content_type":"text/x-rst","patch_set":5,"id":"dfbec78f_7850cd33","line":116,"in_reply_to":"ffb9cba7_99716e0f","updated":"2019-05-02 20:14:51.000000000","message":"The multi port binding extension cannot be turned off in neutron so we can expect that it is always there (except if  ml2 is not used). So we can simply fail if multi port binding is not available and a bound port has resource request.","commit_id":"14b3b2cf621f96b2617cfe1c31dc9812e30f59a5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"474b16ea21e1ef7d7e42bd1f23c5ee8133dffade","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Server move operations with ports having resource request"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/support-server-move-operations-with-ports-having-resource-request"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Problem description"},{"line_number":14,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_0fa240af","line":11,"range":{"start_line":11,"start_character":44,"end_line":11,"end_character":109},"updated":"2019-05-09 16:31:43.000000000","message":"Crikey this is a long blueprint name, could just be \"support-move-ops-with-qos-ports\" or something.","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"09578c6f28dbc75fd5470e497041b83054244397","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Server move operations with ports having resource request"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/support-server-move-operations-with-ports-having-resource-request"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Problem description"},{"line_number":14,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_3873be4f","line":11,"range":{"start_line":11,"start_character":44,"end_line":11,"end_character":109},"in_reply_to":"dfbec78f_0fa240af","updated":"2019-05-10 11:43:14.000000000","message":"I did not know that bps can be renamed in launchpad, but it can. So I did it. \n-\u003e https://blueprints.launchpad.net/nova/+spec/support-move-ops-with-qos-ports","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"474b16ea21e1ef7d7e42bd1f23c5ee8133dffade","unresolved":false,"context_lines":[{"line_number":23,"context_line":"The owner or the admin needs to be able to resize, migrate, live-migrate,"},{"line_number":24,"context_line":"evacuate and unshelve after shelve offload servers having ports with resource"},{"line_number":25,"context_line":"request."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Proposed change"},{"line_number":28,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_cf84280f","line":26,"updated":"2019-05-09 16:31:43.000000000","message":"Another use case is automatic healing of allocations for pre-existing ports that were attached to a server before stein where the port now has a resource request, right? By letting the user or admin migrate the server around we\u0027d heal the allocations in placement.","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"09578c6f28dbc75fd5470e497041b83054244397","unresolved":false,"context_lines":[{"line_number":23,"context_line":"The owner or the admin needs to be able to resize, migrate, live-migrate,"},{"line_number":24,"context_line":"evacuate and unshelve after shelve offload servers having ports with resource"},{"line_number":25,"context_line":"request."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Proposed change"},{"line_number":28,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_38a89e75","line":26,"in_reply_to":"dfbec78f_cf84280f","updated":"2019-05-10 11:43:14.000000000","message":"Correct. Done.","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"474b16ea21e1ef7d7e42bd1f23c5ee8133dffade","unresolved":false,"context_lines":[{"line_number":89,"context_line":"migration_uuid as consumer to the instance_uuid. No extra step is needed here."},{"line_number":90,"context_line":"However the port needs to be bound again to the source host and during that"},{"line_number":91,"context_line":"binding the ``allocation`` key of the ``binding:profile`` need to be reverted"},{"line_number":92,"context_line":"too. This means that the the mapping needs to be re-calculated based on the"},{"line_number":93,"context_line":"reverted allocation and data from placement. Alternatively we could store the"},{"line_number":94,"context_line":"old mapping in the MigrationContext or start using the multi port binding API"},{"line_number":95,"context_line":"and keep old mapping in the old binding. These alternatives both give extra"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_4f08382b","line":92,"range":{"start_line":92,"start_character":37,"end_line":92,"end_character":62},"updated":"2019-05-09 16:31:43.000000000","message":"What if my source host is from stein and doesn\u0027t have this code? Will this be covered by the generic statement in the upgrade impact section?","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"474b16ea21e1ef7d7e42bd1f23c5ee8133dffade","unresolved":false,"context_lines":[{"line_number":89,"context_line":"migration_uuid as consumer to the instance_uuid. No extra step is needed here."},{"line_number":90,"context_line":"However the port needs to be bound again to the source host and during that"},{"line_number":91,"context_line":"binding the ``allocation`` key of the ``binding:profile`` need to be reverted"},{"line_number":92,"context_line":"too. This means that the the mapping needs to be re-calculated based on the"},{"line_number":93,"context_line":"reverted allocation and data from placement. Alternatively we could store the"},{"line_number":94,"context_line":"old mapping in the MigrationContext or start using the multi port binding API"},{"line_number":95,"context_line":"and keep old mapping in the old binding. These alternatives both give extra"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_0fdec010","line":92,"range":{"start_line":92,"start_character":20,"end_line":92,"end_character":28},"updated":"2019-05-09 16:31:43.000000000","message":"the","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"09578c6f28dbc75fd5470e497041b83054244397","unresolved":false,"context_lines":[{"line_number":89,"context_line":"migration_uuid as consumer to the instance_uuid. No extra step is needed here."},{"line_number":90,"context_line":"However the port needs to be bound again to the source host and during that"},{"line_number":91,"context_line":"binding the ``allocation`` key of the ``binding:profile`` need to be reverted"},{"line_number":92,"context_line":"too. This means that the the mapping needs to be re-calculated based on the"},{"line_number":93,"context_line":"reverted allocation and data from placement. Alternatively we could store the"},{"line_number":94,"context_line":"old mapping in the MigrationContext or start using the multi port binding API"},{"line_number":95,"context_line":"and keep old mapping in the old binding. These alternatives both give extra"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_38ef3eb1","line":92,"range":{"start_line":92,"start_character":20,"end_line":92,"end_character":28},"in_reply_to":"dfbec78f_0fdec010","updated":"2019-05-10 11:43:14.000000000","message":"Done","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"09578c6f28dbc75fd5470e497041b83054244397","unresolved":false,"context_lines":[{"line_number":89,"context_line":"migration_uuid as consumer to the instance_uuid. No extra step is needed here."},{"line_number":90,"context_line":"However the port needs to be bound again to the source host and during that"},{"line_number":91,"context_line":"binding the ``allocation`` key of the ``binding:profile`` need to be reverted"},{"line_number":92,"context_line":"too. This means that the the mapping needs to be re-calculated based on the"},{"line_number":93,"context_line":"reverted allocation and data from placement. Alternatively we could store the"},{"line_number":94,"context_line":"old mapping in the MigrationContext or start using the multi port binding API"},{"line_number":95,"context_line":"and keep old mapping in the old binding. These alternatives both give extra"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_18491acf","line":92,"range":{"start_line":92,"start_character":37,"end_line":92,"end_character":62},"in_reply_to":"dfbec78f_4f08382b","updated":"2019-05-10 11:43:14.000000000","message":"The upgrade section states that both the source and the destination hosts of a migration need to be on Train level to support the operation. This will ensure that the regeneration will happen.","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"474b16ea21e1ef7d7e42bd1f23c5ee8133dffade","unresolved":false,"context_lines":[{"line_number":107,"context_line":"needs to be extended with a new ``request_spec`` parameter."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"During live-migrate nova uses the multiple bindings API of neutron to manage"},{"line_number":110,"context_line":"the bindings on the source and the target host in parallel. The conductor"},{"line_number":111,"context_line":"creates the new binding on the destination host and it will update the"},{"line_number":112,"context_line":"``allocation`` key in the new binding according to the ``RequestSpec``."},{"line_number":113,"context_line":"When the live-migrate finishes the source port binding is deleted along with"},{"line_number":114,"context_line":"the source host allocation. When the live-migration is rolled back the source"},{"line_number":115,"context_line":"host binding still have the proper ``allocation`` key set."}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_4f227802","line":112,"range":{"start_line":110,"start_character":60,"end_line":112,"end_character":71},"updated":"2019-05-09 16:31:43.000000000","message":"OK this is specifically the port binding resource for the dest host, not the port itself because the port resource has a binding:profile and that should already represent the binding profile for the source host binding and resource allocation. That\u0027s the active binding, the one that conductor creates for the dest host during live migration is the inactive binding. I guess you\u0027d just pass in the port_profiles to this method:\n\nhttps://github.com/openstack/nova/blob/56fef7c0e74d7512f062c4046def10401df16565/nova/network/neutronv2/api.py#L1300","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"09578c6f28dbc75fd5470e497041b83054244397","unresolved":false,"context_lines":[{"line_number":107,"context_line":"needs to be extended with a new ``request_spec`` parameter."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"During live-migrate nova uses the multiple bindings API of neutron to manage"},{"line_number":110,"context_line":"the bindings on the source and the target host in parallel. The conductor"},{"line_number":111,"context_line":"creates the new binding on the destination host and it will update the"},{"line_number":112,"context_line":"``allocation`` key in the new binding according to the ``RequestSpec``."},{"line_number":113,"context_line":"When the live-migrate finishes the source port binding is deleted along with"},{"line_number":114,"context_line":"the source host allocation. When the live-migration is rolled back the source"},{"line_number":115,"context_line":"host binding still have the proper ``allocation`` key set."}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_381dfebc","line":112,"range":{"start_line":110,"start_character":60,"end_line":112,"end_character":71},"in_reply_to":"dfbec78f_4f227802","updated":"2019-05-10 11:43:14.000000000","message":"Exactly. I added a bit of clarification here.","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"474b16ea21e1ef7d7e42bd1f23c5ee8133dffade","unresolved":false,"context_lines":[{"line_number":111,"context_line":"creates the new binding on the destination host and it will update the"},{"line_number":112,"context_line":"``allocation`` key in the new binding according to the ``RequestSpec``."},{"line_number":113,"context_line":"When the live-migrate finishes the source port binding is deleted along with"},{"line_number":114,"context_line":"the source host allocation. When the live-migration is rolled back the source"},{"line_number":115,"context_line":"host binding still have the proper ``allocation`` key set."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The multiple bindings neutron API extension cannot be turned off so if it is"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_2f7dc4e6","line":114,"range":{"start_line":114,"start_character":28,"end_line":114,"end_character":32},"updated":"2019-05-09 16:31:43.000000000","message":"nit: If","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"09578c6f28dbc75fd5470e497041b83054244397","unresolved":false,"context_lines":[{"line_number":111,"context_line":"creates the new binding on the destination host and it will update the"},{"line_number":112,"context_line":"``allocation`` key in the new binding according to the ``RequestSpec``."},{"line_number":113,"context_line":"When the live-migrate finishes the source port binding is deleted along with"},{"line_number":114,"context_line":"the source host allocation. When the live-migration is rolled back the source"},{"line_number":115,"context_line":"host binding still have the proper ``allocation`` key set."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The multiple bindings neutron API extension cannot be turned off so if it is"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_f8652646","line":114,"range":{"start_line":114,"start_character":28,"end_line":114,"end_character":32},"in_reply_to":"dfbec78f_2f7dc4e6","updated":"2019-05-10 11:43:14.000000000","message":"I\u0027m soo pessimistic about live migrations :D. Done.","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"474b16ea21e1ef7d7e42bd1f23c5ee8133dffade","unresolved":false,"context_lines":[{"line_number":112,"context_line":"``allocation`` key in the new binding according to the ``RequestSpec``."},{"line_number":113,"context_line":"When the live-migrate finishes the source port binding is deleted along with"},{"line_number":114,"context_line":"the source host allocation. When the live-migration is rolled back the source"},{"line_number":115,"context_line":"host binding still have the proper ``allocation`` key set."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The multiple bindings neutron API extension cannot be turned off so if it is"},{"line_number":118,"context_line":"not present nova can fail the live-migrate operation."}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_6f72dc13","line":115,"updated":"2019-05-09 16:31:43.000000000","message":"Just FYI but I think we have a latent bug yet about rollback for live migration where the source host port binding is not re-activated:\n\nhttps://bugs.launchpad.net/nova/+bug/1788014","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"09578c6f28dbc75fd5470e497041b83054244397","unresolved":false,"context_lines":[{"line_number":112,"context_line":"``allocation`` key in the new binding according to the ``RequestSpec``."},{"line_number":113,"context_line":"When the live-migrate finishes the source port binding is deleted along with"},{"line_number":114,"context_line":"the source host allocation. When the live-migration is rolled back the source"},{"line_number":115,"context_line":"host binding still have the proper ``allocation`` key set."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The multiple bindings neutron API extension cannot be turned off so if it is"},{"line_number":118,"context_line":"not present nova can fail the live-migrate operation."}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_f8f3e671","line":115,"in_reply_to":"dfbec78f_6f72dc13","updated":"2019-05-10 11:43:14.000000000","message":"ACK.","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"474b16ea21e1ef7d7e42bd1f23c5ee8133dffade","unresolved":false,"context_lines":[{"line_number":115,"context_line":"host binding still have the proper ``allocation`` key set."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The multiple bindings neutron API extension cannot be turned off so if it is"},{"line_number":118,"context_line":"not present nova can fail the live-migrate operation."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Currently these move operations are rejected by nova if the server has ports"},{"line_number":121,"context_line":"attached with resource request. After the above proposed change is implemented"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_8fdb90eb","line":118,"range":{"start_line":118,"start_character":17,"end_line":118,"end_character":53},"updated":"2019-05-09 16:31:43.000000000","message":"if the ports have resource requests you mean, right?","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"09578c6f28dbc75fd5470e497041b83054244397","unresolved":false,"context_lines":[{"line_number":115,"context_line":"host binding still have the proper ``allocation`` key set."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The multiple bindings neutron API extension cannot be turned off so if it is"},{"line_number":118,"context_line":"not present nova can fail the live-migrate operation."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Currently these move operations are rejected by nova if the server has ports"},{"line_number":121,"context_line":"attached with resource request. After the above proposed change is implemented"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_98b8aa76","line":118,"range":{"start_line":118,"start_character":17,"end_line":118,"end_character":53},"in_reply_to":"dfbec78f_8fdb90eb","updated":"2019-05-10 11:43:14.000000000","message":"Yes, added the extra info.","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"474b16ea21e1ef7d7e42bd1f23c5ee8133dffade","unresolved":false,"context_lines":[{"line_number":157,"context_line":"  is accepted and handled properly."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"For background about these options see the `ML thread`_ . On the Train PTG we"},{"line_number":160,"context_line":"agreed to chose the bugfix approach."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_af8454b2","line":160,"range":{"start_line":160,"start_character":0,"end_line":160,"end_character":6},"updated":"2019-05-09 16:31:43.000000000","message":"nit: you could link to the ML summary:\n\nhttp://lists.openstack.org/pipermail/openstack-discuss/2019-May/005807.html","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"474b16ea21e1ef7d7e42bd1f23c5ee8133dffade","unresolved":false,"context_lines":[{"line_number":157,"context_line":"  is accepted and handled properly."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"For background about these options see the `ML thread`_ . On the Train PTG we"},{"line_number":160,"context_line":"agreed to chose the bugfix approach."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_0f96c0f1","line":160,"range":{"start_line":160,"start_character":10,"end_line":160,"end_character":15},"updated":"2019-05-09 16:31:43.000000000","message":"nix this","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"09578c6f28dbc75fd5470e497041b83054244397","unresolved":false,"context_lines":[{"line_number":157,"context_line":"  is accepted and handled properly."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"For background about these options see the `ML thread`_ . On the Train PTG we"},{"line_number":160,"context_line":"agreed to chose the bugfix approach."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_d3ffe5fe","line":160,"range":{"start_line":160,"start_character":10,"end_line":160,"end_character":15},"in_reply_to":"dfbec78f_0f96c0f1","updated":"2019-05-10 11:43:14.000000000","message":"Done","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"09578c6f28dbc75fd5470e497041b83054244397","unresolved":false,"context_lines":[{"line_number":157,"context_line":"  is accepted and handled properly."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"For background about these options see the `ML thread`_ . On the Train PTG we"},{"line_number":160,"context_line":"agreed to chose the bugfix approach."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_f3022909","line":160,"range":{"start_line":160,"start_character":0,"end_line":160,"end_character":6},"in_reply_to":"dfbec78f_af8454b2","updated":"2019-05-10 11:43:14.000000000","message":"Done","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"474b16ea21e1ef7d7e42bd1f23c5ee8133dffade","unresolved":false,"context_lines":[{"line_number":206,"context_line":"source and the destination computes are new enough but there are older computes"},{"line_number":207,"context_line":"in the system then the older RPC version will be used and the ``RequestSpec``"},{"line_number":208,"context_line":"will be stripped from the calls. Therefore an additional check is needed. The"},{"line_number":209,"context_line":"nova-compute needs to check if the instance has ports that would mapping and if"},{"line_number":210,"context_line":"the ``RequestSpec`` is not provided in the call then fail the operation."},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"The support for move operations makes it possible to heal missing or"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_2f670428","line":209,"range":{"start_line":209,"start_character":59,"end_line":209,"end_character":64},"updated":"2019-05-09 16:31:43.000000000","message":"would require?","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"09578c6f28dbc75fd5470e497041b83054244397","unresolved":false,"context_lines":[{"line_number":206,"context_line":"source and the destination computes are new enough but there are older computes"},{"line_number":207,"context_line":"in the system then the older RPC version will be used and the ``RequestSpec``"},{"line_number":208,"context_line":"will be stripped from the calls. Therefore an additional check is needed. The"},{"line_number":209,"context_line":"nova-compute needs to check if the instance has ports that would mapping and if"},{"line_number":210,"context_line":"the ``RequestSpec`` is not provided in the call then fail the operation."},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"The support for move operations makes it possible to heal missing or"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_3318c173","line":209,"range":{"start_line":209,"start_character":59,"end_line":209,"end_character":64},"in_reply_to":"dfbec78f_2f670428","updated":"2019-05-10 11:43:14.000000000","message":"Done","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"474b16ea21e1ef7d7e42bd1f23c5ee8133dffade","unresolved":false,"context_lines":[{"line_number":207,"context_line":"in the system then the older RPC version will be used and the ``RequestSpec``"},{"line_number":208,"context_line":"will be stripped from the calls. Therefore an additional check is needed. The"},{"line_number":209,"context_line":"nova-compute needs to check if the instance has ports that would mapping and if"},{"line_number":210,"context_line":"the ``RequestSpec`` is not provided in the call then fail the operation."},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"The support for move operations makes it possible to heal missing or"},{"line_number":213,"context_line":"inconsistent port allocation as during the move the requested resources are"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_8f607003","line":210,"updated":"2019-05-09 16:31:43.000000000","message":"So an older compute obviously wouldn\u0027t have this code. How would a newer compute validate this? Can it just check the network info cache on the instance and if there are any vifs with a binding:profile that have an allocation but there is no request spec it needs to fail? I\u0027m mostly checking to see if the compute needs to pull the ports from neutron again which would kind of suck since we\u0027re already doing it in conductor. If we have the information in the cache then let\u0027s just use that.","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"09578c6f28dbc75fd5470e497041b83054244397","unresolved":false,"context_lines":[{"line_number":207,"context_line":"in the system then the older RPC version will be used and the ``RequestSpec``"},{"line_number":208,"context_line":"will be stripped from the calls. Therefore an additional check is needed. The"},{"line_number":209,"context_line":"nova-compute needs to check if the instance has ports that would mapping and if"},{"line_number":210,"context_line":"the ``RequestSpec`` is not provided in the call then fail the operation."},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"The support for move operations makes it possible to heal missing or"},{"line_number":213,"context_line":"inconsistent port allocation as during the move the requested resources are"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_1336dde7","line":210,"in_reply_to":"dfbec78f_8f607003","updated":"2019-05-10 11:43:14.000000000","message":"Yeah. The compute can check the info cache, if there are vifs there with allocation key in the binding profile but the RequestSpec is not provided in the RPC call then the compute will fail the operation.","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"474b16ea21e1ef7d7e42bd1f23c5ee8133dffade","unresolved":false,"context_lines":[{"line_number":209,"context_line":"nova-compute needs to check if the instance has ports that would mapping and if"},{"line_number":210,"context_line":"the ``RequestSpec`` is not provided in the call then fail the operation."},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"The support for move operations makes it possible to heal missing or"},{"line_number":213,"context_line":"inconsistent port allocation as during the move the requested resources are"},{"line_number":214,"context_line":"re-calculated and the new allocation created accordingly in placement. This"},{"line_number":215,"context_line":"will complement `the port allocation healing capabilities`_ of the"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_cf3bc8e8","line":212,"updated":"2019-05-09 16:31:43.000000000","message":"Ack this is what I mentioned in the use cases section.","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"09578c6f28dbc75fd5470e497041b83054244397","unresolved":false,"context_lines":[{"line_number":209,"context_line":"nova-compute needs to check if the instance has ports that would mapping and if"},{"line_number":210,"context_line":"the ``RequestSpec`` is not provided in the call then fail the operation."},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"The support for move operations makes it possible to heal missing or"},{"line_number":213,"context_line":"inconsistent port allocation as during the move the requested resources are"},{"line_number":214,"context_line":"re-calculated and the new allocation created accordingly in placement. This"},{"line_number":215,"context_line":"will complement `the port allocation healing capabilities`_ of the"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_d34da572","line":212,"in_reply_to":"dfbec78f_cf3bc8e8","updated":"2019-05-10 11:43:14.000000000","message":"Done","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"474b16ea21e1ef7d7e42bd1f23c5ee8133dffade","unresolved":false,"context_lines":[{"line_number":213,"context_line":"inconsistent port allocation as during the move the requested resources are"},{"line_number":214,"context_line":"re-calculated and the new allocation created accordingly in placement. This"},{"line_number":215,"context_line":"will complement `the port allocation healing capabilities`_ of the"},{"line_number":216,"context_line":"``nova-manage heal allocation`` CLI that has multiple limitation in this"},{"line_number":217,"context_line":"regard."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"In general the operators having incomplete port allocations suggested to try to"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_6f55fc1c","line":216,"range":{"start_line":216,"start_character":2,"end_line":216,"end_character":29},"updated":"2019-05-09 16:31:43.000000000","message":"nit: nova-manage placement heal_allocations","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"09578c6f28dbc75fd5470e497041b83054244397","unresolved":false,"context_lines":[{"line_number":213,"context_line":"inconsistent port allocation as during the move the requested resources are"},{"line_number":214,"context_line":"re-calculated and the new allocation created accordingly in placement. This"},{"line_number":215,"context_line":"will complement `the port allocation healing capabilities`_ of the"},{"line_number":216,"context_line":"``nova-manage heal allocation`` CLI that has multiple limitation in this"},{"line_number":217,"context_line":"regard."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"In general the operators having incomplete port allocations suggested to try to"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_f350e90c","line":216,"range":{"start_line":216,"start_character":2,"end_line":216,"end_character":29},"in_reply_to":"dfbec78f_6f55fc1c","updated":"2019-05-10 11:43:14.000000000","message":"Done","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"474b16ea21e1ef7d7e42bd1f23c5ee8133dffade","unresolved":false,"context_lines":[{"line_number":235,"context_line":"Work Items"},{"line_number":236,"context_line":"----------"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"Handle each move operation as a separate task."},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"Dependencies"},{"line_number":241,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_0f1b2081","line":238,"updated":"2019-05-09 16:31:43.000000000","message":"Ideally you could do all of the compute RPC method changes in a single version (unshelve_instance, resize_instance, finish_resize) and then build on that, but it would get gross to have a compute RPC API version bump per method. That\u0027s an implementation detail though.","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"09578c6f28dbc75fd5470e497041b83054244397","unresolved":false,"context_lines":[{"line_number":235,"context_line":"Work Items"},{"line_number":236,"context_line":"----------"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"Handle each move operation as a separate task."},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"Dependencies"},{"line_number":241,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dfbec78f_5341b538","line":238,"in_reply_to":"dfbec78f_0f1b2081","updated":"2019-05-10 11:43:14.000000000","message":"Exactly how I started doing the implementation. One patch that bumps the RPC for all move operations, and separate patches to add support for each operation using the new RPC parameter.","commit_id":"f82ac1d8f8e07ec43697a4021e8fbce1bfb8e506"}]}
