)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d82e8876951acf55586f51993a45b6816075ba8a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"the superconductor.  In subsequent patches, this migration object will"},{"line_number":12,"context_line":"be used when claiming NUMA resources on the destination host."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Implements: bp/numa-aware-live-migration"},{"line_number":15,"context_line":"Change-Id: I16ab4688335a58f86109b210a7c602a8eacdd94e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"9fdfeff1_e1933fff","line":14,"range":{"start_line":14,"start_character":12,"end_line":14,"end_character":15},"updated":"2019-02-24 22:26:01.000000000","message":"Here and patches going forward, this doesn\u0027t link to launchpad. What you want is:\n\nImplements blueprint numa-aware-live-migration","commit_id":"7ebe92043653994af26f63532c0b9061d5b98eda"}],"nova/compute/manager.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"032068f5c9540cfa8c596dd31bc0bc5b42d9d2d9","unresolved":false,"context_lines":[{"line_number":5988,"context_line":"    @wrap_instance_fault"},{"line_number":5989,"context_line":"    def check_can_live_migrate_destination(self, ctxt, instance,"},{"line_number":5990,"context_line":"                                           block_migration, disk_over_commit,"},{"line_number":5991,"context_line":"                                           migration):"},{"line_number":5992,"context_line":"        \"\"\"Check if it is possible to execute live migration."},{"line_number":5993,"context_line":""},{"line_number":5994,"context_line":"        This runs checks on the destination host, and then calls"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_729eb6b9","line":5991,"range":{"start_line":5991,"start_character":43,"end_line":5991,"end_character":52},"updated":"2019-02-04 13:04:48.000000000","message":"is this a migration object\nhttps://github.com/openstack/nova/blob/master/nova/objects/migration.py#L36\n\nor a migration_data object\nhttps://github.com/openstack/nova/blob/master/nova/objects/migrate_data.py#L99\nhttps://github.com/openstack/nova/blob/master/nova/objects/migrate_data.py#L205\n\nif the later can you update the field to migration_data\n\n\nbased on https://review.openstack.org/#/c/634605/3/nova/conductor/tasks/live_migrate.py@262 i think this is the migration object not migration_data but it would be good to clarify.\n\nalso you might want do default this to None to avoid some of the unit test failure","commit_id":"e589dfa663186755d2ceb62ed6e5bf770197c5e3"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"700da24866e948be31a9e84062f2cee90c4d693d","unresolved":false,"context_lines":[{"line_number":5988,"context_line":"    @wrap_instance_fault"},{"line_number":5989,"context_line":"    def check_can_live_migrate_destination(self, ctxt, instance,"},{"line_number":5990,"context_line":"                                           block_migration, disk_over_commit,"},{"line_number":5991,"context_line":"                                           migration):"},{"line_number":5992,"context_line":"        \"\"\"Check if it is possible to execute live migration."},{"line_number":5993,"context_line":""},{"line_number":5994,"context_line":"        This runs checks on the destination host, and then calls"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_aec35238","line":5991,"range":{"start_line":5991,"start_character":43,"end_line":5991,"end_character":52},"in_reply_to":"9fdfeff1_729eb6b9","updated":"2019-02-04 20:08:54.000000000","message":"\u003e is this a migration object\n \u003e https://github.com/openstack/nova/blob/master/nova/objects/migration.py#L36\n \u003e \n \u003e or a migration_data object\n \u003e https://github.com/openstack/nova/blob/master/nova/objects/migrate_data.py#L99\n \u003e https://github.com/openstack/nova/blob/master/nova/objects/migrate_data.py#L205\n \u003e \n \u003e if the later can you update the field to migration_data\n \nThe former.\n\n \n \u003e based on https://review.openstack.org/#/c/634605/3/nova/conductor/tasks/live_migrate.py@262\n \u003e i think this is the migration object not migration_data but it\n \u003e would be good to clarify.\n\nI\u0027ll try to make the doctext :param: clearer.\n\n \u003e also you might want do default this to None to avoid some of the\n \u003e unit test failure\n\nAs I said on the other line, since with version 5.2 migration isn\u0027t optional, I\u0027d rather update the unit tests and not default this to None.","commit_id":"e589dfa663186755d2ceb62ed6e5bf770197c5e3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cf84a28481a4c426ece3cf672b32508e8473f62e","unresolved":false,"context_lines":[{"line_number":6062,"context_line":"                                if None, calculate it in driver"},{"line_number":6063,"context_line":"        :param disk_over_commit: if true, allow disk over commit"},{"line_number":6064,"context_line":"                                 if None, ignore disk usage checking"},{"line_number":6065,"context_line":"        :param migration: objects.Migration object for this live migration."},{"line_number":6066,"context_line":"        :returns: a dict containing migration info"},{"line_number":6067,"context_line":"        \"\"\""},{"line_number":6068,"context_line":"        src_compute_info \u003d obj_base.obj_to_primitive("}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_4c97f7ec","line":6065,"updated":"2019-02-22 14:35:17.000000000","message":"You\u0027ll need to keep in mind for whatever relies on this later that if this is an old compute it won\u0027t have this parameter. I assume it will be check_can_live_migrate_source which will be checking the contents of dest_check_data and if this dest host is old, the dest_check_data just won\u0027t have whatever data you\u0027re looking for on the source side. Which also means we likely need to have a minimum compute service version check somewhere before we enable numa live migration (I guess we\u0027d do that service version check in conductor).","commit_id":"a3ef23f1e7a56c3c7bb65b4bbb0c84efc91d310d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"da5f6967b606b8dd30ab4267ba7da7241e9ca314","unresolved":false,"context_lines":[{"line_number":6062,"context_line":"                                if None, calculate it in driver"},{"line_number":6063,"context_line":"        :param disk_over_commit: if true, allow disk over commit"},{"line_number":6064,"context_line":"                                 if None, ignore disk usage checking"},{"line_number":6065,"context_line":"        :param migration: objects.Migration object for this live migration."},{"line_number":6066,"context_line":"        :returns: a dict containing migration info"},{"line_number":6067,"context_line":"        \"\"\""},{"line_number":6068,"context_line":"        src_compute_info \u003d obj_base.obj_to_primitive("}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_811ef371","line":6065,"in_reply_to":"9fdfeff1_0c36cab5","updated":"2019-02-24 22:45:19.000000000","message":"Yeah but you can have source computes that are running Rocky code and won\u0027t have that check. Which is why something (probably conductor) is still going to have to make sure both the source and dest are new enough to support this new behavior for numa live migration.","commit_id":"a3ef23f1e7a56c3c7bb65b4bbb0c84efc91d310d"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"71a71dc7fecdce49c96492b7bd52bd6aa495fa85","unresolved":false,"context_lines":[{"line_number":6062,"context_line":"                                if None, calculate it in driver"},{"line_number":6063,"context_line":"        :param disk_over_commit: if true, allow disk over commit"},{"line_number":6064,"context_line":"                                 if None, ignore disk usage checking"},{"line_number":6065,"context_line":"        :param migration: objects.Migration object for this live migration."},{"line_number":6066,"context_line":"        :returns: a dict containing migration info"},{"line_number":6067,"context_line":"        \"\"\""},{"line_number":6068,"context_line":"        src_compute_info \u003d obj_base.obj_to_primitive("}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_58f24d71","line":6065,"in_reply_to":"9fdfeff1_4c97f7ec","updated":"2019-02-22 17:23:53.000000000","message":"If a new conductor calls this wouldn\u0027t the migration param get backeleveled out of the call by the rpcapi layer?","commit_id":"a3ef23f1e7a56c3c7bb65b4bbb0c84efc91d310d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7e09a27f8ece14defd5481dcbc1c819c303cfa51","unresolved":false,"context_lines":[{"line_number":6062,"context_line":"                                if None, calculate it in driver"},{"line_number":6063,"context_line":"        :param disk_over_commit: if true, allow disk over commit"},{"line_number":6064,"context_line":"                                 if None, ignore disk usage checking"},{"line_number":6065,"context_line":"        :param migration: objects.Migration object for this live migration."},{"line_number":6066,"context_line":"        :returns: a dict containing migration info"},{"line_number":6067,"context_line":"        \"\"\""},{"line_number":6068,"context_line":"        src_compute_info \u003d obj_base.obj_to_primitive("}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_aca8ded8","line":6065,"in_reply_to":"9fdfeff1_58f24d71","updated":"2019-02-22 17:40:59.000000000","message":"Yes. My point is just that the source compute can\u0027t assume it\u0027s going to get the data from an older dest compute. If the source does require it coming over the wire from the dest, then we need a higher level service version check on *both* compute services which is where conductor would do that.","commit_id":"a3ef23f1e7a56c3c7bb65b4bbb0c84efc91d310d"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"b2e072d2bc97052cda5ba0317d679fc399bcd259","unresolved":false,"context_lines":[{"line_number":6062,"context_line":"                                if None, calculate it in driver"},{"line_number":6063,"context_line":"        :param disk_over_commit: if true, allow disk over commit"},{"line_number":6064,"context_line":"                                 if None, ignore disk usage checking"},{"line_number":6065,"context_line":"        :param migration: objects.Migration object for this live migration."},{"line_number":6066,"context_line":"        :returns: a dict containing migration info"},{"line_number":6067,"context_line":"        \"\"\""},{"line_number":6068,"context_line":"        src_compute_info \u003d obj_base.obj_to_primitive("}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_342f4389","line":6065,"in_reply_to":"9fdfeff1_811ef371","updated":"2019-02-24 23:01:15.000000000","message":"So in the spec we talked about not blocking live migration for old computes because live migrating workloads during rolling upgrades is a common use case. We even made a truth table [1] :)\n\nSo what I\u0027m doing in https://review.openstack.org/#/c/634606/29/nova/compute/manager.py is checking the source or dest compute version at every step. That way you could live migrate from an old compute to a new compute. You wouldn\u0027t get the new claims and updated XML, but it would at least work assuming you know what you\u0027re doing and have, for example, provided an identical, empty new dest compute.\n\n[1] https://specs.openstack.org/openstack/nova-specs/specs/stein/approved/numa-aware-live-migration.html#upgrade-impact","commit_id":"a3ef23f1e7a56c3c7bb65b4bbb0c84efc91d310d"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"904949e1c2adce4cd0c3176588da1a1e1e3a1120","unresolved":false,"context_lines":[{"line_number":6062,"context_line":"                                if None, calculate it in driver"},{"line_number":6063,"context_line":"        :param disk_over_commit: if true, allow disk over commit"},{"line_number":6064,"context_line":"                                 if None, ignore disk usage checking"},{"line_number":6065,"context_line":"        :param migration: objects.Migration object for this live migration."},{"line_number":6066,"context_line":"        :returns: a dict containing migration info"},{"line_number":6067,"context_line":"        \"\"\""},{"line_number":6068,"context_line":"        src_compute_info \u003d obj_base.obj_to_primitive("}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_0c36cab5","line":6065,"in_reply_to":"9fdfeff1_aca8ded8","updated":"2019-02-22 17:44:46.000000000","message":"On the source it\u0027s handled by just checking for the presence of `dst_numa_config` in the migrate_data:\n\nhttps://review.openstack.org/#/c/635229/20/nova/virt/libvirt/migration.py@92","commit_id":"a3ef23f1e7a56c3c7bb65b4bbb0c84efc91d310d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"41e4760ddf9b342f49adcf2eced79f2901910f79","unresolved":false,"context_lines":[{"line_number":6066,"context_line":"    @wrap_instance_fault"},{"line_number":6067,"context_line":"    def check_can_live_migrate_destination(self, ctxt, instance,"},{"line_number":6068,"context_line":"                                           block_migration, disk_over_commit,"},{"line_number":6069,"context_line":"                                           migration):"},{"line_number":6070,"context_line":"        \"\"\"Check if it is possible to execute live migration."},{"line_number":6071,"context_line":""},{"line_number":6072,"context_line":"        This runs checks on the destination host, and then calls"}],"source_content_type":"text/x-python","patch_set":20,"id":"9fdfeff1_127fafab","line":6069,"range":{"start_line":6069,"start_character":43,"end_line":6069,"end_character":52},"updated":"2019-02-25 05:52:49.000000000","message":"we should have a default value None for it. When the cluster is under the upgrade, we will pin the rpc call to the lower version, that means we won\u0027t pass a value for this parameter.","commit_id":"7ebe92043653994af26f63532c0b9061d5b98eda"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"d19a169fddea64abb2b291293fce2ee7528ad3b6","unresolved":false,"context_lines":[{"line_number":6066,"context_line":"    @wrap_instance_fault"},{"line_number":6067,"context_line":"    def check_can_live_migrate_destination(self, ctxt, instance,"},{"line_number":6068,"context_line":"                                           block_migration, disk_over_commit,"},{"line_number":6069,"context_line":"                                           migration):"},{"line_number":6070,"context_line":"        \"\"\"Check if it is possible to execute live migration."},{"line_number":6071,"context_line":""},{"line_number":6072,"context_line":"        This runs checks on the destination host, and then calls"}],"source_content_type":"text/x-python","patch_set":20,"id":"9fdfeff1_d96dc303","line":6069,"range":{"start_line":6069,"start_character":43,"end_line":6069,"end_character":52},"in_reply_to":"9fdfeff1_127fafab","updated":"2019-02-25 15:11:27.000000000","message":"Good point. Even new conductor + new compute will be missing `migration` if the deployment is in the middle of an upgrade and is pinned to the old RPC version. Done.","commit_id":"7ebe92043653994af26f63532c0b9061d5b98eda"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ff42368765a0bc10a0090c37560139e2df083c06","unresolved":false,"context_lines":[{"line_number":6066,"context_line":"    @wrap_instance_fault"},{"line_number":6067,"context_line":"    def check_can_live_migrate_destination(self, ctxt, instance,"},{"line_number":6068,"context_line":"                                           block_migration, disk_over_commit,"},{"line_number":6069,"context_line":"                                           migration):"},{"line_number":6070,"context_line":"        \"\"\"Check if it is possible to execute live migration."},{"line_number":6071,"context_line":""},{"line_number":6072,"context_line":"        This runs checks on the destination host, and then calls"}],"source_content_type":"text/x-python","patch_set":20,"id":"9fdfeff1_4deca8f3","line":6069,"range":{"start_line":6069,"start_character":43,"end_line":6069,"end_character":52},"in_reply_to":"9fdfeff1_d96dc303","updated":"2019-02-25 20:49:07.000000000","message":"Just piling on here, but.. yep, all arguments past N.0 need to be defaulted. The RPC layer actually calls these by kwarg.","commit_id":"7ebe92043653994af26f63532c0b9061d5b98eda"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4ce9139de45e621f41cf38f3cfff42d8851ff0c2","unresolved":false,"context_lines":[{"line_number":6440,"context_line":"        :param disk_over_commit: if true, allow disk over commit"},{"line_number":6441,"context_line":"                                 if None, ignore disk usage checking"},{"line_number":6442,"context_line":"        :param migration: objects.Migration object for this live migration."},{"line_number":6443,"context_line":"        :param limits: objects.SchedulerLimits object for this live migration."},{"line_number":6444,"context_line":"        :returns: a LiveMigrateData object (hypervisor-dependent)"},{"line_number":6445,"context_line":"        \"\"\""},{"line_number":6446,"context_line":"        src_compute_info \u003d obj_base.obj_to_primitive("}],"source_content_type":"text/x-python","patch_set":40,"id":"7faddb67_953287a6","line":6443,"updated":"2019-08-16 18:15:09.000000000","message":"You don\u0027t seem to be using either of these here, which means you shouldn\u0027t be changing the definition and updating the version. If you do this kind of thing, we can\u0027t differentiate between a service that requires a thing, and a service that uses that required thing.","commit_id":"35ded13e9e2d7674a2f749b7ceb15ed27e1a717b"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"033d3a206b7d76e27fcbe0b726154d44cc0b03c6","unresolved":false,"context_lines":[{"line_number":6440,"context_line":"        :param disk_over_commit: if true, allow disk over commit"},{"line_number":6441,"context_line":"                                 if None, ignore disk usage checking"},{"line_number":6442,"context_line":"        :param migration: objects.Migration object for this live migration."},{"line_number":6443,"context_line":"        :param limits: objects.SchedulerLimits object for this live migration."},{"line_number":6444,"context_line":"        :returns: a LiveMigrateData object (hypervisor-dependent)"},{"line_number":6445,"context_line":"        \"\"\""},{"line_number":6446,"context_line":"        src_compute_info \u003d obj_base.obj_to_primitive("}],"source_content_type":"text/x-python","patch_set":40,"id":"7faddb67_2d2bd595","line":6443,"in_reply_to":"7faddb67_953287a6","updated":"2019-08-23 18:06:51.000000000","message":"Squashed into the top patch, so we\u0027re now using them in the same patch.","commit_id":"35ded13e9e2d7674a2f749b7ceb15ed27e1a717b"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"033d3a206b7d76e27fcbe0b726154d44cc0b03c6","unresolved":false,"context_lines":[{"line_number":6440,"context_line":"        :param disk_over_commit: if true, allow disk over commit"},{"line_number":6441,"context_line":"                                 if None, ignore disk usage checking"},{"line_number":6442,"context_line":"        :param migration: objects.Migration object for this live migration."},{"line_number":6443,"context_line":"        :param limits: objects.SchedulerLimits object for this live migration."},{"line_number":6444,"context_line":"        :returns: a LiveMigrateData object (hypervisor-dependent)"},{"line_number":6445,"context_line":"        \"\"\""},{"line_number":6446,"context_line":"        src_compute_info \u003d obj_base.obj_to_primitive("}],"source_content_type":"text/x-python","patch_set":40,"id":"7faddb67_0d1cd975","line":6443,"in_reply_to":"7faddb67_953287a6","updated":"2019-08-23 18:06:51.000000000","message":"Squashed into the top patch.","commit_id":"35ded13e9e2d7674a2f749b7ceb15ed27e1a717b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4ce9139de45e621f41cf38f3cfff42d8851ff0c2","unresolved":false,"context_lines":[{"line_number":7415,"context_line":"    @wrap_instance_fault"},{"line_number":7416,"context_line":"    def rollback_live_migration_at_destination(self, context, instance,"},{"line_number":7417,"context_line":"                                               destroy_disks, migrate_data,"},{"line_number":7418,"context_line":"                                               do_cleanup\u003dTrue):"},{"line_number":7419,"context_line":"        \"\"\"Cleaning up image directory that is created pre_live_migration."},{"line_number":7420,"context_line":""},{"line_number":7421,"context_line":"        :param context: security context"}],"source_content_type":"text/x-python","patch_set":40,"id":"7faddb67_d5e8ffdf","line":7418,"range":{"start_line":7418,"start_character":47,"end_line":7418,"end_character":62},"updated":"2019-08-16 18:15:09.000000000","message":"You didn\u0027t add this to the docstring. Also same issue as above...adding this as required/accepted before you use it is violating the versioning contract. You claim to support 5.2 if you take this, but...then you don\u0027t do what 5.2 says you do.","commit_id":"35ded13e9e2d7674a2f749b7ceb15ed27e1a717b"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"033d3a206b7d76e27fcbe0b726154d44cc0b03c6","unresolved":false,"context_lines":[{"line_number":7415,"context_line":"    @wrap_instance_fault"},{"line_number":7416,"context_line":"    def rollback_live_migration_at_destination(self, context, instance,"},{"line_number":7417,"context_line":"                                               destroy_disks, migrate_data,"},{"line_number":7418,"context_line":"                                               do_cleanup\u003dTrue):"},{"line_number":7419,"context_line":"        \"\"\"Cleaning up image directory that is created pre_live_migration."},{"line_number":7420,"context_line":""},{"line_number":7421,"context_line":"        :param context: security context"}],"source_content_type":"text/x-python","patch_set":40,"id":"7faddb67_6d0a2d28","line":7418,"range":{"start_line":7418,"start_character":47,"end_line":7418,"end_character":62},"in_reply_to":"7faddb67_d5e8ffdf","updated":"2019-08-23 18:06:51.000000000","message":"Done (and squashed).","commit_id":"35ded13e9e2d7674a2f749b7ceb15ed27e1a717b"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"032068f5c9540cfa8c596dd31bc0bc5b42d9d2d9","unresolved":false,"context_lines":[{"line_number":363,"context_line":"        \u0027ocata\u0027: \u00274.13\u0027,"},{"line_number":364,"context_line":"        \u0027pike\u0027: \u00274.17\u0027,"},{"line_number":365,"context_line":"        \u0027queens\u0027: \u00275.0\u0027,"},{"line_number":366,"context_line":"        \u0027rocky\u0027: \u00275.0\u0027,"},{"line_number":367,"context_line":"    }"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_52d05254","line":366,"range":{"start_line":366,"start_character":9,"end_line":366,"end_character":23},"updated":"2019-02-04 13:04:48.000000000","message":"do we need to add a stein version alias for 5.2?\nim not sure when that is normally done i think its near the end of the cycle.","commit_id":"e589dfa663186755d2ceb62ed6e5bf770197c5e3"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"700da24866e948be31a9e84062f2cee90c4d693d","unresolved":false,"context_lines":[{"line_number":363,"context_line":"        \u0027ocata\u0027: \u00274.13\u0027,"},{"line_number":364,"context_line":"        \u0027pike\u0027: \u00274.17\u0027,"},{"line_number":365,"context_line":"        \u0027queens\u0027: \u00275.0\u0027,"},{"line_number":366,"context_line":"        \u0027rocky\u0027: \u00275.0\u0027,"},{"line_number":367,"context_line":"    }"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_aeeef2ea","line":366,"range":{"start_line":366,"start_character":9,"end_line":366,"end_character":23},"in_reply_to":"9fdfeff1_52d05254","updated":"2019-02-04 20:08:54.000000000","message":"At release time? Maybe something will add 5.3?","commit_id":"e589dfa663186755d2ceb62ed6e5bf770197c5e3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"032068f5c9540cfa8c596dd31bc0bc5b42d9d2d9","unresolved":false,"context_lines":[{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    def check_can_live_migrate_destination(self, ctxt, instance, destination,"},{"line_number":505,"context_line":"                                           block_migration, disk_over_commit,"},{"line_number":506,"context_line":"                                           migration):"},{"line_number":507,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":508,"context_line":"        version \u003d \u00275.2\u0027"},{"line_number":509,"context_line":"        kwargs \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_92523ade","line":506,"range":{"start_line":506,"start_character":43,"end_line":506,"end_character":52},"updated":"2019-02-04 13:04:48.000000000","message":"this would also need to default to None i belive to avoid the unit test faiures.\n\nwe would need to add new test for the new version but idealy the existing test could remain to test teh old version. e.g. 5.0","commit_id":"e589dfa663186755d2ceb62ed6e5bf770197c5e3"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"700da24866e948be31a9e84062f2cee90c4d693d","unresolved":false,"context_lines":[{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    def check_can_live_migrate_destination(self, ctxt, instance, destination,"},{"line_number":505,"context_line":"                                           block_migration, disk_over_commit,"},{"line_number":506,"context_line":"                                           migration):"},{"line_number":507,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":508,"context_line":"        version \u003d \u00275.2\u0027"},{"line_number":509,"context_line":"        kwargs \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_0e1dbe0e","line":506,"range":{"start_line":506,"start_character":43,"end_line":506,"end_character":52},"in_reply_to":"9fdfeff1_92523ade","updated":"2019-02-04 20:08:54.000000000","message":"I\u0027d rather update the unit tests - `migration` isn\u0027t optional, I don\u0027t think we should confuse things by defaulting it to None.","commit_id":"e589dfa663186755d2ceb62ed6e5bf770197c5e3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"032068f5c9540cfa8c596dd31bc0bc5b42d9d2d9","unresolved":false,"context_lines":[{"line_number":505,"context_line":"                                           block_migration, disk_over_commit,"},{"line_number":506,"context_line":"                                           migration):"},{"line_number":507,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":508,"context_line":"        version \u003d \u00275.2\u0027"},{"line_number":509,"context_line":"        kwargs \u003d {"},{"line_number":510,"context_line":"            \u0027instance\u0027: instance,"},{"line_number":511,"context_line":"            \u0027block_migration\u0027: block_migration,"},{"line_number":512,"context_line":"            \u0027disk_over_commit\u0027: disk_over_commit,"},{"line_number":513,"context_line":"            \u0027migration\u0027: migration"},{"line_number":514,"context_line":"        }"},{"line_number":515,"context_line":"        if not client.can_send_version(version):"},{"line_number":516,"context_line":"            kwargs.pop(\u0027migration\u0027)"},{"line_number":517,"context_line":"        cctxt \u003d client.prepare(server\u003ddestination, version\u003dversion,"},{"line_number":518,"context_line":"                               call_monitor_timeout\u003dCONF.rpc_response_timeout,"},{"line_number":519,"context_line":"                               timeout\u003dCONF.long_rpc_timeout)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_52e7f247","line":516,"range":{"start_line":508,"start_character":5,"end_line":516,"end_character":35},"updated":"2019-02-04 13:04:48.000000000","message":"note to self this is the normal backleveling for the rpc call to support mixed version deployments","commit_id":"e589dfa663186755d2ceb62ed6e5bf770197c5e3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cf84a28481a4c426ece3cf672b32508e8473f62e","unresolved":false,"context_lines":[{"line_number":512,"context_line":"            \u0027disk_over_commit\u0027: disk_over_commit,"},{"line_number":513,"context_line":"            \u0027migration\u0027: migration"},{"line_number":514,"context_line":"        }"},{"line_number":515,"context_line":"        if not client.can_send_version(version):"},{"line_number":516,"context_line":"            kwargs.pop(\u0027migration\u0027)"},{"line_number":517,"context_line":"        cctxt \u003d client.prepare(server\u003ddestination, version\u003dversion,"},{"line_number":518,"context_line":"                               call_monitor_timeout\u003dCONF.rpc_response_timeout,"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_6c919bf1","line":515,"updated":"2019-02-22 14:35:17.000000000","message":"The version has to go back to 5.0 here.","commit_id":"a3ef23f1e7a56c3c7bb65b4bbb0c84efc91d310d"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"71a71dc7fecdce49c96492b7bd52bd6aa495fa85","unresolved":false,"context_lines":[{"line_number":512,"context_line":"            \u0027disk_over_commit\u0027: disk_over_commit,"},{"line_number":513,"context_line":"            \u0027migration\u0027: migration"},{"line_number":514,"context_line":"        }"},{"line_number":515,"context_line":"        if not client.can_send_version(version):"},{"line_number":516,"context_line":"            kwargs.pop(\u0027migration\u0027)"},{"line_number":517,"context_line":"        cctxt \u003d client.prepare(server\u003ddestination, version\u003dversion,"},{"line_number":518,"context_line":"                               call_monitor_timeout\u003dCONF.rpc_response_timeout,"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_3813c9ba","line":515,"in_reply_to":"9fdfeff1_6c919bf1","updated":"2019-02-22 17:23:53.000000000","message":"Done","commit_id":"a3ef23f1e7a56c3c7bb65b4bbb0c84efc91d310d"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ff42368765a0bc10a0090c37560139e2df083c06","unresolved":false,"context_lines":[{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    def check_can_live_migrate_destination(self, ctxt, instance, destination,"},{"line_number":505,"context_line":"                                           block_migration, disk_over_commit,"},{"line_number":506,"context_line":"                                           migration):"},{"line_number":507,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":508,"context_line":"        version \u003d \u00275.2\u0027"},{"line_number":509,"context_line":"        kwargs \u003d {"}],"source_content_type":"text/x-python","patch_set":20,"id":"9fdfeff1_cdb17803","line":506,"updated":"2019-02-25 20:49:07.000000000","message":"Just in case you didn\u0027t realize, this should *not* have a default like the manager side.","commit_id":"7ebe92043653994af26f63532c0b9061d5b98eda"}],"nova/conductor/tasks/live_migrate.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cf84a28481a4c426ece3cf672b32508e8473f62e","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                    state\u003dpower_state.STATE_MAP[self.instance.power_state],"},{"line_number":155,"context_line":"                    method\u003d\u0027live migrate\u0027)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def _check_instance_has_no_numa(self):"},{"line_number":158,"context_line":"        \"\"\"Prevent live migrations of instances with NUMA topologies.\"\"\""},{"line_number":159,"context_line":"        if not self.instance.numa_topology:"},{"line_number":160,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_6caafb19","line":157,"range":{"start_line":157,"start_character":8,"end_line":157,"end_character":35},"updated":"2019-02-22 14:35:17.000000000","message":"Somewhere in here is where I\u0027d expect we need to check that both the source and dest compute services are new enough to support numa-aware live migration. The problem is this is currently called before we pick a destination (assuming the admin isn\u0027t passing a specific host). Anyway, this is something to deal with in a later change.","commit_id":"a3ef23f1e7a56c3c7bb65b4bbb0c84efc91d310d"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4ce9139de45e621f41cf38f3cfff42d8851ff0c2","unresolved":false,"context_lines":[{"line_number":320,"context_line":"            self.migrate_data \u003d self.compute_rpcapi.\\"},{"line_number":321,"context_line":"                check_can_live_migrate_destination(self.context, self.instance,"},{"line_number":322,"context_line":"                    destination, self.block_migration, self.disk_over_commit,"},{"line_number":323,"context_line":"                    None, None)"},{"line_number":324,"context_line":"        except messaging.MessagingTimeout:"},{"line_number":325,"context_line":"            msg \u003d _(\"Timeout while checking if we can live migrate to host: \""},{"line_number":326,"context_line":"                    \"%s\") % destination"}],"source_content_type":"text/x-python","patch_set":40,"id":"7faddb67_35d87350","line":323,"updated":"2019-08-16 18:15:09.000000000","message":"I\u0027m guessing you\u0027re going to add code in the next one to actually get and pass the objects? Either way, again, I think that once you\u0027re adding the ability to send the arguments if the version is allowed, you need to actually send them.","commit_id":"35ded13e9e2d7674a2f749b7ceb15ed27e1a717b"}],"nova/tests/unit/compute/test_rpcapi.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cf84a28481a4c426ece3cf672b32508e8473f62e","unresolved":false,"context_lines":[{"line_number":401,"context_line":"            disk_over_commit\u003dFalse,"},{"line_number":402,"context_line":"            migration\u003d\u0027migration\u0027)"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"        mock_client.prepare.assert_called_with(server\u003d\u0027dest\u0027, version\u003d\u00275.2\u0027,"},{"line_number":405,"context_line":"                                               call_monitor_timeout\u003dmock.ANY,"},{"line_number":406,"context_line":"                                               timeout\u003dmock.ANY)"},{"line_number":407,"context_line":"        mock_cctxt.call.assert_called_with("}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_ac7543ce","line":404,"range":{"start_line":404,"start_character":71,"end_line":404,"end_character":74},"updated":"2019-02-22 14:35:17.000000000","message":"ding","commit_id":"a3ef23f1e7a56c3c7bb65b4bbb0c84efc91d310d"}]}
