)]}'
{"specs/train/approved/cross-cell-resize.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"92b14fc4e7e57971e85824252a84dfd15c80367b","unresolved":false,"context_lines":[{"line_number":393,"context_line":"  of the resize. It would also complicate the ability to recover the guest"},{"line_number":394,"context_line":"  on the source host by simply hard rebooting it in case the resize fails."},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"Limitations"},{"line_number":397,"context_line":"-----------"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"1. The `_poll_unconfirmed_resizes`_ periodic task, which can be configured to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_d9c19982","line":396,"updated":"2019-03-20 21:58:04.000000000","message":"I think another one that just came up in IRC is that since the config drive is not going to get transferred from the source to dest compute, we\u0027ll end up re-generating the config drive on the dest host, which could mean losing things like injected files (since those are not persisted in the database).\n\nI\u0027m not sure how to handle that. Would we create a temporary image of the config drive disk.config and upload that to glance as well? Even for volume-backed instances.","commit_id":"6ce7ce4324563484a10df4c07c3b9a3619212239"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dd73c5c183ae8649fc3d4bf7d463e0b693cbc4c5","unresolved":false,"context_lines":[{"line_number":184,"context_line":"**Target DB Setup**"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Before we can perform any checks in the destination host, we have to first"},{"line_number":187,"context_line":"populate the target cell database with the instance and its related data, e.g."},{"line_number":188,"context_line":"block device mappings, network info cache, instance actions, etc."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"In order to hide the target cell instance from the API when listing servers,"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_7c0392bf","line":187,"updated":"2019-04-03 21:22:30.000000000","message":"After this point, if anything fails the conductor task will rollback (hard destroy) the instance and its related records from the target cell DB so the resize can be attempted again once the issue is resolved in the target cell (if we don\u0027t hard destroy the instance created in the target cell db we\u0027ll get a DBDuplicateError unique constraint failure trying to resize there again unless the (soft) deleted instance is archived/purged).","commit_id":"48dff3440bf2fe02f3c73308d18c92016b63318d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"098428e375185d9e35bc793a2f53d272b07f71d8","unresolved":false,"context_lines":[{"line_number":184,"context_line":"**Target DB Setup**"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Before we can perform any checks in the destination host, we have to first"},{"line_number":187,"context_line":"populate the target cell database with the instance and its related data, e.g."},{"line_number":188,"context_line":"block device mappings, network info cache, instance actions, etc."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"In order to hide the target cell instance from the API when listing servers,"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_8677ee3b","line":187,"in_reply_to":"5fc1f717_7c0392bf","updated":"2019-04-04 22:19:59.000000000","message":"Done","commit_id":"48dff3440bf2fe02f3c73308d18c92016b63318d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dd73c5c183ae8649fc3d4bf7d463e0b693cbc4c5","unresolved":false,"context_lines":[{"line_number":332,"context_line":"* Delete migration-based resource allocations against the source compute node"},{"line_number":333,"context_line":"  resource provider (this can happen in the source compute or the API)."},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"* Delete the instance and its related records from the source cell database."},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"* Update the ``Migration.status`` to ``confirmed`` in the target cell DB."},{"line_number":338,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_9c38be9f","line":335,"updated":"2019-04-03 21:22:30.000000000","message":"This has to be a hard destroy otherwise you can\u0027t resize the instance back to the source cell again later if needed until the source cell db is archived/purged.","commit_id":"48dff3440bf2fe02f3c73308d18c92016b63318d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"098428e375185d9e35bc793a2f53d272b07f71d8","unresolved":false,"context_lines":[{"line_number":332,"context_line":"* Delete migration-based resource allocations against the source compute node"},{"line_number":333,"context_line":"  resource provider (this can happen in the source compute or the API)."},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"* Delete the instance and its related records from the source cell database."},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"* Update the ``Migration.status`` to ``confirmed`` in the target cell DB."},{"line_number":338,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_46710644","line":335,"in_reply_to":"5fc1f717_9c38be9f","updated":"2019-04-04 22:19:59.000000000","message":"Done","commit_id":"48dff3440bf2fe02f3c73308d18c92016b63318d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dd73c5c183ae8649fc3d4bf7d463e0b693cbc4c5","unresolved":false,"context_lines":[{"line_number":376,"context_line":"* RPC call the dest compute to terminate the instance (destroy the guest,"},{"line_number":377,"context_line":"  disconnect volumes and ports, free up tracked resources)."},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"* Destroy the instance and its related records from the target cell database."},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"* Update the ``Migration.status`` to ``reverted`` in the source cell DB."},{"line_number":382,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_5ccd76b5","line":379,"updated":"2019-04-03 21:22:30.000000000","message":"This needs to be a hard destroy as shown here:\n\nhttps://review.openstack.org/#/c/643451/5/nova/tests/functional/test_cross_cell_migrate.py@499\n\nOtherwise you can\u0027t resize that server to the target cell again until the target cell db is archived/purged.","commit_id":"48dff3440bf2fe02f3c73308d18c92016b63318d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"098428e375185d9e35bc793a2f53d272b07f71d8","unresolved":false,"context_lines":[{"line_number":376,"context_line":"* RPC call the dest compute to terminate the instance (destroy the guest,"},{"line_number":377,"context_line":"  disconnect volumes and ports, free up tracked resources)."},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"* Destroy the instance and its related records from the target cell database."},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"* Update the ``Migration.status`` to ``reverted`` in the source cell DB."},{"line_number":382,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_66cf6257","line":379,"in_reply_to":"5fc1f717_5ccd76b5","updated":"2019-04-04 22:19:59.000000000","message":"Done","commit_id":"48dff3440bf2fe02f3c73308d18c92016b63318d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3313780d0a1a2a10951c4a75cd9ed4d986e913a3","unresolved":false,"context_lines":[{"line_number":439,"context_line":"   files during the migration because the files are not persisted and therefore"},{"line_number":440,"context_line":"   even if they get metadata in the guest from the metadata API, they will not"},{"line_number":441,"context_line":"   get the personality files used during server create (or the last rebuild)."},{"line_number":442,"context_line":"   Similarly, servers that are evacuated, even if they had a config drive, will"},{"line_number":443,"context_line":"   lose the personality files during the evacuation since the config drive is"},{"line_number":444,"context_line":"   rebuilt on the destination host. It is also worth noting that the use of"},{"line_number":445,"context_line":"   personality files `is deprecated`_."}],"source_content_type":"text/x-rst","patch_set":2,"id":"5fc1f717_0e97c792","line":442,"range":{"start_line":442,"start_character":31,"end_line":442,"end_character":40},"updated":"2019-03-21 13:36:01.000000000","message":"Or shelved offloaded and then unshelved.","commit_id":"48dff3440bf2fe02f3c73308d18c92016b63318d"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"723702312f1abf7439fd31b3627e92f94514b16d","unresolved":false,"context_lines":[{"line_number":32,"context_line":"servers move to newer cells running newer hardware using newer flavors without"},{"line_number":33,"context_line":"users having to destroy and recreate their workloads."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"As a user, I want to my servers to retain their IPs, volumes and UUID"},{"line_number":36,"context_line":"while being migrated to another cell."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_b889a626","line":35,"range":{"start_line":35,"start_character":18,"end_line":35,"end_character":20},"updated":"2019-04-09 14:35:56.000000000","message":"nit: nix this.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ab3eff5c7f4cdcacd99a1060f88ad1faec16e385","unresolved":false,"context_lines":[{"line_number":32,"context_line":"servers move to newer cells running newer hardware using newer flavors without"},{"line_number":33,"context_line":"users having to destroy and recreate their workloads."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"As a user, I want to my servers to retain their IPs, volumes and UUID"},{"line_number":36,"context_line":"while being migrated to another cell."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fce034c_129e4c07","line":35,"range":{"start_line":35,"start_character":18,"end_line":35,"end_character":20},"in_reply_to":"5fc1f717_b889a626","updated":"2019-04-10 21:33:22.000000000","message":"Done","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"723702312f1abf7439fd31b3627e92f94514b16d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"Users, by naturally resizing their servers every once in a while, will help"},{"line_number":65,"context_line":"with the migration. If not, the admins can also give them \"new\" flavors and"},{"line_number":66,"context_line":"tell them they need to resize their servers by a certain date. By having this"},{"line_number":67,"context_line":"be doable by a user-controlled process, the users can help with the migration"},{"line_number":68,"context_line":"without knowing anything about cells underneath."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Terms"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_789a5e13","line":67,"range":{"start_line":67,"start_character":15,"end_line":67,"end_character":38},"updated":"2019-04-09 14:35:56.000000000","message":"note to self: this is policy-driven (https://review.openstack.org/#/c/642807/3/specs/train/approved/cross-cell-resize.rst@127) by default non-user.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b0a530b437a1a42fc1d9a1e32211e0d6a5a89361","unresolved":false,"context_lines":[{"line_number":65,"context_line":"with the migration. If not, the admins can also give them \"new\" flavors and"},{"line_number":66,"context_line":"tell them they need to resize their servers by a certain date. By having this"},{"line_number":67,"context_line":"be doable by a user-controlled process, the users can help with the migration"},{"line_number":68,"context_line":"without knowing anything about cells underneath."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Terms"},{"line_number":71,"context_line":"-----"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_e3678424","line":68,"updated":"2019-04-09 08:49:15.000000000","message":"Cool, thanks for the rewording.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b0a530b437a1a42fc1d9a1e32211e0d6a5a89361","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"* Hard delete: most tables in the cell database schema, like ``instances``,"},{"line_number":88,"context_line":"  use the `SoftDeleteMixin`_ which means when the corresponding object is"},{"line_number":89,"context_line":"  destroyed, the record\u0027s ``deleted`` column is updated to a non-0 value which"},{"line_number":90,"context_line":"  takes it out of most queries by default, like when listing servers in the"},{"line_number":91,"context_line":"  API. This is commonly referred to as a \"soft delete\" of the record since it"},{"line_number":92,"context_line":"  is still in the table and will not be actually deleted until the"},{"line_number":93,"context_line":"  ``nova-manage db archive_deleted_rows`` command is run. Note that this"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_e33544f8","line":90,"range":{"start_line":89,"start_character":37,"end_line":90,"end_character":42},"updated":"2019-04-09 08:49:15.000000000","message":"it\u0027s just updating with the value of the instance ID, but meh.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"723702312f1abf7439fd31b3627e92f94514b16d","unresolved":false,"context_lines":[{"line_number":90,"context_line":"  takes it out of most queries by default, like when listing servers in the"},{"line_number":91,"context_line":"  API. This is commonly referred to as a \"soft delete\" of the record since it"},{"line_number":92,"context_line":"  is still in the table and will not be actually deleted until the"},{"line_number":93,"context_line":"  ``nova-manage db archive_deleted_rows`` command is run. Note that this"},{"line_number":94,"context_line":"  concept of a \"soft deleted\" record is not the same as a server with status"},{"line_number":95,"context_line":"  ``SOFT_DELETED`` in the API, which is a server that is marked for deletion"},{"line_number":96,"context_line":"  but has not yet been reaped by the nova-compute service. Hard deleting cell"},{"line_number":97,"context_line":"  database records is necessary in a cross-cell resize to avoid"},{"line_number":98,"context_line":"  DBDuplicateEntry failures due to unique constraint violations because of"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_98e70ae4","line":95,"range":{"start_line":93,"start_character":58,"end_line":95,"end_character":29},"updated":"2019-04-09 14:35:56.000000000","message":"nice that you clarified as I just had that in my mind when I read the previous sentence.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b0a530b437a1a42fc1d9a1e32211e0d6a5a89361","unresolved":false,"context_lines":[{"line_number":97,"context_line":"  database records is necessary in a cross-cell resize to avoid"},{"line_number":98,"context_line":"  DBDuplicateEntry failures due to unique constraint violations because of"},{"line_number":99,"context_line":"  soft deleted records in a cell database to which an instance is being"},{"line_number":100,"context_line":"  resized."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":".. _split-MQ: https://docs.openstack.org/nova/latest/user/cellsv2-layout.html#multiple-cells"},{"line_number":103,"context_line":".. _SoftDeleteMixin: https://github.com/openstack/oslo.db/blob/4.45.0/oslo_db/sqlalchemy/models.py#L142"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_632154b4","line":100,"updated":"2019-04-09 08:49:15.000000000","message":"*me* nods. thanks for adding it too even if I understood you already.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"723702312f1abf7439fd31b3627e92f94514b16d","unresolved":false,"context_lines":[{"line_number":93,"context_line":"  ``nova-manage db archive_deleted_rows`` command is run. Note that this"},{"line_number":94,"context_line":"  concept of a \"soft deleted\" record is not the same as a server with status"},{"line_number":95,"context_line":"  ``SOFT_DELETED`` in the API, which is a server that is marked for deletion"},{"line_number":96,"context_line":"  but has not yet been reaped by the nova-compute service. Hard deleting cell"},{"line_number":97,"context_line":"  database records is necessary in a cross-cell resize to avoid"},{"line_number":98,"context_line":"  DBDuplicateEntry failures due to unique constraint violations because of"},{"line_number":99,"context_line":"  soft deleted records in a cell database to which an instance is being"},{"line_number":100,"context_line":"  resized."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":".. _split-MQ: https://docs.openstack.org/nova/latest/user/cellsv2-layout.html#multiple-cells"},{"line_number":103,"context_line":".. _SoftDeleteMixin: https://github.com/openstack/oslo.db/blob/4.45.0/oslo_db/sqlalchemy/models.py#L142"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_181a3ac5","line":100,"range":{"start_line":96,"start_character":59,"end_line":100,"end_character":10},"updated":"2019-04-09 14:35:56.000000000","message":"If I understand correctly in your previous iteration (before using hard-delete), you would also have had a new \"hidden\" column added so the soft deleted record would have the hidden variable set to True if it exists still in the source cell right? So the reason why you decided not to reuse this soft-deleted hidden record if you end up with the duplicate entry is because that record would be an old record with outdated flavor and host and other incorrect information right ?\n\nHence we need the hard delete to wipe out the old record *if* we hit the DBDuplicateError?","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a06cf082826cfd82ae69e758cb8612603895fd82","unresolved":false,"context_lines":[{"line_number":93,"context_line":"  ``nova-manage db archive_deleted_rows`` command is run. Note that this"},{"line_number":94,"context_line":"  concept of a \"soft deleted\" record is not the same as a server with status"},{"line_number":95,"context_line":"  ``SOFT_DELETED`` in the API, which is a server that is marked for deletion"},{"line_number":96,"context_line":"  but has not yet been reaped by the nova-compute service. Hard deleting cell"},{"line_number":97,"context_line":"  database records is necessary in a cross-cell resize to avoid"},{"line_number":98,"context_line":"  DBDuplicateEntry failures due to unique constraint violations because of"},{"line_number":99,"context_line":"  soft deleted records in a cell database to which an instance is being"},{"line_number":100,"context_line":"  resized."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":".. _split-MQ: https://docs.openstack.org/nova/latest/user/cellsv2-layout.html#multiple-cells"},{"line_number":103,"context_line":".. _SoftDeleteMixin: https://github.com/openstack/oslo.db/blob/4.45.0/oslo_db/sqlalchemy/models.py#L142"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_7d5a48f2","line":100,"range":{"start_line":96,"start_character":59,"end_line":100,"end_character":10},"in_reply_to":"5fc1f717_181a3ac5","updated":"2019-04-09 16:11:10.000000000","message":"\u003e So the reason why you decided not to reuse this soft-deleted hidden record if you end up with the duplicate entry is because that record would be an old record with outdated flavor and host and other incorrect information right ?\n\nMore or less yeah, I didn\u0027t really think about trying to handle DBDuplicateEntry and try to restore and then fully update the soft-deleted records, that would be a giant pain. By hard-deleting the flow is always the same if we try to move the instance back to a cell it was already on at one time (or never at all) which simplifies the code.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b0a530b437a1a42fc1d9a1e32211e0d6a5a89361","unresolved":false,"context_lines":[{"line_number":106,"context_line":"-----------"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"* There is a lack of connectivity, e.g. SSH access, between compute hosts in"},{"line_number":109,"context_line":"  different cells on which regular resize relies."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"* The image service (glance), persistent volume storage (cinder) and tenant"},{"line_number":112,"context_line":"  networks (neutron) span cells."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_a3141c4e","line":109,"updated":"2019-04-09 08:49:15.000000000","message":"thanks for the modification","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"956d287edae982cf75816c703fd4ee8fbaef14db","unresolved":false,"context_lines":[{"line_number":159,"context_line":"   problematic during a cross-cell resize if the conductor needs to validate"},{"line_number":160,"context_line":"   potential target hosts since the REST API response could timeout. Until the"},{"line_number":161,"context_line":"   `2.34 microversion`_, the live migrate API had the same problem."},{"line_number":162,"context_line":"   If the request is allowed to perform a cross-cell resize then we will RPC"},{"line_number":163,"context_line":"   cast from API to conductor."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":".. _2.56 microversion: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id51"},{"line_number":166,"context_line":".. _target host exists: https://github.com/openstack/nova/blob/c295e395d/nova/compute/api.py#L3570"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_9ee7f7e3","line":163,"range":{"start_line":162,"start_character":3,"end_line":163,"end_character":30},"updated":"2019-04-09 09:33:52.000000000","message":"This might change the api behavior as failure happened before pre_resize caused the original HTTP request to return with an error code while after this modification if the fault happen after the cast to the conductor then the HTTP response will be 202.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"10fc145237b93b936025fae46ec69c51bb57833e","unresolved":false,"context_lines":[{"line_number":159,"context_line":"   problematic during a cross-cell resize if the conductor needs to validate"},{"line_number":160,"context_line":"   potential target hosts since the REST API response could timeout. Until the"},{"line_number":161,"context_line":"   `2.34 microversion`_, the live migrate API had the same problem."},{"line_number":162,"context_line":"   If the request is allowed to perform a cross-cell resize then we will RPC"},{"line_number":163,"context_line":"   cast from API to conductor."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":".. _2.56 microversion: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id51"},{"line_number":166,"context_line":".. _target host exists: https://github.com/openstack/nova/blob/c295e395d/nova/compute/api.py#L3570"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_7104b914","line":163,"range":{"start_line":162,"start_character":3,"end_line":163,"end_character":30},"in_reply_to":"5fc1f717_9ee7f7e3","updated":"2019-04-09 13:13:27.000000000","message":"The API response is always a 202, but yes there is a change in behavior for cross-cell resize where it returns the 202 faster because the API service will RPC cast rather than call conductor, but that\u0027s arguably how normal resize should have worked all along too.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"723702312f1abf7439fd31b3627e92f94514b16d","unresolved":false,"context_lines":[{"line_number":169,"context_line":"Scheduler"},{"line_number":170,"context_line":"~~~~~~~~~"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"A new ``CrossCellWeigher`` will be introduced which will prefer hosts from the"},{"line_number":173,"context_line":"source cell by default. A configurable multiplier will be added to control the"},{"line_number":174,"context_line":"weight in case an operator wants to prefer cross cell migrations. This weigher"},{"line_number":175,"context_line":"will be a noop for all non-cross-cell move operations."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_7b3c9891","line":172,"updated":"2019-04-09 14:35:56.000000000","message":"question: the weigher is for prioritizing current cell versus other cells right ? there is no difference between \"multiple other cells\" right ? I know this is just an implementation detail, just asking for clarification.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a06cf082826cfd82ae69e758cb8612603895fd82","unresolved":false,"context_lines":[{"line_number":169,"context_line":"Scheduler"},{"line_number":170,"context_line":"~~~~~~~~~"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"A new ``CrossCellWeigher`` will be introduced which will prefer hosts from the"},{"line_number":173,"context_line":"source cell by default. A configurable multiplier will be added to control the"},{"line_number":174,"context_line":"weight in case an operator wants to prefer cross cell migrations. This weigher"},{"line_number":175,"context_line":"will be a noop for all non-cross-cell move operations."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_1df8e4c1","line":172,"in_reply_to":"5fc1f717_7b3c9891","updated":"2019-04-09 16:11:10.000000000","message":"I\u0027m not sure I understand the question, but yes the point of the weigher is to, by default, resize within the same cell if possible, i.e. if the filters pick hosts in the source cell and another cell, prefer the source cell and use the traditional resize flow. If the filters pick only hosts in another cell, the weigher doesn\u0027t really matter.\n\nSo is your question, if the resize *has* to move to another cell because the filters picked only hosts in other cells, does it weigh between multiple possible target cells? If so, the answer to that is \u0027no\u0027, it\u0027s not a cell weigher.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b0a530b437a1a42fc1d9a1e32211e0d6a5a89361","unresolved":false,"context_lines":[{"line_number":206,"context_line":".. note:: After this point, if anything fails the conductor task will hard"},{"line_number":207,"context_line":"          delete the instance and its related records from the target cell DB"},{"line_number":208,"context_line":"          so the resize can be attempted again once the issue is resolved in"},{"line_number":209,"context_line":"          the target cell."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"In order to hide the target cell instance from the API when listing servers,"},{"line_number":212,"context_line":"the instance in the target cell will be created with a ``hidden\u003dTrue`` field"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_9ea5b705","line":209,"updated":"2019-04-09 08:49:15.000000000","message":"Great note. Given it\u0027s synchronously calling the hosts, we can get an exception that will help to hard delete the instance in the target cell if so","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b0a530b437a1a42fc1d9a1e32211e0d6a5a89361","unresolved":false,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"In order to hide the target cell instance from the API when listing servers,"},{"line_number":212,"context_line":"the instance in the target cell will be created with a ``hidden\u003dTrue`` field"},{"line_number":213,"context_line":"which will be used to filter out these types of instances from the API."},{"line_number":214,"context_line":"Remember that at this point, the instance mapping in the API points at the"},{"line_number":215,"context_line":"source cell, so ``GET /servers/{server_id}`` would still only show details"},{"line_number":216,"context_line":"about the instance in the source cell. We use the new ``hidden`` field to"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_3ec5a38e","line":213,"updated":"2019-04-09 08:49:15.000000000","message":"Just FWIW, I reconsidered my opinion from when I reviewed the Stein spec, and I\u0027m good with the implementation detail of using a new DB instance field.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"956d287edae982cf75816c703fd4ee8fbaef14db","unresolved":false,"context_lines":[{"line_number":234,"context_line":"  to create the ``MigrationContext`` record."},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"* Verify the selected target host to ensure ports and volumes will work."},{"line_number":237,"context_line":"  This validation will include creating port bindings on the target host"},{"line_number":238,"context_line":"  and ensuring volume attachments can be connected to the host."},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"If either of these steps fail, the target host will be rejected. At that point,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_5e242f0d","line":237,"range":{"start_line":237,"start_character":31,"end_line":237,"end_character":53},"updated":"2019-04-09 09:33:52.000000000","message":"Note to myself: I need to handle bandwidth allocation in these case too.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"723702312f1abf7439fd31b3627e92f94514b16d","unresolved":false,"context_lines":[{"line_number":325,"context_line":"* Mark the target cell instance record as ``hidden\u003dFalse`` so it will show"},{"line_number":326,"context_line":"  up when listing servers. Note that because of how the `API filters`_"},{"line_number":327,"context_line":"  duplicate instance records, even if the user is listing servers at this exact"},{"line_number":328,"context_line":"  moment only one copy of the instance will be returned."},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"* Update the instance mapping to point at the target cell. This is so that"},{"line_number":331,"context_line":"  the confirm/revert actions will be performed on the resized instance in the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_2e7d6c1b","line":328,"range":{"start_line":328,"start_character":9,"end_line":328,"end_character":55},"updated":"2019-04-09 14:35:56.000000000","message":"++","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"723702312f1abf7439fd31b3627e92f94514b16d","unresolved":false,"context_lines":[{"line_number":353,"context_line":"* Delete migration-based resource allocations against the source compute node"},{"line_number":354,"context_line":"  resource provider (this can happen in the source compute or the API)."},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"* Hard delete the instance and its related records from the source cell"},{"line_number":357,"context_line":"  database."},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"* Update the ``Migration.status`` to ``confirmed`` in the target cell DB."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_8eb6e0f8","line":356,"updated":"2019-04-09 14:35:56.000000000","message":"so at any given point we will never have a soft-deleted hidden record right ? records in either cells will either be hidden or visible and then hard deleted.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a06cf082826cfd82ae69e758cb8612603895fd82","unresolved":false,"context_lines":[{"line_number":353,"context_line":"* Delete migration-based resource allocations against the source compute node"},{"line_number":354,"context_line":"  resource provider (this can happen in the source compute or the API)."},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"* Hard delete the instance and its related records from the source cell"},{"line_number":357,"context_line":"  database."},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"* Update the ``Migration.status`` to ``confirmed`` in the target cell DB."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_b509a831","line":356,"in_reply_to":"5fc1f717_8eb6e0f8","updated":"2019-04-09 16:11:10.000000000","message":"Correct. And I\u0027ve already got functional tests in the series asserting this as well:\n\nhttps://review.openstack.org/#/c/638268/12/nova/tests/functional/test_cross_cell_migrate.py@694\n\nhttps://review.openstack.org/#/c/638268/12/nova/tests/functional/test_cross_cell_migrate.py@431","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3cd66335586223f19f3b90c36d6426a6d9cc39a2","unresolved":false,"context_lines":[{"line_number":491,"context_line":"     cell DB, update the ``MigrationContext.migration_id`` to match the"},{"line_number":492,"context_line":"     ``Migration.id`` of the source cell migration record."},{"line_number":493,"context_line":""},{"line_number":494,"context_line":".. _personality-files:"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"3. It is possible to attach/detach volumes to/from a resized server. Because of"},{"line_number":497,"context_line":"   this, mirroring those block device mapping changes from the target cell DB"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_7b7794d5","line":494,"updated":"2019-04-10 20:30:46.000000000","message":"Heh this is in the wrong spot, should be above #3 in the previous section.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ab3eff5c7f4cdcacd99a1060f88ad1faec16e385","unresolved":false,"context_lines":[{"line_number":491,"context_line":"     cell DB, update the ``MigrationContext.migration_id`` to match the"},{"line_number":492,"context_line":"     ``Migration.id`` of the source cell migration record."},{"line_number":493,"context_line":""},{"line_number":494,"context_line":".. _personality-files:"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"3. It is possible to attach/detach volumes to/from a resized server. Because of"},{"line_number":497,"context_line":"   this, mirroring those block device mapping changes from the target cell DB"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fce034c_72c230ec","line":494,"in_reply_to":"5fc1f717_7b7794d5","updated":"2019-04-10 21:33:22.000000000","message":"Done","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"723702312f1abf7439fd31b3627e92f94514b16d","unresolved":false,"context_lines":[{"line_number":567,"context_line":""},{"line_number":568,"context_line":"* A ``hidden`` boolean column, which defaults to False, will be added to the"},{"line_number":569,"context_line":"  ``instances`` cell DB table and related versioned object."},{"line_number":570,"context_line":""},{"line_number":571,"context_line":"REST API impact"},{"line_number":572,"context_line":"---------------"},{"line_number":573,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_ceedc825","line":570,"updated":"2019-04-09 14:35:56.000000000","message":"would be nice to call out the request_spec.destination object change as well since you mention modify RequestSpec on L145.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a06cf082826cfd82ae69e758cb8612603895fd82","unresolved":false,"context_lines":[{"line_number":567,"context_line":""},{"line_number":568,"context_line":"* A ``hidden`` boolean column, which defaults to False, will be added to the"},{"line_number":569,"context_line":"  ``instances`` cell DB table and related versioned object."},{"line_number":570,"context_line":""},{"line_number":571,"context_line":"REST API impact"},{"line_number":572,"context_line":"---------------"},{"line_number":573,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_9841413c","line":570,"in_reply_to":"5fc1f717_ceedc825","updated":"2019-04-09 16:11:10.000000000","message":"I don\u0027t really consider that part of the data model since it doesn\u0027t require a schema migration change since everything in the RequestSpec.requested_destination field isn\u0027t persisted. It\u0027s an OVO change for sure, but I tend to not think of that as a data model change if a schema migration isn\u0027t required.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"956d287edae982cf75816c703fd4ee8fbaef14db","unresolved":false,"context_lines":[{"line_number":579,"context_line":"While the instance is resized and contains records in both cells, the API will"},{"line_number":580,"context_line":"have to take care to filter out duplicate instance and migration records while"},{"line_number":581,"context_line":"listing those across cells (using the ``hidden`` field)."},{"line_number":582,"context_line":""},{"line_number":583,"context_line":"Security impact"},{"line_number":584,"context_line":"---------------"},{"line_number":585,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_09698f8a","line":582,"updated":"2019-04-09 09:33:52.000000000","message":"The synchronicity of the resize call will be different in case of cross cell resize. Some error cases will not result in an HTTP error code any more but result in a failed resize action.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"10fc145237b93b936025fae46ec69c51bb57833e","unresolved":false,"context_lines":[{"line_number":579,"context_line":"While the instance is resized and contains records in both cells, the API will"},{"line_number":580,"context_line":"have to take care to filter out duplicate instance and migration records while"},{"line_number":581,"context_line":"listing those across cells (using the ``hidden`` field)."},{"line_number":582,"context_line":""},{"line_number":583,"context_line":"Security impact"},{"line_number":584,"context_line":"---------------"},{"line_number":585,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_d12c8d9a","line":582,"in_reply_to":"5fc1f717_09698f8a","updated":"2019-04-09 13:13:27.000000000","message":"I can add that here for clarity if I have to respin or in a follow up.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"1c284befd921b3323ae139ff054c3cf9cabb0d12","unresolved":false,"context_lines":[{"line_number":579,"context_line":"While the instance is resized and contains records in both cells, the API will"},{"line_number":580,"context_line":"have to take care to filter out duplicate instance and migration records while"},{"line_number":581,"context_line":"listing those across cells (using the ``hidden`` field)."},{"line_number":582,"context_line":""},{"line_number":583,"context_line":"Security impact"},{"line_number":584,"context_line":"---------------"},{"line_number":585,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_83c6a567","line":582,"in_reply_to":"5fc1f717_475c5b4a","updated":"2019-04-10 01:35:20.000000000","message":"This reminds me of the change in behavior for multi-create servers when a quota recheck fails. Old behavior was a fail fast in the API, new behavior was servers go into ERROR state and end users were not so pleased about it. Maybe also worth a mention in the release note when the feature fully lands.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ab3eff5c7f4cdcacd99a1060f88ad1faec16e385","unresolved":false,"context_lines":[{"line_number":579,"context_line":"While the instance is resized and contains records in both cells, the API will"},{"line_number":580,"context_line":"have to take care to filter out duplicate instance and migration records while"},{"line_number":581,"context_line":"listing those across cells (using the ``hidden`` field)."},{"line_number":582,"context_line":""},{"line_number":583,"context_line":"Security impact"},{"line_number":584,"context_line":"---------------"},{"line_number":585,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fce034c_927f9caa","line":582,"in_reply_to":"5fc1f717_d12c8d9a","updated":"2019-04-10 21:33:22.000000000","message":"Done","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9d1d20b0a04480ff6abae2115109b0ea6a9614f9","unresolved":false,"context_lines":[{"line_number":579,"context_line":"While the instance is resized and contains records in both cells, the API will"},{"line_number":580,"context_line":"have to take care to filter out duplicate instance and migration records while"},{"line_number":581,"context_line":"listing those across cells (using the ``hidden`` field)."},{"line_number":582,"context_line":""},{"line_number":583,"context_line":"Security impact"},{"line_number":584,"context_line":"---------------"},{"line_number":585,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_475c5b4a","line":582,"in_reply_to":"5fc1f717_d12c8d9a","updated":"2019-04-09 14:46:32.000000000","message":"Yeah I think it worth to document this somewhere","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"956d287edae982cf75816c703fd4ee8fbaef14db","unresolved":false,"context_lines":[{"line_number":599,"context_line":"cell because the notifications will stop from one cell and start in another,"},{"line_number":600,"context_line":"or be intermixed during the resize itself (prep at dest is in target cell while"},{"line_number":601,"context_line":"prep at source is in source cell). It is not clear what impact this could have"},{"line_number":602,"context_line":"on notification consumers like ceilometer though."},{"line_number":603,"context_line":""},{"line_number":604,"context_line":"If desired, new versioned notifications (or fields to existing notifications)"},{"line_number":605,"context_line":"could be added to denote a cross-cell resize is being performed, either as"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_e93203a7","line":602,"updated":"2019-04-09 09:33:52.000000000","message":"Either a consumer is already subscribed to multiple MQs to get notifications from multiple cells or the deployment uses a single MQ for each cell or notifications. Sure if the consumer relies on things like a single instance only sends notifications from the single cell MQ then such consumer needs to change but I don\u0027t think we can hide this.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"af5add656f8f12b679891aa02402f087bd7c5cd3","unresolved":false,"context_lines":[{"line_number":599,"context_line":"cell because the notifications will stop from one cell and start in another,"},{"line_number":600,"context_line":"or be intermixed during the resize itself (prep at dest is in target cell while"},{"line_number":601,"context_line":"prep at source is in source cell). It is not clear what impact this could have"},{"line_number":602,"context_line":"on notification consumers like ceilometer though."},{"line_number":603,"context_line":""},{"line_number":604,"context_line":"If desired, new versioned notifications (or fields to existing notifications)"},{"line_number":605,"context_line":"could be added to denote a cross-cell resize is being performed, either as"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_e583e301","line":602,"in_reply_to":"5fc1f717_438bdd1d","updated":"2019-04-10 14:46:09.000000000","message":"I don\u0027t see anything like that. We have action_initiator_project and action_initiator_user which are per-operation fields pulled from the RequestContext but the request_id is not in the payload as far as I can tell.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"1c284befd921b3323ae139ff054c3cf9cabb0d12","unresolved":false,"context_lines":[{"line_number":599,"context_line":"cell because the notifications will stop from one cell and start in another,"},{"line_number":600,"context_line":"or be intermixed during the resize itself (prep at dest is in target cell while"},{"line_number":601,"context_line":"prep at source is in source cell). It is not clear what impact this could have"},{"line_number":602,"context_line":"on notification consumers like ceilometer though."},{"line_number":603,"context_line":""},{"line_number":604,"context_line":"If desired, new versioned notifications (or fields to existing notifications)"},{"line_number":605,"context_line":"could be added to denote a cross-cell resize is being performed, either as"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_438bdd1d","line":602,"in_reply_to":"5fc1f717_e93203a7","updated":"2019-04-10 01:35:20.000000000","message":"Hopefully there\u0027s a field in notifications that allows correlation of the messages that appear in different cells that are part of the same request. Similar to request_id. If there is, then those collecting notifications could have a way of aggregating things.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"956d287edae982cf75816c703fd4ee8fbaef14db","unresolved":false,"context_lines":[{"line_number":643,"context_line":"That will be used during the validation step to ensure volumes attached to"},{"line_number":644,"context_line":"the instance can connect to the destination host in the target cell. The code"},{"line_number":645,"context_line":"itself will be relatively minor and just involve parts of an existing volume"},{"line_number":646,"context_line":"attach/detach operation for the driver."},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"Upgrade impact"},{"line_number":649,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_c9d2a734","line":646,"updated":"2019-04-09 09:33:52.000000000","message":"Do we need similar check for ports?","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"10fc145237b93b936025fae46ec69c51bb57833e","unresolved":false,"context_lines":[{"line_number":643,"context_line":"That will be used during the validation step to ensure volumes attached to"},{"line_number":644,"context_line":"the instance can connect to the destination host in the target cell. The code"},{"line_number":645,"context_line":"itself will be relatively minor and just involve parts of an existing volume"},{"line_number":646,"context_line":"attach/detach operation for the driver."},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"Upgrade impact"},{"line_number":649,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_d151ed0f","line":646,"in_reply_to":"5fc1f717_c9d2a734","updated":"2019-04-09 13:13:27.000000000","message":"In talking with the Neutron team (mlavalle specifically) I was told that simply attempting to create the port bindings against the dest host in the target cell should be sufficient to determine if networking will be OK, i.e. I\u0027m not planning on adding a can_plug_vifs type method or something.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9d1d20b0a04480ff6abae2115109b0ea6a9614f9","unresolved":false,"context_lines":[{"line_number":643,"context_line":"That will be used during the validation step to ensure volumes attached to"},{"line_number":644,"context_line":"the instance can connect to the destination host in the target cell. The code"},{"line_number":645,"context_line":"itself will be relatively minor and just involve parts of an existing volume"},{"line_number":646,"context_line":"attach/detach operation for the driver."},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"Upgrade impact"},{"line_number":649,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_072733c9","line":646,"in_reply_to":"5fc1f717_d151ed0f","updated":"2019-04-09 14:46:32.000000000","message":"Cool. Good to know that.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"956d287edae982cf75816c703fd4ee8fbaef14db","unresolved":false,"context_lines":[{"line_number":713,"context_line":"  compute-orchestrated flow (where the source and target nova-compute services"},{"line_number":714,"context_line":"  SSH and RPC between each other)."},{"line_number":715,"context_line":""},{"line_number":716,"context_line":""},{"line_number":717,"context_line":"Dependencies"},{"line_number":718,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":719,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_a984fb0b","line":716,"updated":"2019-04-09 09:33:52.000000000","message":"Do we need a separate task to handle the new hidden\u003dTrue flag across multiple REST APIs?","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9d1d20b0a04480ff6abae2115109b0ea6a9614f9","unresolved":false,"context_lines":[{"line_number":713,"context_line":"  compute-orchestrated flow (where the source and target nova-compute services"},{"line_number":714,"context_line":"  SSH and RPC between each other)."},{"line_number":715,"context_line":""},{"line_number":716,"context_line":""},{"line_number":717,"context_line":"Dependencies"},{"line_number":718,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":719,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_8209d12b","line":716,"in_reply_to":"5fc1f717_917045a6","updated":"2019-04-09 14:46:32.000000000","message":"Fair point. :)","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"10fc145237b93b936025fae46ec69c51bb57833e","unresolved":false,"context_lines":[{"line_number":713,"context_line":"  compute-orchestrated flow (where the source and target nova-compute services"},{"line_number":714,"context_line":"  SSH and RPC between each other)."},{"line_number":715,"context_line":""},{"line_number":716,"context_line":""},{"line_number":717,"context_line":"Dependencies"},{"line_number":718,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":719,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_917045a6","line":716,"in_reply_to":"5fc1f717_a984fb0b","updated":"2019-04-09 13:13:27.000000000","message":"We could, but honestly my code series is like 45+ patches right now, so there are any number of things that could be added here.","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"956d287edae982cf75816c703fd4ee8fbaef14db","unresolved":false,"context_lines":[{"line_number":760,"context_line":""},{"line_number":761,"context_line":"* Test a failure scenario where the server is recovered via rebuild in the"},{"line_number":762,"context_line":"  source cell."},{"line_number":763,"context_line":""},{"line_number":764,"context_line":"Unit tests will be added for the various units of changes leading up to the"},{"line_number":765,"context_line":"end of the series where the functional tests cover the integrated flows."},{"line_number":766,"context_line":"Negative/error/rollback scenarios will also be covered with unit tests and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_699ff34f","line":763,"updated":"2019-04-09 09:33:52.000000000","message":"nice list ++","commit_id":"e04fc55ee8af68f81eaecdd626546ead7e0348c4"}]}
