)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"78bcf44625ad4320239c4d4e4dfc2039dbdf39e9","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     naichuans \u003cnaichuan.sun@citrix.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-03-19 07:50:36 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"xenapi: Remove dependency to the old aggregate-based-pools"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"xenapi is going to support pool-based multi-hosts OpenStack"},{"line_number":10,"context_line":"environments, this patch is used to remove dependency to the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"df7087c5_703c43bf","line":7,"range":{"start_line":7,"start_character":8,"end_line":7,"end_character":58},"updated":"2018-03-19 08:20:49.000000000","message":"Use XAPI pool instead of aggregate pool for shared SR migration.","commit_id":"1b2e06b1fbcf2ff9c5727b8d838097de55cf16f4"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"78bcf44625ad4320239c4d4e4dfc2039dbdf39e9","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"xenapi is going to support pool-based multi-hosts OpenStack"},{"line_number":10,"context_line":"environments, this patch is used to remove dependency to the"},{"line_number":11,"context_line":"old aggregate-based-pools. Also include unit test changes."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I2c492c46e85c1df96aa7fdc12cdee0b1c7ba775e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"df7087c5_90a31701","line":11,"updated":"2018-03-19 08:20:49.000000000","message":"I think we need a reno for this update to saying we use xapi pool to replace aggregate pool for shared storage live-migration.","commit_id":"1b2e06b1fbcf2ff9c5727b8d838097de55cf16f4"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"78bcf44625ad4320239c4d4e4dfc2039dbdf39e9","unresolved":false,"context_lines":[{"line_number":9,"context_line":"xenapi is going to support pool-based multi-hosts OpenStack"},{"line_number":10,"context_line":"environments, this patch is used to remove dependency to the"},{"line_number":11,"context_line":"old aggregate-based-pools. Also include unit test changes."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I2c492c46e85c1df96aa7fdc12cdee0b1c7ba775e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"df7087c5_3031ebed","line":12,"updated":"2018-03-19 08:20:49.000000000","message":"Add BP to here.","commit_id":"1b2e06b1fbcf2ff9c5727b8d838097de55cf16f4"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"6f042223b7a166b557a798b799b4014d317eda2c","unresolved":false,"context_lines":[{"line_number":7,"context_line":"xenapi: Use XAPI pool instead of aggregate pool for shared SR migration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"xenapi is going to support pool-based multi-hosts OpenStack"},{"line_number":10,"context_line":"environments, this patch is used to remove dependency to the"},{"line_number":11,"context_line":"old aggregate-based-pools. Also include unit test changes."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: blueprint live-migration-in-xapi-pool"},{"line_number":14,"context_line":"Change-Id: I2c492c46e85c1df96aa7fdc12cdee0b1c7ba775e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"df7087c5_b272c47b","line":11,"range":{"start_line":10,"start_character":36,"end_line":11,"end_character":25},"updated":"2018-03-20 06:10:29.000000000","message":"This is not only to remove dependency but instead it changes to use XAPI pool.","commit_id":"4e6878cf4471aa22343eb981cbdd797bff4a0f68"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"ef48c9cf47da0a5f76b48447cc7ba2ae886ade8e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"xenapi: Use XAPI pool instead of aggregate pool for shared SR migration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"xenapi is going to support pool-based multi-hosts OpenStack"},{"line_number":10,"context_line":"environments, this patch is used to remove dependency to the"},{"line_number":11,"context_line":"old aggregate-based-pools. Also include unit test changes."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: blueprint live-migration-in-xapi-pool"},{"line_number":14,"context_line":"Change-Id: I2c492c46e85c1df96aa7fdc12cdee0b1c7ba775e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"df7087c5_dd1d0910","line":11,"range":{"start_line":10,"start_character":36,"end_line":11,"end_character":25},"in_reply_to":"df7087c5_b272c47b","updated":"2018-03-20 07:02:10.000000000","message":"OK, will change it, thanks","commit_id":"4e6878cf4471aa22343eb981cbdd797bff4a0f68"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"01232a259a741db18f01f3069c9030922084f85a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"old aggregate-based-pools and add support to xenapi pool."},{"line_number":12,"context_line":"Also include unit test changes."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Will post another patch base on this one to do documents update."},{"line_number":15,"context_line":"Will post another patch base on this one to delete pool_states.py"},{"line_number":16,"context_line":"and related codes."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"bf659307_125c2017","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":64},"updated":"2018-04-13 20:08:09.000000000","message":"You said you would update https://docs.openstack.org/nova/latest/admin/configuring-migrations.html#configuring-migrations-xenserver-shared-storage in this change.\n\nTo be clear, I think ^ should be updated in this change, but these other two docs can be updated in a follow up:\n\nhttps://docs.openstack.org/nova/latest/user/aggregates.html?highlight\u003dxenapi#xen-pool-host-aggregates\n\nhttps://docs.openstack.org/nova/latest/admin/configuration/hypervisor-xen-api.html","commit_id":"dd94e4d634663103282f86470edaffb9cede3dbd"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"bc71bd667a798adccbd2afe46e0cb83f03f3d95a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"old aggregate-based-pools and add support to xenapi pool."},{"line_number":12,"context_line":"Also include unit test changes."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Will post another patch base on this one to do documents update."},{"line_number":15,"context_line":"Will post another patch base on this one to delete pool_states.py"},{"line_number":16,"context_line":"and related codes."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"9f6a8fd7_11ae3c2e","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":64},"in_reply_to":"bf659307_125c2017","updated":"2018-04-16 01:36:11.000000000","message":"Yes, https://docs.openstack.org/nova/latest/admin/configuring-migrations.html#configuring-migrations-xenserver-shared-storage will update in this patch, while the others will in the next.\nThank you for the reminder, Matt.","commit_id":"dd94e4d634663103282f86470edaffb9cede3dbd"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"01232a259a741db18f01f3069c9030922084f85a","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Also include unit test changes."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Will post another patch base on this one to do documents update."},{"line_number":15,"context_line":"Will post another patch base on this one to delete pool_states.py"},{"line_number":16,"context_line":"and related codes."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Implements: blueprint live-migration-in-xapi-pool"},{"line_number":19,"context_line":"Change-Id: I2c492c46e85c1df96aa7fdc12cdee0b1c7ba775e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"bf659307_d203080c","line":16,"range":{"start_line":15,"start_character":0,"end_line":16,"end_character":18},"updated":"2018-04-13 20:08:09.000000000","message":"I think we can probably omit this - if you want to track that cleanup somehow, you could use a bug, i.e. it\u0027s a bug that the pool stuff is either not used, or not functional, and we should just remove it.","commit_id":"dd94e4d634663103282f86470edaffb9cede3dbd"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"bc71bd667a798adccbd2afe46e0cb83f03f3d95a","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Also include unit test changes."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Will post another patch base on this one to do documents update."},{"line_number":15,"context_line":"Will post another patch base on this one to delete pool_states.py"},{"line_number":16,"context_line":"and related codes."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Implements: blueprint live-migration-in-xapi-pool"},{"line_number":19,"context_line":"Change-Id: I2c492c46e85c1df96aa7fdc12cdee0b1c7ba775e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"9f6a8fd7_91cb2c1d","line":16,"range":{"start_line":15,"start_character":0,"end_line":16,"end_character":18},"in_reply_to":"bf659307_d203080c","updated":"2018-04-16 01:36:11.000000000","message":"Will remove it.","commit_id":"dd94e4d634663103282f86470edaffb9cede3dbd"}],"doc/source/admin/configuring-migrations.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"62fb0a42daeecd95262c9e734b66e9481e5fe0ce","unresolved":false,"context_lines":[{"line_number":364,"context_line":""},{"line_number":365,"context_line":"      sr_matching_filter\u003ddefault-sr:true"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"#. Each standlone host belong to a pool by default, run below command on the"},{"line_number":368,"context_line":"   XenServer host to set name to it:"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"   .. code-block:: console"}],"source_content_type":"text/x-rst","patch_set":24,"id":"9f6a8fd7_ff832103","line":367,"range":{"start_line":367,"start_character":23,"end_line":367,"end_character":29},"updated":"2018-04-17 15:23:02.000000000","message":"belongs","commit_id":"168fc4447e2fe1e2e934c57d984c6e0f8e41e3cf"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"4c63d964cf0005c077b710f887659ab29680112a","unresolved":false,"context_lines":[{"line_number":364,"context_line":""},{"line_number":365,"context_line":"      sr_matching_filter\u003ddefault-sr:true"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"#. Each standlone host belong to a pool by default, run below command on the"},{"line_number":368,"context_line":"   XenServer host to set name to it:"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"   .. code-block:: console"}],"source_content_type":"text/x-rst","patch_set":24,"id":"9f6a8fd7_21fe4dae","line":367,"range":{"start_line":367,"start_character":23,"end_line":367,"end_character":29},"in_reply_to":"9f6a8fd7_ff832103","updated":"2018-04-18 09:18:18.000000000","message":"Done","commit_id":"168fc4447e2fe1e2e934c57d984c6e0f8e41e3cf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"62fb0a42daeecd95262c9e734b66e9481e5fe0ce","unresolved":false,"context_lines":[{"line_number":364,"context_line":""},{"line_number":365,"context_line":"      sr_matching_filter\u003ddefault-sr:true"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"#. Each standlone host belong to a pool by default, run below command on the"},{"line_number":368,"context_line":"   XenServer host to set name to it:"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"   .. code-block:: console"},{"line_number":371,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"9f6a8fd7_3fdd1914","line":368,"range":{"start_line":367,"start_character":52,"end_line":368,"end_character":35},"updated":"2018-04-17 15:23:02.000000000","message":"I\u0027m having a hard time understanding that this is telling the user to do, specifically \"to set name to it\" - what is this setting the name to? Is this showing how to associate a xen host with a specific pool? If so, I\u0027d re-word this as:\n\n\"Each standalone host belongs to a pool by default. To associate a host with a specific pool, run the following command on the XenServer host:\"\n\nOr is this just giving the pool a label so it can then later be associated to the host?","commit_id":"168fc4447e2fe1e2e934c57d984c6e0f8e41e3cf"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"4c63d964cf0005c077b710f887659ab29680112a","unresolved":false,"context_lines":[{"line_number":364,"context_line":""},{"line_number":365,"context_line":"      sr_matching_filter\u003ddefault-sr:true"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"#. Each standlone host belong to a pool by default, run below command on the"},{"line_number":368,"context_line":"   XenServer host to set name to it:"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"   .. code-block:: console"},{"line_number":371,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"9f6a8fd7_c12e7142","line":368,"range":{"start_line":367,"start_character":52,"end_line":368,"end_character":35},"in_reply_to":"9f6a8fd7_3fdd1914","updated":"2018-04-18 09:18:18.000000000","message":"Done","commit_id":"168fc4447e2fe1e2e934c57d984c6e0f8e41e3cf"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"374a336c292b3f5e426b10daf5b73d42b6c76ab6","unresolved":false,"context_lines":[{"line_number":364,"context_line":""},{"line_number":365,"context_line":"      sr_matching_filter\u003ddefault-sr:true"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"#. Each standlone host belong to a pool by default, run below command on the"},{"line_number":368,"context_line":"   XenServer host to set name to it:"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"   .. code-block:: console"},{"line_number":371,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"9f6a8fd7_88eae3a9","line":368,"range":{"start_line":367,"start_character":52,"end_line":368,"end_character":35},"in_reply_to":"9f6a8fd7_3fdd1914","updated":"2018-04-18 01:09:11.000000000","message":"Hi, Matt, for XenServer, each freshly installed host belongs to a pool by default(but no name, only uuid). So we don\u0027t have a command to create a pool. the command below is used to give a name to a pool which could make it more specific.\nWill reorganize the description, sorry~","commit_id":"168fc4447e2fe1e2e934c57d984c6e0f8e41e3cf"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"2cb14b00669f9a3188bda9311a6faced07a0a323","unresolved":false,"context_lines":[{"line_number":376,"context_line":""},{"line_number":377,"context_line":"   .. code-block:: console"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"      $ xe pool-join master-address\u003dMASTER_IP master-username\u003dMASTER_USERNAME master-password\u003dMASTER_PASSWORD"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"   .. note::"},{"line_number":382,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"9f6a8fd7_3efae874","line":379,"range":{"start_line":379,"start_character":62,"end_line":379,"end_character":77},"updated":"2018-04-18 08:50:56.000000000","message":"This is almost always \u0027root\u0027","commit_id":"168fc4447e2fe1e2e934c57d984c6e0f8e41e3cf"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"4c63d964cf0005c077b710f887659ab29680112a","unresolved":false,"context_lines":[{"line_number":376,"context_line":""},{"line_number":377,"context_line":"   .. code-block:: console"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"      $ xe pool-join master-address\u003dMASTER_IP master-username\u003dMASTER_USERNAME master-password\u003dMASTER_PASSWORD"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"   .. note::"},{"line_number":382,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"9f6a8fd7_010309ba","line":379,"range":{"start_line":379,"start_character":62,"end_line":379,"end_character":77},"in_reply_to":"9f6a8fd7_3efae874","updated":"2018-04-18 09:18:18.000000000","message":"Done","commit_id":"168fc4447e2fe1e2e934c57d984c6e0f8e41e3cf"}],"nova/tests/unit/virt/xenapi/test_vmops.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c604be983f532854f4fc2f3c3e25a4a0387d6116","unresolved":false,"context_lines":[{"line_number":1568,"context_line":"    @mock.patch.object(vmops.VMOps, \u0027_migrate_receive\u0027)"},{"line_number":1569,"context_line":"    @mock.patch.object(vm_utils, \u0027safe_find_sr\u0027)"},{"line_number":1570,"context_line":"    @mock.patch.object(vmops.VMOps, \u0027_get_network_ref\u0027)"},{"line_number":1571,"context_line":"    def test_no_hosts_founded_with_the_name_label(self,"},{"line_number":1572,"context_line":"                                                  mock_get_network_ref,"},{"line_number":1573,"context_line":"                                                  mock_safe_find_sr,"},{"line_number":1574,"context_line":"                                                  mock_migrate_receive):"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_53463ec2","line":1571,"range":{"start_line":1571,"start_character":22,"end_line":1571,"end_character":29},"updated":"2018-04-12 20:00:37.000000000","message":"found","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"934bc0b4455097c1c23f302a22c87fb08e64e763","unresolved":false,"context_lines":[{"line_number":1568,"context_line":"    @mock.patch.object(vmops.VMOps, \u0027_migrate_receive\u0027)"},{"line_number":1569,"context_line":"    @mock.patch.object(vm_utils, \u0027safe_find_sr\u0027)"},{"line_number":1570,"context_line":"    @mock.patch.object(vmops.VMOps, \u0027_get_network_ref\u0027)"},{"line_number":1571,"context_line":"    def test_no_hosts_founded_with_the_name_label(self,"},{"line_number":1572,"context_line":"                                                  mock_get_network_ref,"},{"line_number":1573,"context_line":"                                                  mock_safe_find_sr,"},{"line_number":1574,"context_line":"                                                  mock_migrate_receive):"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_57d86351","line":1571,"range":{"start_line":1571,"start_character":22,"end_line":1571,"end_character":29},"in_reply_to":"bf659307_53463ec2","updated":"2018-04-13 03:21:55.000000000","message":"Got it.","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c604be983f532854f4fc2f3c3e25a4a0387d6116","unresolved":false,"context_lines":[{"line_number":1589,"context_line":"            self.assertEqual(migrate_data_ret.vif_uuid_map,"},{"line_number":1590,"context_line":"                             {\u0027\u0027: \u0027fake_net_ref\u0027})"},{"line_number":1591,"context_line":""},{"line_number":1592,"context_line":"    def test_multiple_hosts_founded_with_same_name(self):"},{"line_number":1593,"context_line":"        # More than one host found with the dest host name, raise exception"},{"line_number":1594,"context_line":"        fake_instance \u003d {\"name\": \"fake_instance\", \"host\": \"fake_host\"}"},{"line_number":1595,"context_line":"        block_migration \u003d None"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_131686a9","line":1592,"range":{"start_line":1592,"start_character":28,"end_line":1592,"end_character":35},"updated":"2018-04-12 20:00:37.000000000","message":"found","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c604be983f532854f4fc2f3c3e25a4a0387d6116","unresolved":false,"context_lines":[{"line_number":1605,"context_line":""},{"line_number":1606,"context_line":"    @mock.patch.object(vm_utils, \u0027host_in_this_pool\u0027)"},{"line_number":1607,"context_line":"    def test_request_pool_migrate_to_outer_pool_host(self, mock_is_same_pool):"},{"line_number":1608,"context_line":"        # Caller asks for no block live migrate while the dest host is not in"},{"line_number":1609,"context_line":"        # the same pool with the src host, raise exception"},{"line_number":1610,"context_line":"        fake_instance \u003d {\"name\": \"fake_instance\", \"host\": \"fake_host\"}"},{"line_number":1611,"context_line":"        block_migration \u003d False"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_33194ad6","line":1608,"updated":"2018-04-12 20:00:37.000000000","message":"Thanks for the test descriptions.","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"934bc0b4455097c1c23f302a22c87fb08e64e763","unresolved":false,"context_lines":[{"line_number":1605,"context_line":""},{"line_number":1606,"context_line":"    @mock.patch.object(vm_utils, \u0027host_in_this_pool\u0027)"},{"line_number":1607,"context_line":"    def test_request_pool_migrate_to_outer_pool_host(self, mock_is_same_pool):"},{"line_number":1608,"context_line":"        # Caller asks for no block live migrate while the dest host is not in"},{"line_number":1609,"context_line":"        # the same pool with the src host, raise exception"},{"line_number":1610,"context_line":"        fake_instance \u003d {\"name\": \"fake_instance\", \"host\": \"fake_host\"}"},{"line_number":1611,"context_line":"        block_migration \u003d False"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_37d5af1c","line":1608,"in_reply_to":"bf659307_33194ad6","updated":"2018-04-13 03:21:55.000000000","message":":)","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"01232a259a741db18f01f3069c9030922084f85a","unresolved":false,"context_lines":[{"line_number":1569,"context_line":"    @mock.patch.object(vm_utils, \u0027safe_find_sr\u0027)"},{"line_number":1570,"context_line":"    @mock.patch.object(vmops.VMOps, \u0027_get_network_ref\u0027)"},{"line_number":1571,"context_line":"    def test_no_hosts_found_with_the_name_label(self,"},{"line_number":1572,"context_line":"                                                  mock_get_network_ref,"},{"line_number":1573,"context_line":"                                                  mock_safe_find_sr,"},{"line_number":1574,"context_line":"                                                  mock_migrate_receive):"},{"line_number":1575,"context_line":"        # Can find the dest host in current pool, do block live migrate"},{"line_number":1576,"context_line":"        mock_migrate_receive.return_value \u003d {\u0027fake_key\u0027: \u0027fake_data\u0027}"},{"line_number":1577,"context_line":"        mock_safe_find_sr.return_value \u003d \u0027fake_destination_sr_ref\u0027"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf659307_3214c443","line":1574,"range":{"start_line":1572,"start_character":50,"end_line":1574,"end_character":72},"updated":"2018-04-13 20:08:09.000000000","message":"nit: fix the alignment with \"self\" please.","commit_id":"dd94e4d634663103282f86470edaffb9cede3dbd"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"bc71bd667a798adccbd2afe46e0cb83f03f3d95a","unresolved":false,"context_lines":[{"line_number":1569,"context_line":"    @mock.patch.object(vm_utils, \u0027safe_find_sr\u0027)"},{"line_number":1570,"context_line":"    @mock.patch.object(vmops.VMOps, \u0027_get_network_ref\u0027)"},{"line_number":1571,"context_line":"    def test_no_hosts_found_with_the_name_label(self,"},{"line_number":1572,"context_line":"                                                  mock_get_network_ref,"},{"line_number":1573,"context_line":"                                                  mock_safe_find_sr,"},{"line_number":1574,"context_line":"                                                  mock_migrate_receive):"},{"line_number":1575,"context_line":"        # Can find the dest host in current pool, do block live migrate"},{"line_number":1576,"context_line":"        mock_migrate_receive.return_value \u003d {\u0027fake_key\u0027: \u0027fake_data\u0027}"},{"line_number":1577,"context_line":"        mock_safe_find_sr.return_value \u003d \u0027fake_destination_sr_ref\u0027"}],"source_content_type":"text/x-python","patch_set":23,"id":"9f6a8fd7_31b7c089","line":1574,"range":{"start_line":1572,"start_character":50,"end_line":1574,"end_character":72},"in_reply_to":"bf659307_3214c443","updated":"2018-04-16 01:36:11.000000000","message":"will do.","commit_id":"dd94e4d634663103282f86470edaffb9cede3dbd"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"62fb0a42daeecd95262c9e734b66e9481e5fe0ce","unresolved":false,"context_lines":[{"line_number":1510,"context_line":"                                                shared,"},{"line_number":1511,"context_line":"                                                mock_is_same_pool,"},{"line_number":1512,"context_line":"                                                mock_net_ref):"},{"line_number":1513,"context_line":"        class fake_instance(object):"},{"line_number":1514,"context_line":"            name \u003d \"fake_instance\""},{"line_number":1515,"context_line":"            host \u003d \"fake_host\""},{"line_number":1516,"context_line":"        fake_instance \u003d fake_instance()"}],"source_content_type":"text/x-python","patch_set":24,"id":"9f6a8fd7_bff92981","line":1513,"range":{"start_line":1513,"start_character":8,"end_line":1513,"end_character":36},"updated":"2018-04-17 15:23:02.000000000","message":"Don\u0027t do this, just use an objects.Instance object:\n\nfake_instance \u003d objects.Instance(name\u003d\"fake_instance\", host\u003d\"fake_host\")\n\nSame throughout.","commit_id":"168fc4447e2fe1e2e934c57d984c6e0f8e41e3cf"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"4c63d964cf0005c077b710f887659ab29680112a","unresolved":false,"context_lines":[{"line_number":1510,"context_line":"                                                shared,"},{"line_number":1511,"context_line":"                                                mock_is_same_pool,"},{"line_number":1512,"context_line":"                                                mock_net_ref):"},{"line_number":1513,"context_line":"        class fake_instance(object):"},{"line_number":1514,"context_line":"            name \u003d \"fake_instance\""},{"line_number":1515,"context_line":"            host \u003d \"fake_host\""},{"line_number":1516,"context_line":"        fake_instance \u003d fake_instance()"}],"source_content_type":"text/x-python","patch_set":24,"id":"9f6a8fd7_81287934","line":1513,"range":{"start_line":1513,"start_character":8,"end_line":1513,"end_character":36},"in_reply_to":"9f6a8fd7_bff92981","updated":"2018-04-18 09:18:18.000000000","message":"Done","commit_id":"168fc4447e2fe1e2e934c57d984c6e0f8e41e3cf"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"374a336c292b3f5e426b10daf5b73d42b6c76ab6","unresolved":false,"context_lines":[{"line_number":1510,"context_line":"                                                shared,"},{"line_number":1511,"context_line":"                                                mock_is_same_pool,"},{"line_number":1512,"context_line":"                                                mock_net_ref):"},{"line_number":1513,"context_line":"        class fake_instance(object):"},{"line_number":1514,"context_line":"            name \u003d \"fake_instance\""},{"line_number":1515,"context_line":"            host \u003d \"fake_host\""},{"line_number":1516,"context_line":"        fake_instance \u003d fake_instance()"}],"source_content_type":"text/x-python","patch_set":24,"id":"9f6a8fd7_a88fa721","line":1513,"range":{"start_line":1513,"start_character":8,"end_line":1513,"end_character":36},"in_reply_to":"9f6a8fd7_bff92981","updated":"2018-04-18 01:09:11.000000000","message":"Thanks, will modify it.","commit_id":"168fc4447e2fe1e2e934c57d984c6e0f8e41e3cf"}],"nova/tests/unit/virt/xenapi/test_xenapi.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"62fb0a42daeecd95262c9e734b66e9481e5fe0ce","unresolved":false,"context_lines":[{"line_number":3504,"context_line":"        stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests)"},{"line_number":3505,"context_line":"        self.conn \u003d xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False)"},{"line_number":3506,"context_line":""},{"line_number":3507,"context_line":"        class fake_instance(object):"},{"line_number":3508,"context_line":"            name \u003d \"fake_instance\""},{"line_number":3509,"context_line":"            host \u003d \"fake_host\""},{"line_number":3510,"context_line":"        fake_instance \u003d fake_instance()"}],"source_content_type":"text/x-python","patch_set":24,"id":"9f6a8fd7_1f3a9535","line":3507,"updated":"2018-04-17 15:23:02.000000000","message":"same","commit_id":"168fc4447e2fe1e2e934c57d984c6e0f8e41e3cf"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"4c63d964cf0005c077b710f887659ab29680112a","unresolved":false,"context_lines":[{"line_number":3504,"context_line":"        stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests)"},{"line_number":3505,"context_line":"        self.conn \u003d xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False)"},{"line_number":3506,"context_line":""},{"line_number":3507,"context_line":"        class fake_instance(object):"},{"line_number":3508,"context_line":"            name \u003d \"fake_instance\""},{"line_number":3509,"context_line":"            host \u003d \"fake_host\""},{"line_number":3510,"context_line":"        fake_instance \u003d fake_instance()"}],"source_content_type":"text/x-python","patch_set":24,"id":"9f6a8fd7_a12b3d2e","line":3507,"in_reply_to":"9f6a8fd7_1f3a9535","updated":"2018-04-18 09:18:18.000000000","message":"Done","commit_id":"168fc4447e2fe1e2e934c57d984c6e0f8e41e3cf"}],"nova/virt/xenapi/network_utils.py":[{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"f690a9114ceb2f5681367a4b93100ee30fa3f6e4","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                _(\u0027Found no network for bridge %s\u0027) % bridge)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"def is_network_shared(session, network_ref):"},{"line_number":56,"context_line":"    other_config \u003d session.network.get_other_config(network_ref)"},{"line_number":57,"context_line":"    return other_config.get(\u0027assume_network_is_shared\u0027, \u0027false\u0027) \u003d\u003d \u0027true\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_d0ee6f8a","line":55,"updated":"2018-03-19 08:45:28.000000000","message":"Where is this function be used?","commit_id":"777acc105a9b00c62dba3bd5a2b981f20305c1e6"}],"nova/virt/xenapi/vif.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"084d463a09276cf5a082d4852d142abbf8487c10","unresolved":false,"context_lines":[{"line_number":302,"context_line":"        if vifs:"},{"line_number":303,"context_line":"            # Still has vifs attached to this network"},{"line_number":304,"context_line":"            for remain_vif in vifs:"},{"line_number":305,"context_line":"                # if the remain vifs are on the local server, give up all the"},{"line_number":306,"context_line":"                # operations. If the remain vifs are on the remote hosts, keep"},{"line_number":307,"context_line":"                # the network and delete the bridge"},{"line_number":308,"context_line":"                if self._get_host_by_vif(remain_vif) \u003d\u003d self._session.host_ref:"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_b7da9614","line":305,"range":{"start_line":305,"start_character":18,"end_line":305,"end_character":20},"updated":"2018-04-18 14:05:08.000000000","message":"If","commit_id":"61b83e2c759d4f00c5c86469fe159c7caff764a9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"084d463a09276cf5a082d4852d142abbf8487c10","unresolved":false,"context_lines":[{"line_number":302,"context_line":"        if vifs:"},{"line_number":303,"context_line":"            # Still has vifs attached to this network"},{"line_number":304,"context_line":"            for remain_vif in vifs:"},{"line_number":305,"context_line":"                # if the remain vifs are on the local server, give up all the"},{"line_number":306,"context_line":"                # operations. If the remain vifs are on the remote hosts, keep"},{"line_number":307,"context_line":"                # the network and delete the bridge"},{"line_number":308,"context_line":"                if self._get_host_by_vif(remain_vif) \u003d\u003d self._session.host_ref:"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_17cca25f","line":305,"range":{"start_line":305,"start_character":25,"end_line":305,"end_character":31},"updated":"2018-04-18 14:05:08.000000000","message":"nit: remaining","commit_id":"61b83e2c759d4f00c5c86469fe159c7caff764a9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"084d463a09276cf5a082d4852d142abbf8487c10","unresolved":false,"context_lines":[{"line_number":303,"context_line":"            # Still has vifs attached to this network"},{"line_number":304,"context_line":"            for remain_vif in vifs:"},{"line_number":305,"context_line":"                # if the remain vifs are on the local server, give up all the"},{"line_number":306,"context_line":"                # operations. If the remain vifs are on the remote hosts, keep"},{"line_number":307,"context_line":"                # the network and delete the bridge"},{"line_number":308,"context_line":"                if self._get_host_by_vif(remain_vif) \u003d\u003d self._session.host_ref:"},{"line_number":309,"context_line":"                    return"}],"source_content_type":"text/x-python","patch_set":26,"id":"9f6a8fd7_d7d5cae6","line":306,"range":{"start_line":306,"start_character":37,"end_line":306,"end_character":43},"updated":"2018-04-18 14:05:08.000000000","message":"remaining","commit_id":"61b83e2c759d4f00c5c86469fe159c7caff764a9"}],"nova/virt/xenapi/vmops.py":[{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"78bcf44625ad4320239c4d4e4dfc2039dbdf39e9","unresolved":false,"context_lines":[{"line_number":2317,"context_line":"        if block_migration is None:"},{"line_number":2318,"context_line":"            src \u003d instance_ref[\u0027host\u0027]"},{"line_number":2319,"context_line":"            try:"},{"line_number":2320,"context_line":"                self._ensure_host_in_aggregate(ctxt, src)"},{"line_number":2321,"context_line":"            except exception.MigrationPreCheckError:"},{"line_number":2322,"context_line":"                block_migration \u003d True"},{"line_number":2323,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_3c09c730","side":"PARENT","line":2320,"range":{"start_line":2320,"start_character":21,"end_line":2320,"end_character":46},"updated":"2018-03-19 08:20:49.000000000","message":"Need delete this function from xenapi, as it\u0027s not used anymore.","commit_id":"7624f2f036ea461f02d62d8b76467a98942ecce0"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"78bcf44625ad4320239c4d4e4dfc2039dbdf39e9","unresolved":false,"context_lines":[{"line_number":2324,"context_line":"        host_ref_set \u003d self._get_host_opaque_ref(src)"},{"line_number":2325,"context_line":""},{"line_number":2326,"context_line":"        # Notes(eliqiao): if block_migration is None, we calculate it"},{"line_number":2327,"context_line":"        # by checking if src and dest node are in same aggregate"},{"line_number":2328,"context_line":"        if block_migration is None:"},{"line_number":2329,"context_line":"            if not vm_utils.is_same_pool_host(self._session, host_ref_set[0]):"},{"line_number":2330,"context_line":"                block_migration \u003d True"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_9c933301","line":2327,"range":{"start_line":2327,"start_character":50,"end_line":2327,"end_character":64},"updated":"2018-03-19 08:20:49.000000000","message":"need update the comment also.","commit_id":"1b2e06b1fbcf2ff9c5727b8d838097de55cf16f4"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"6f042223b7a166b557a798b799b4014d317eda2c","unresolved":false,"context_lines":[{"line_number":2212,"context_line":"                                                 hostname)"},{"line_number":2213,"context_line":"        # It should be only one host with the name, or there would be"},{"line_number":2214,"context_line":"        # a confuse with which host is required"},{"line_number":2215,"context_line":"        if len(host_ref_set) !\u003d 1:"},{"line_number":2216,"context_line":"            reason \u003d _(\u0027Multiple hosts have the same hostname: %s.\u0027) % hostname"},{"line_number":2217,"context_line":"            msg \u003d _(\u0027Migration precheckError failed because: %s\u0027) % reason"},{"line_number":2218,"context_line":"            raise exception.MigrationPreCheckError(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"df7087c5_523b289b","line":2215,"range":{"start_line":2215,"start_character":15,"end_line":2215,"end_character":27},"updated":"2018-03-20 06:10:29.000000000","message":"Is it possible that the return value is None or empty?","commit_id":"4e6878cf4471aa22343eb981cbdd797bff4a0f68"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"ef48c9cf47da0a5f76b48447cc7ba2ae886ade8e","unresolved":false,"context_lines":[{"line_number":2212,"context_line":"                                                 hostname)"},{"line_number":2213,"context_line":"        # It should be only one host with the name, or there would be"},{"line_number":2214,"context_line":"        # a confuse with which host is required"},{"line_number":2215,"context_line":"        if len(host_ref_set) !\u003d 1:"},{"line_number":2216,"context_line":"            reason \u003d _(\u0027Multiple hosts have the same hostname: %s.\u0027) % hostname"},{"line_number":2217,"context_line":"            msg \u003d _(\u0027Migration precheckError failed because: %s\u0027) % reason"},{"line_number":2218,"context_line":"            raise exception.MigrationPreCheckError(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"df7087c5_1de141ff","line":2215,"range":{"start_line":2215,"start_character":15,"end_line":2215,"end_character":27},"in_reply_to":"df7087c5_523b289b","updated":"2018-03-20 07:02:10.000000000","message":"Then it should be another kind of the exception, will check it.","commit_id":"4e6878cf4471aa22343eb981cbdd797bff4a0f68"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"29235d246c09197389a771279805f55b55a28c70","unresolved":false,"context_lines":[{"line_number":2208,"context_line":"                                               network_info\u003dnetwork_info)"},{"line_number":2209,"context_line":""},{"line_number":2210,"context_line":"    def _get_host_opaque_ref(self, hostname):"},{"line_number":2211,"context_line":"        host_ref_set \u003d self._session.call_xenapi(\"host.get_by_name_label\","},{"line_number":2212,"context_line":"                                                 hostname)"},{"line_number":2213,"context_line":"        # If xenapi can\u0027t get host ref by the name label, it means the"},{"line_number":2214,"context_line":"        # destination host should not in the same pool with the source host."}],"source_content_type":"text/x-python","patch_set":10,"id":"bf659307_7208712b","line":2211,"updated":"2018-03-28 08:41:32.000000000","message":"Can se use self._session.host.get_by_name_label(hostname)","commit_id":"cd516d1ef1d33ce3e7f3b1eab45b5a74a3b4c6cf"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"52cad0eb28f2117f92a66622bf0b4316e7d391d1","unresolved":false,"context_lines":[{"line_number":2208,"context_line":"                                               network_info\u003dnetwork_info)"},{"line_number":2209,"context_line":""},{"line_number":2210,"context_line":"    def _get_host_opaque_ref(self, hostname):"},{"line_number":2211,"context_line":"        host_ref_set \u003d self._session.call_xenapi(\"host.get_by_name_label\","},{"line_number":2212,"context_line":"                                                 hostname)"},{"line_number":2213,"context_line":"        # If xenapi can\u0027t get host ref by the name label, it means the"},{"line_number":2214,"context_line":"        # destination host should not in the same pool with the source host."}],"source_content_type":"text/x-python","patch_set":10,"id":"bf659307_b137e4e3","line":2211,"in_reply_to":"bf659307_7208712b","updated":"2018-03-28 10:04:48.000000000","message":"Will check it.","commit_id":"cd516d1ef1d33ce3e7f3b1eab45b5a74a3b4c6cf"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"d5511eea6be584fd485e2bc33a035c58bfee23b2","unresolved":false,"context_lines":[{"line_number":2216,"context_line":"            return None"},{"line_number":2217,"context_line":"        # It should be only one host with the name, or there would be"},{"line_number":2218,"context_line":"        # a confuse on which host is required"},{"line_number":2219,"context_line":"        if len(host_ref_set) !\u003d 1:"},{"line_number":2220,"context_line":"            reason \u003d _(\u0027Multiple hosts have the same hostname: %s.\u0027) % hostname"},{"line_number":2221,"context_line":"            msg \u003d _(\u0027Migration precheckError failed because: %s\u0027) % reason"},{"line_number":2222,"context_line":"            raise exception.MigrationPreCheckError(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bf659307_5a932da4","line":2219,"range":{"start_line":2219,"start_character":29,"end_line":2219,"end_character":31},"updated":"2018-03-27 07:10:10.000000000","message":"change to \u003e, so it exactly match the reason - *Multiple...*","commit_id":"cd516d1ef1d33ce3e7f3b1eab45b5a74a3b4c6cf"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"969664729881be8d9692a89bf3aeb76e49706a92","unresolved":false,"context_lines":[{"line_number":2216,"context_line":"            return None"},{"line_number":2217,"context_line":"        # It should be only one host with the name, or there would be"},{"line_number":2218,"context_line":"        # a confuse on which host is required"},{"line_number":2219,"context_line":"        if len(host_ref_set) !\u003d 1:"},{"line_number":2220,"context_line":"            reason \u003d _(\u0027Multiple hosts have the same hostname: %s.\u0027) % hostname"},{"line_number":2221,"context_line":"            msg \u003d _(\u0027Migration precheckError failed because: %s\u0027) % reason"},{"line_number":2222,"context_line":"            raise exception.MigrationPreCheckError(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bf659307_369d1459","line":2219,"range":{"start_line":2219,"start_character":29,"end_line":2219,"end_character":31},"in_reply_to":"bf659307_5a932da4","updated":"2018-03-28 02:31:07.000000000","message":"Got it, thanks","commit_id":"cd516d1ef1d33ce3e7f3b1eab45b5a74a3b4c6cf"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"29235d246c09197389a771279805f55b55a28c70","unresolved":false,"context_lines":[{"line_number":2309,"context_line":"        src \u003d instance_ref[\u0027host\u0027]"},{"line_number":2310,"context_line":""},{"line_number":2311,"context_line":"        def _is_same_pool_host(host_name_label):"},{"line_number":2312,"context_line":"            host_ref_set \u003d self._get_host_opaque_ref(host_name_label)"},{"line_number":2313,"context_line":"            if not host_ref_set or not \\"},{"line_number":2314,"context_line":"                    vm_utils.is_same_pool_host(self._session, host_ref_set):"},{"line_number":2315,"context_line":"                return False"}],"source_content_type":"text/x-python","patch_set":10,"id":"bf659307_6d6416e5","line":2312,"range":{"start_line":2312,"start_character":12,"end_line":2312,"end_character":24},"updated":"2018-03-28 08:41:32.000000000","message":"This isn\u0027t a set at this point - it\u0027s a single ref","commit_id":"cd516d1ef1d33ce3e7f3b1eab45b5a74a3b4c6cf"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"52cad0eb28f2117f92a66622bf0b4316e7d391d1","unresolved":false,"context_lines":[{"line_number":2309,"context_line":"        src \u003d instance_ref[\u0027host\u0027]"},{"line_number":2310,"context_line":""},{"line_number":2311,"context_line":"        def _is_same_pool_host(host_name_label):"},{"line_number":2312,"context_line":"            host_ref_set \u003d self._get_host_opaque_ref(host_name_label)"},{"line_number":2313,"context_line":"            if not host_ref_set or not \\"},{"line_number":2314,"context_line":"                    vm_utils.is_same_pool_host(self._session, host_ref_set):"},{"line_number":2315,"context_line":"                return False"}],"source_content_type":"text/x-python","patch_set":10,"id":"bf659307_d157f801","line":2312,"range":{"start_line":2312,"start_character":12,"end_line":2312,"end_character":24},"in_reply_to":"bf659307_6d6416e5","updated":"2018-03-28 10:04:48.000000000","message":"Will modify it.","commit_id":"cd516d1ef1d33ce3e7f3b1eab45b5a74a3b4c6cf"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"d5511eea6be584fd485e2bc33a035c58bfee23b2","unresolved":false,"context_lines":[{"line_number":2338,"context_line":"            # block_migration flag is removed from API"},{"line_number":2339,"context_line":"            if not _is_same_pool_host(src):"},{"line_number":2340,"context_line":"                reason \u003d _(\u0027Destination %s is not in the same pool.\u0027) % src"},{"line_number":2341,"context_line":"                msg \u003d _(\u0027Migration precheckError failed because: %s\u0027) % reason"},{"line_number":2342,"context_line":"                raise exception.MigrationPreCheckError(reason\u003dmsg)"},{"line_number":2343,"context_line":"            # TODO(johngarbutt) we currently assume"},{"line_number":2344,"context_line":"            # instance is on a SR shared with other destination"}],"source_content_type":"text/x-python","patch_set":10,"id":"bf659307_fa6d6198","line":2341,"range":{"start_line":2341,"start_character":25,"end_line":2341,"end_character":34},"updated":"2018-03-27 07:10:10.000000000","message":"Suggest explicitly saying for non-block live migration.","commit_id":"cd516d1ef1d33ce3e7f3b1eab45b5a74a3b4c6cf"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"969664729881be8d9692a89bf3aeb76e49706a92","unresolved":false,"context_lines":[{"line_number":2338,"context_line":"            # block_migration flag is removed from API"},{"line_number":2339,"context_line":"            if not _is_same_pool_host(src):"},{"line_number":2340,"context_line":"                reason \u003d _(\u0027Destination %s is not in the same pool.\u0027) % src"},{"line_number":2341,"context_line":"                msg \u003d _(\u0027Migration precheckError failed because: %s\u0027) % reason"},{"line_number":2342,"context_line":"                raise exception.MigrationPreCheckError(reason\u003dmsg)"},{"line_number":2343,"context_line":"            # TODO(johngarbutt) we currently assume"},{"line_number":2344,"context_line":"            # instance is on a SR shared with other destination"}],"source_content_type":"text/x-python","patch_set":10,"id":"bf659307_d6a3789d","line":2341,"range":{"start_line":2341,"start_character":25,"end_line":2341,"end_character":34},"in_reply_to":"bf659307_fa6d6198","updated":"2018-03-28 02:31:07.000000000","message":"OK","commit_id":"cd516d1ef1d33ce3e7f3b1eab45b5a74a3b4c6cf"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"d5511eea6be584fd485e2bc33a035c58bfee23b2","unresolved":false,"context_lines":[{"line_number":2582,"context_line":"                for sr_ref in iscsi_srs:"},{"line_number":2583,"context_line":"                    volume_utils.forget_sr(self._session, sr_ref)"},{"line_number":2584,"context_line":"            else:"},{"line_number":2585,"context_line":"                host_ref \u003d self._get_host_opaque_ref(destination_hostname)"},{"line_number":2586,"context_line":"                self._session.call_xenapi(\"VM.pool_migrate\", vm_ref,"},{"line_number":2587,"context_line":"                                          host_ref, {\"live\": \"true\"})"},{"line_number":2588,"context_line":"            post_method(context, instance, destination_hostname,"}],"source_content_type":"text/x-python","patch_set":10,"id":"bf659307_babcc9dc","line":2585,"range":{"start_line":2585,"start_character":16,"end_line":2585,"end_character":24},"updated":"2018-03-27 07:10:10.000000000","message":"As the function may return None, should we add a precheck for this value?","commit_id":"cd516d1ef1d33ce3e7f3b1eab45b5a74a3b4c6cf"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"969664729881be8d9692a89bf3aeb76e49706a92","unresolved":false,"context_lines":[{"line_number":2582,"context_line":"                for sr_ref in iscsi_srs:"},{"line_number":2583,"context_line":"                    volume_utils.forget_sr(self._session, sr_ref)"},{"line_number":2584,"context_line":"            else:"},{"line_number":2585,"context_line":"                host_ref \u003d self._get_host_opaque_ref(destination_hostname)"},{"line_number":2586,"context_line":"                self._session.call_xenapi(\"VM.pool_migrate\", vm_ref,"},{"line_number":2587,"context_line":"                                          host_ref, {\"live\": \"true\"})"},{"line_number":2588,"context_line":"            post_method(context, instance, destination_hostname,"}],"source_content_type":"text/x-python","patch_set":10,"id":"bf659307_96ad008a","line":2585,"range":{"start_line":2585,"start_character":16,"end_line":2585,"end_character":24},"in_reply_to":"bf659307_babcc9dc","updated":"2018-03-28 02:31:07.000000000","message":"Will check it","commit_id":"cd516d1ef1d33ce3e7f3b1eab45b5a74a3b4c6cf"},{"author":{"_account_id":23630,"name":"Tovin Seven","email":"tovin07@gmail.com","username":"tovin07"},"change_message_id":"094463ae6675e9361bc6e2eaf0489d6854a1b0fc","unresolved":false,"context_lines":[{"line_number":2309,"context_line":""},{"line_number":2310,"context_line":"        def _host_in_this_pool(host_name_label):"},{"line_number":2311,"context_line":"            host_ref \u003d self._get_host_opaque_ref(host_name_label)"},{"line_number":2312,"context_line":"            if not host_ref or not \\"},{"line_number":2313,"context_line":"                    vm_utils.host_in_this_pool(self._session, host_ref):"},{"line_number":2314,"context_line":"                return False"},{"line_number":2315,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf659307_2101c638","line":2312,"range":{"start_line":2312,"start_character":35,"end_line":2312,"end_character":36},"updated":"2018-04-04 03:53:17.000000000","message":"just avoid this one","commit_id":"b1da5aca25e78bf4e2ffbdf571a202f30002bd7c"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"0689ba7506dff17bc2ca3aba067583c82725a327","unresolved":false,"context_lines":[{"line_number":2309,"context_line":""},{"line_number":2310,"context_line":"        def _host_in_this_pool(host_name_label):"},{"line_number":2311,"context_line":"            host_ref \u003d self._get_host_opaque_ref(host_name_label)"},{"line_number":2312,"context_line":"            if not host_ref or not \\"},{"line_number":2313,"context_line":"                    vm_utils.host_in_this_pool(self._session, host_ref):"},{"line_number":2314,"context_line":"                return False"},{"line_number":2315,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf659307_7b50705f","line":2312,"range":{"start_line":2312,"start_character":35,"end_line":2312,"end_character":36},"in_reply_to":"bf659307_2101c638","updated":"2018-04-09 08:58:12.000000000","message":"This is the same as:\nreturn host_ref and vm_utils.host_in_this_pool(...) - which is much cleaner and may fit on one line?","commit_id":"b1da5aca25e78bf4e2ffbdf571a202f30002bd7c"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"35e998f4033fadde1bd02da5aec843a3d53b30e5","unresolved":false,"context_lines":[{"line_number":2309,"context_line":""},{"line_number":2310,"context_line":"        def _host_in_this_pool(host_name_label):"},{"line_number":2311,"context_line":"            host_ref \u003d self._get_host_opaque_ref(host_name_label)"},{"line_number":2312,"context_line":"            if not host_ref or not \\"},{"line_number":2313,"context_line":"                    vm_utils.host_in_this_pool(self._session, host_ref):"},{"line_number":2314,"context_line":"                return False"},{"line_number":2315,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf659307_1b80548b","line":2312,"range":{"start_line":2312,"start_character":35,"end_line":2312,"end_character":36},"in_reply_to":"bf659307_7b50705f","updated":"2018-04-09 09:06:45.000000000","message":"Will modify it, thank you, Toin and Bob.","commit_id":"b1da5aca25e78bf4e2ffbdf571a202f30002bd7c"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"dedc826e0a91d2e356a9e9810434857c2953b64a","unresolved":false,"context_lines":[{"line_number":2309,"context_line":""},{"line_number":2310,"context_line":"        def _host_in_this_pool(host_name_label):"},{"line_number":2311,"context_line":"            host_ref \u003d self._get_host_opaque_ref(host_name_label)"},{"line_number":2312,"context_line":"            return host_ref and vm_utils.host_in_this_pool("},{"line_number":2313,"context_line":"                self._session, host_ref)"},{"line_number":2314,"context_line":""},{"line_number":2315,"context_line":"        # Notes(eliqiao): if block_migration is None, we calculate it"}],"source_content_type":"text/x-python","patch_set":16,"id":"bf659307_e66ccb09","line":2312,"updated":"2018-04-10 07:16:31.000000000","message":"will it just return None when host_ref is None?","commit_id":"15fe35eb06736b80092dee572077f536b33ef975"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"bc45a5bd28ef1d2e1fa140a9c65b4e1147994149","unresolved":false,"context_lines":[{"line_number":2309,"context_line":""},{"line_number":2310,"context_line":"        def _host_in_this_pool(host_name_label):"},{"line_number":2311,"context_line":"            host_ref \u003d self._get_host_opaque_ref(host_name_label)"},{"line_number":2312,"context_line":"            return host_ref and vm_utils.host_in_this_pool("},{"line_number":2313,"context_line":"                self._session, host_ref)"},{"line_number":2314,"context_line":""},{"line_number":2315,"context_line":"        # Notes(eliqiao): if block_migration is None, we calculate it"}],"source_content_type":"text/x-python","patch_set":16,"id":"bf659307_d7a92fdd","line":2312,"in_reply_to":"bf659307_461d7771","updated":"2018-04-10 08:38:11.000000000","message":"will add.","commit_id":"15fe35eb06736b80092dee572077f536b33ef975"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"173e3379a9603be0d73b1afb4d2889fd1fe73c25","unresolved":false,"context_lines":[{"line_number":2309,"context_line":""},{"line_number":2310,"context_line":"        def _host_in_this_pool(host_name_label):"},{"line_number":2311,"context_line":"            host_ref \u003d self._get_host_opaque_ref(host_name_label)"},{"line_number":2312,"context_line":"            return host_ref and vm_utils.host_in_this_pool("},{"line_number":2313,"context_line":"                self._session, host_ref)"},{"line_number":2314,"context_line":""},{"line_number":2315,"context_line":"        # Notes(eliqiao): if block_migration is None, we calculate it"}],"source_content_type":"text/x-python","patch_set":16,"id":"bf659307_461d7771","line":2312,"in_reply_to":"bf659307_e66ccb09","updated":"2018-04-10 07:20:06.000000000","message":"Suggest add a UT for the case host_ref is None and expect return a False.","commit_id":"15fe35eb06736b80092dee572077f536b33ef975"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c604be983f532854f4fc2f3c3e25a4a0387d6116","unresolved":false,"context_lines":[{"line_number":57,"context_line":"from nova.virt import driver as virt_driver"},{"line_number":58,"context_line":"from nova.virt import firewall"},{"line_number":59,"context_line":"from nova.virt.xenapi import agent as xapi_agent"},{"line_number":60,"context_line":"from nova.virt.xenapi import pool_states"},{"line_number":61,"context_line":"from nova.virt.xenapi import vm_utils"},{"line_number":62,"context_line":"from nova.virt.xenapi import volume_utils"},{"line_number":63,"context_line":"from nova.virt.xenapi import volumeops"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_53c39e38","side":"PARENT","line":60,"range":{"start_line":60,"start_character":0,"end_line":60,"end_character":40},"updated":"2018-04-12 20:00:37.000000000","message":"Is anything still using this pool code or can we delete the pool modules? I guess the host maintenance mode and power state stuff is:\n\nhttps://github.com/openstack/nova/blob/c531b7905f5a9f8a5bfa355a2047d04032cbf847/nova/virt/xenapi/host.py#L86\n\nHowever, I don\u0027t think any of that code works, and it\u0027s also been deprecated in the API:\n\nhttps://developer.openstack.org/api-ref/compute/#hosts-os-hosts-deprecated\n\nSo maybe that\u0027s also an aggregate host up-call that\u0027s worth removing (or just removing all of that code if it doesn\u0027t work and no one uses it, it\u0027s optional and deprecated in the API now anyway). But that\u0027s something for another day separate from this blueprint.","commit_id":"c0187a010c2ebaa58b95776ca3ae41249ac9e8af"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"934bc0b4455097c1c23f302a22c87fb08e64e763","unresolved":false,"context_lines":[{"line_number":57,"context_line":"from nova.virt import driver as virt_driver"},{"line_number":58,"context_line":"from nova.virt import firewall"},{"line_number":59,"context_line":"from nova.virt.xenapi import agent as xapi_agent"},{"line_number":60,"context_line":"from nova.virt.xenapi import pool_states"},{"line_number":61,"context_line":"from nova.virt.xenapi import vm_utils"},{"line_number":62,"context_line":"from nova.virt.xenapi import volume_utils"},{"line_number":63,"context_line":"from nova.virt.xenapi import volumeops"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_309db5bb","side":"PARENT","line":60,"range":{"start_line":60,"start_character":0,"end_line":60,"end_character":40},"in_reply_to":"bf659307_53c39e38","updated":"2018-04-13 03:21:55.000000000","message":"You are right, Matt. I think we would remove the whole class `pool_states` in the future. We already have the plane, but not in this patch.\nThank you very much.","commit_id":"c0187a010c2ebaa58b95776ca3ae41249ac9e8af"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c604be983f532854f4fc2f3c3e25a4a0387d6116","unresolved":false,"context_lines":[{"line_number":2209,"context_line":"                                               network_info\u003dnetwork_info)"},{"line_number":2210,"context_line":""},{"line_number":2211,"context_line":"    def _get_host_uuid_from_aggregate(self, context, hostname):"},{"line_number":2212,"context_line":"        aggregate_list \u003d objects.AggregateList.get_by_host("},{"line_number":2213,"context_line":"            context, CONF.host, key\u003dpool_states.POOL_FLAG)"},{"line_number":2214,"context_line":""},{"line_number":2215,"context_line":"        reason \u003d _(\u0027Destination host:%s must be in the same \u0027"},{"line_number":2216,"context_line":"                   \u0027aggregate as the source server\u0027) % hostname"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_936e162d","side":"PARENT","line":2213,"range":{"start_line":2212,"start_character":8,"end_line":2213,"end_character":58},"updated":"2018-04-12 20:00:37.000000000","message":"Now that this is gone, we can update this document:\n\nhttps://docs.openstack.org/nova/latest/user/cellsv2-layout.html#operations-requiring-upcalls\n\nAnd mention that #4 has been resolved in Rocky.","commit_id":"c0187a010c2ebaa58b95776ca3ae41249ac9e8af"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"934bc0b4455097c1c23f302a22c87fb08e64e763","unresolved":false,"context_lines":[{"line_number":2209,"context_line":"                                               network_info\u003dnetwork_info)"},{"line_number":2210,"context_line":""},{"line_number":2211,"context_line":"    def _get_host_uuid_from_aggregate(self, context, hostname):"},{"line_number":2212,"context_line":"        aggregate_list \u003d objects.AggregateList.get_by_host("},{"line_number":2213,"context_line":"            context, CONF.host, key\u003dpool_states.POOL_FLAG)"},{"line_number":2214,"context_line":""},{"line_number":2215,"context_line":"        reason \u003d _(\u0027Destination host:%s must be in the same \u0027"},{"line_number":2216,"context_line":"                   \u0027aggregate as the source server\u0027) % hostname"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_50894972","side":"PARENT","line":2213,"range":{"start_line":2212,"start_character":8,"end_line":2213,"end_character":58},"in_reply_to":"bf659307_936e162d","updated":"2018-04-13 03:21:55.000000000","message":"Will update it.","commit_id":"c0187a010c2ebaa58b95776ca3ae41249ac9e8af"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c604be983f532854f4fc2f3c3e25a4a0387d6116","unresolved":false,"context_lines":[{"line_number":2210,"context_line":"    def _get_host_opaque_ref(self, hostname):"},{"line_number":2211,"context_line":"        host_ref_set \u003d self._session.host.get_by_name_label(hostname)"},{"line_number":2212,"context_line":"        # If xenapi can\u0027t get host ref by the name label, it means the"},{"line_number":2213,"context_line":"        # destination host should not in the same pool with the source host."},{"line_number":2214,"context_line":"        if host_ref_set is None or host_ref_set \u003d\u003d []:"},{"line_number":2215,"context_line":"            return None"},{"line_number":2216,"context_line":"        # It should be only one host with the name, or there would be"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_b3d9da83","line":2213,"range":{"start_line":2213,"start_character":27,"end_line":2213,"end_character":33},"updated":"2018-04-12 20:00:37.000000000","message":"is not in?","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"934bc0b4455097c1c23f302a22c87fb08e64e763","unresolved":false,"context_lines":[{"line_number":2210,"context_line":"    def _get_host_opaque_ref(self, hostname):"},{"line_number":2211,"context_line":"        host_ref_set \u003d self._session.host.get_by_name_label(hostname)"},{"line_number":2212,"context_line":"        # If xenapi can\u0027t get host ref by the name label, it means the"},{"line_number":2213,"context_line":"        # destination host should not in the same pool with the source host."},{"line_number":2214,"context_line":"        if host_ref_set is None or host_ref_set \u003d\u003d []:"},{"line_number":2215,"context_line":"            return None"},{"line_number":2216,"context_line":"        # It should be only one host with the name, or there would be"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_17de6b3d","line":2213,"range":{"start_line":2213,"start_character":27,"end_line":2213,"end_character":33},"in_reply_to":"bf659307_b3d9da83","updated":"2018-04-13 03:21:55.000000000","message":"Got it, thanks","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c604be983f532854f4fc2f3c3e25a4a0387d6116","unresolved":false,"context_lines":[{"line_number":2217,"context_line":"        # a confuse on which host is required"},{"line_number":2218,"context_line":"        if len(host_ref_set) \u003e 1:"},{"line_number":2219,"context_line":"            reason \u003d _(\u0027Multiple hosts have the same hostname: %s.\u0027) % hostname"},{"line_number":2220,"context_line":"            msg \u003d _(\u0027Migration precheckError failed because: %s\u0027) % reason"},{"line_number":2221,"context_line":"            raise exception.MigrationPreCheckError(reason\u003dmsg)"},{"line_number":2222,"context_line":"        return host_ref_set[0]"},{"line_number":2223,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_934cd642","line":2220,"range":{"start_line":2220,"start_character":12,"end_line":2220,"end_character":74},"updated":"2018-04-12 20:00:37.000000000","message":"You can remove this, it should just be:\n\nraise exception.MigrationPreCheckError(reason\u003dreason)","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"934bc0b4455097c1c23f302a22c87fb08e64e763","unresolved":false,"context_lines":[{"line_number":2217,"context_line":"        # a confuse on which host is required"},{"line_number":2218,"context_line":"        if len(host_ref_set) \u003e 1:"},{"line_number":2219,"context_line":"            reason \u003d _(\u0027Multiple hosts have the same hostname: %s.\u0027) % hostname"},{"line_number":2220,"context_line":"            msg \u003d _(\u0027Migration precheckError failed because: %s\u0027) % reason"},{"line_number":2221,"context_line":"            raise exception.MigrationPreCheckError(reason\u003dmsg)"},{"line_number":2222,"context_line":"        return host_ref_set[0]"},{"line_number":2223,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_97c27b52","line":2220,"range":{"start_line":2220,"start_character":12,"end_line":2220,"end_character":74},"in_reply_to":"bf659307_934cd642","updated":"2018-04-13 03:21:55.000000000","message":"Will combine the two test together","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c604be983f532854f4fc2f3c3e25a4a0387d6116","unresolved":false,"context_lines":[{"line_number":2305,"context_line":"        \"\"\""},{"line_number":2306,"context_line":"        dest_check_data \u003d objects.XenapiLiveMigrateData()"},{"line_number":2307,"context_line":""},{"line_number":2308,"context_line":"        src \u003d instance_ref[\u0027host\u0027]"},{"line_number":2309,"context_line":""},{"line_number":2310,"context_line":"        def _host_in_this_pool(host_name_label):"},{"line_number":2311,"context_line":"            host_ref \u003d self._get_host_opaque_ref(host_name_label)"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_f3dd1241","line":2308,"range":{"start_line":2308,"start_character":14,"end_line":2308,"end_character":34},"updated":"2018-04-12 20:00:37.000000000","message":"Use the object notation, so instance_ref.host.","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"934bc0b4455097c1c23f302a22c87fb08e64e763","unresolved":false,"context_lines":[{"line_number":2305,"context_line":"        \"\"\""},{"line_number":2306,"context_line":"        dest_check_data \u003d objects.XenapiLiveMigrateData()"},{"line_number":2307,"context_line":""},{"line_number":2308,"context_line":"        src \u003d instance_ref[\u0027host\u0027]"},{"line_number":2309,"context_line":""},{"line_number":2310,"context_line":"        def _host_in_this_pool(host_name_label):"},{"line_number":2311,"context_line":"            host_ref \u003d self._get_host_opaque_ref(host_name_label)"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_37a36fb4","line":2308,"range":{"start_line":2308,"start_character":14,"end_line":2308,"end_character":34},"in_reply_to":"bf659307_f3dd1241","updated":"2018-04-13 03:21:55.000000000","message":"got it","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c604be983f532854f4fc2f3c3e25a4a0387d6116","unresolved":false,"context_lines":[{"line_number":2315,"context_line":"        # Notes(eliqiao): if block_migration is None, we calculate it"},{"line_number":2316,"context_line":"        # by checking if src and dest node are in same xapi pool"},{"line_number":2317,"context_line":"        if block_migration is None:"},{"line_number":2318,"context_line":"            if not _host_in_this_pool(src):"},{"line_number":2319,"context_line":"                block_migration \u003d True"},{"line_number":2320,"context_line":"            else:"},{"line_number":2321,"context_line":"                sr_ref \u003d vm_utils.safe_find_sr(self._session)"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_13d5261c","line":2318,"range":{"start_line":2318,"start_character":19,"end_line":2318,"end_character":37},"updated":"2018-04-12 20:00:37.000000000","message":"Maybe you want to move this check outside the \"if block_migration is None:\" condition so you don\u0027t have to make it twice, here and then possibly once more below.","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"934bc0b4455097c1c23f302a22c87fb08e64e763","unresolved":false,"context_lines":[{"line_number":2315,"context_line":"        # Notes(eliqiao): if block_migration is None, we calculate it"},{"line_number":2316,"context_line":"        # by checking if src and dest node are in same xapi pool"},{"line_number":2317,"context_line":"        if block_migration is None:"},{"line_number":2318,"context_line":"            if not _host_in_this_pool(src):"},{"line_number":2319,"context_line":"                block_migration \u003d True"},{"line_number":2320,"context_line":"            else:"},{"line_number":2321,"context_line":"                sr_ref \u003d vm_utils.safe_find_sr(self._session)"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_d0d9d982","line":2318,"range":{"start_line":2318,"start_character":19,"end_line":2318,"end_character":37},"in_reply_to":"bf659307_13d5261c","updated":"2018-04-13 03:21:55.000000000","message":"will modify it","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c604be983f532854f4fc2f3c3e25a4a0387d6116","unresolved":false,"context_lines":[{"line_number":2333,"context_line":"            # passed from admin user, so we need this check until"},{"line_number":2334,"context_line":"            # block_migration flag is removed from API"},{"line_number":2335,"context_line":"            if not _host_in_this_pool(src):"},{"line_number":2336,"context_line":"                reason \u003d _(\u0027Destination %s is not in the same pool.\u0027) % src"},{"line_number":2337,"context_line":"                msg \u003d _(\u0027Non-block migration precheckError failed \u0027"},{"line_number":2338,"context_line":"                        \u0027because: %s\u0027) % reason"},{"line_number":2339,"context_line":"                raise exception.MigrationPreCheckError(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_f328b233","line":2336,"range":{"start_line":2336,"start_character":28,"end_line":2336,"end_character":39},"updated":"2018-04-12 20:00:37.000000000","message":"This error message is a bit confusing since it\u0027s saying the destination (source hostname) is not in the same pool. Should this instead say something like,\n\n\"Destination host is not in the same shared storage pool as source host %s.\" % src\n\n?","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"934bc0b4455097c1c23f302a22c87fb08e64e763","unresolved":false,"context_lines":[{"line_number":2333,"context_line":"            # passed from admin user, so we need this check until"},{"line_number":2334,"context_line":"            # block_migration flag is removed from API"},{"line_number":2335,"context_line":"            if not _host_in_this_pool(src):"},{"line_number":2336,"context_line":"                reason \u003d _(\u0027Destination %s is not in the same pool.\u0027) % src"},{"line_number":2337,"context_line":"                msg \u003d _(\u0027Non-block migration precheckError failed \u0027"},{"line_number":2338,"context_line":"                        \u0027because: %s\u0027) % reason"},{"line_number":2339,"context_line":"                raise exception.MigrationPreCheckError(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_50d7094c","line":2336,"range":{"start_line":2336,"start_character":28,"end_line":2336,"end_character":39},"in_reply_to":"bf659307_f328b233","updated":"2018-04-13 03:21:55.000000000","message":"Will check it and modify to a more reasonable form.","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c604be983f532854f4fc2f3c3e25a4a0387d6116","unresolved":false,"context_lines":[{"line_number":2582,"context_line":"            else:"},{"line_number":2583,"context_line":"                host_ref \u003d self._get_host_opaque_ref(destination_hostname)"},{"line_number":2584,"context_line":"                if not host_ref:"},{"line_number":2585,"context_line":"                    LOG.exception(_(\u0027No host with name %s found\u0027),"},{"line_number":2586,"context_line":"                                  destination_hostname)"},{"line_number":2587,"context_line":"                    raise exception.MigrationError("},{"line_number":2588,"context_line":"                        reason\u003d_(\u0027No host with name %s found\u0027)"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_93d13626","line":2585,"range":{"start_line":2585,"start_character":37,"end_line":2585,"end_character":63},"updated":"2018-04-12 20:00:37.000000000","message":"Can we be a bit more specific with the error message? This shouldn\u0027t really happen if check_can_live_migrate_destination was successful, correct? In other words, if check_can_live_migrate_destination said the host was OK but then we fail during live migration here, it\u0027s not something we would expect. And it\u0027s specific to the source and destination hosts not being in the same shared storage pool right?\n\nSo maybe, \"Destination host %s was not found in the same shared storage pool as source host.\"","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"934bc0b4455097c1c23f302a22c87fb08e64e763","unresolved":false,"context_lines":[{"line_number":2582,"context_line":"            else:"},{"line_number":2583,"context_line":"                host_ref \u003d self._get_host_opaque_ref(destination_hostname)"},{"line_number":2584,"context_line":"                if not host_ref:"},{"line_number":2585,"context_line":"                    LOG.exception(_(\u0027No host with name %s found\u0027),"},{"line_number":2586,"context_line":"                                  destination_hostname)"},{"line_number":2587,"context_line":"                    raise exception.MigrationError("},{"line_number":2588,"context_line":"                        reason\u003d_(\u0027No host with name %s found\u0027)"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_f0573dc9","line":2585,"range":{"start_line":2585,"start_character":37,"end_line":2585,"end_character":63},"in_reply_to":"bf659307_93d13626","updated":"2018-04-13 03:21:55.000000000","message":"You are right, Matt. We don\u0027t need to deal with an unexpected thing, it\u0027s self-contradictory. Will modify it.","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"01232a259a741db18f01f3069c9030922084f85a","unresolved":false,"context_lines":[{"line_number":2304,"context_line":"        \"\"\""},{"line_number":2305,"context_line":"        dest_check_data \u003d objects.XenapiLiveMigrateData()"},{"line_number":2306,"context_line":""},{"line_number":2307,"context_line":"        src \u003d instance_ref.host"},{"line_number":2308,"context_line":""},{"line_number":2309,"context_line":"        def _host_in_this_pool(host_name_label):"},{"line_number":2310,"context_line":"            host_ref \u003d self._get_host_opaque_ref(host_name_label)"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf659307_32b04443","line":2307,"range":{"start_line":2307,"start_character":14,"end_line":2307,"end_character":31},"updated":"2018-04-13 20:08:09.000000000","message":"Looks like the unit tests hitting this need to use an objects.Instance object rather than a dict:\n\nhttp://logs.openstack.org/54/554154/23/check/openstack-tox-py27/4fd2a54/job-output.txt.gz#_2018-04-13_08_35_15_150862","commit_id":"dd94e4d634663103282f86470edaffb9cede3dbd"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"bc71bd667a798adccbd2afe46e0cb83f03f3d95a","unresolved":false,"context_lines":[{"line_number":2304,"context_line":"        \"\"\""},{"line_number":2305,"context_line":"        dest_check_data \u003d objects.XenapiLiveMigrateData()"},{"line_number":2306,"context_line":""},{"line_number":2307,"context_line":"        src \u003d instance_ref.host"},{"line_number":2308,"context_line":""},{"line_number":2309,"context_line":"        def _host_in_this_pool(host_name_label):"},{"line_number":2310,"context_line":"            host_ref \u003d self._get_host_opaque_ref(host_name_label)"}],"source_content_type":"text/x-python","patch_set":23,"id":"9f6a8fd7_71bd3867","line":2307,"range":{"start_line":2307,"start_character":14,"end_line":2307,"end_character":31},"in_reply_to":"bf659307_32b04443","updated":"2018-04-16 01:36:11.000000000","message":"Oh, sorry, the patch hasn\u0027t finished(I\u0027m still working on the sharing storage document.), so I didn\u0027t do tox checking.\nWill update new patch with the document.","commit_id":"dd94e4d634663103282f86470edaffb9cede3dbd"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1cc691f97a6d60b97bde553592f7bef37f305da4","unresolved":false,"context_lines":[{"line_number":2213,"context_line":"        # destination host is not in the same pool with the source host."},{"line_number":2214,"context_line":"        if host_ref_set is None or host_ref_set \u003d\u003d []:"},{"line_number":2215,"context_line":"            return None"},{"line_number":2216,"context_line":"        # It should be only one host with the name, or there would be"},{"line_number":2217,"context_line":"        # a confuse on which host is required"},{"line_number":2218,"context_line":"        if len(host_ref_set) \u003e 1:"},{"line_number":2219,"context_line":"            reason \u003d _(\u0027Multiple hosts have the same hostname: %s.\u0027) % hostname"},{"line_number":2220,"context_line":"            raise exception.MigrationPreCheckError(reason\u003dreason)"}],"source_content_type":"text/x-python","patch_set":27,"id":"9f6a8fd7_10900c43","line":2217,"range":{"start_line":2216,"start_character":55,"end_line":2217,"end_character":19},"updated":"2018-04-19 14:47:20.000000000","message":"\"there would be confusion as to which host is required\"","commit_id":"9b7affcac1a38ee378a0f5c27932d58731cfdecd"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"6aeb79cc9de64ab8846e9ea6b3427e50557bcbce","unresolved":false,"context_lines":[{"line_number":2213,"context_line":"        # destination host is not in the same pool with the source host."},{"line_number":2214,"context_line":"        if host_ref_set is None or host_ref_set \u003d\u003d []:"},{"line_number":2215,"context_line":"            return None"},{"line_number":2216,"context_line":"        # It should be only one host with the name, or there would be"},{"line_number":2217,"context_line":"        # a confuse on which host is required"},{"line_number":2218,"context_line":"        if len(host_ref_set) \u003e 1:"},{"line_number":2219,"context_line":"            reason \u003d _(\u0027Multiple hosts have the same hostname: %s.\u0027) % hostname"},{"line_number":2220,"context_line":"            raise exception.MigrationPreCheckError(reason\u003dreason)"}],"source_content_type":"text/x-python","patch_set":27,"id":"9f6a8fd7_5b2538c1","line":2217,"range":{"start_line":2216,"start_character":55,"end_line":2217,"end_character":19},"in_reply_to":"9f6a8fd7_10900c43","updated":"2018-04-20 00:53:37.000000000","message":"Will add some corrections about improper texts in documents updating patch, thanks, Jay.","commit_id":"9b7affcac1a38ee378a0f5c27932d58731cfdecd"}],"releasenotes/notes/add-live-migration-support-in-xapi-pool-5ac42c2468c3616e.yaml":[{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"6f042223b7a166b557a798b799b4014d317eda2c","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    which belong to a XAPI pool. The shared storage migration depends"},{"line_number":6,"context_line":"    aggregate pool and it depends on uppercall to check if hosts belong to"},{"line_number":7,"context_line":"    the same aggregate pool. But the upper call is broken in cells."},{"line_number":8,"context_line":"    This patch is to support live migration in XAPI pool so that we can use"},{"line_number":9,"context_line":"    XAPI pool instead of aggregate pool and the broken aggregate uppercall"},{"line_number":10,"context_line":"    can be removed."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"df7087c5_b2dba47b","line":8,"range":{"start_line":8,"start_character":4,"end_line":8,"end_character":14},"updated":"2018-03-20 06:10:29.000000000","message":"This reno will be included in the release note, readers won\u0027t know this patch actually. So we should avoid mention something like *This patch* but explain what problem has been fixed or what\u0027s changed in this release. And guide users to upgrade their cloud from aggregate pool to xapi pool.","commit_id":"4e6878cf4471aa22343eb981cbdd797bff4a0f68"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"ef48c9cf47da0a5f76b48447cc7ba2ae886ade8e","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    which belong to a XAPI pool. The shared storage migration depends"},{"line_number":6,"context_line":"    aggregate pool and it depends on uppercall to check if hosts belong to"},{"line_number":7,"context_line":"    the same aggregate pool. But the upper call is broken in cells."},{"line_number":8,"context_line":"    This patch is to support live migration in XAPI pool so that we can use"},{"line_number":9,"context_line":"    XAPI pool instead of aggregate pool and the broken aggregate uppercall"},{"line_number":10,"context_line":"    can be removed."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"df7087c5_dde2e901","line":8,"range":{"start_line":8,"start_character":4,"end_line":8,"end_character":14},"in_reply_to":"df7087c5_b2dba47b","updated":"2018-03-20 07:02:10.000000000","message":"will check it","commit_id":"4e6878cf4471aa22343eb981cbdd797bff4a0f68"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"29235d246c09197389a771279805f55b55a28c70","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The existing implementation doesn\u0027t support live migration between hosts"},{"line_number":5,"context_line":"    which belong to a XAPI pool. The shared storage migration depends"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"bf659307_f2148150","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":7},"updated":"2018-03-28 08:41:32.000000000","message":"TBH I would re-write this release note as:\nXenServer Pools with shared storage used to use aggregates in Nova, however this support was not adequitely tested and became broken in a previous release.\nNow live migration with shared storage is possible using native XAPI pools - independently of Nova\u0027s aggregates.\nThe XenAPI/Nova integration expects one nova-compute per XenServer host, so a nova-compute must be run for each slave XenServer host in the pool as well as for the master.","commit_id":"cd516d1ef1d33ce3e7f3b1eab45b5a74a3b4c6cf"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"11db9b4b9fefb9384c1b1fa4819a6103c9b19cc7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The existing implementation doesn\u0027t support live migration between hosts"},{"line_number":5,"context_line":"    which belong to a XAPI pool. The shared storage migration depends"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"bf659307_a86d3c33","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":7},"in_reply_to":"bf659307_f2148150","updated":"2018-03-28 09:25:49.000000000","message":"Agreed.\n\nSo I think we should use \"feature\" instead of \"upgrade\".","commit_id":"cd516d1ef1d33ce3e7f3b1eab45b5a74a3b4c6cf"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"52cad0eb28f2117f92a66622bf0b4316e7d391d1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The existing implementation doesn\u0027t support live migration between hosts"},{"line_number":5,"context_line":"    which belong to a XAPI pool. The shared storage migration depends"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"bf659307_6e1dedbb","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":7},"in_reply_to":"bf659307_f2148150","updated":"2018-03-28 10:04:48.000000000","message":"will modify it.","commit_id":"cd516d1ef1d33ce3e7f3b1eab45b5a74a3b4c6cf"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"d5511eea6be584fd485e2bc33a035c58bfee23b2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The existing implementation doesn\u0027t support live migration between hosts"},{"line_number":5,"context_line":"    which belong to a XAPI pool. The shared storage migration depends"},{"line_number":6,"context_line":"    aggregate pool and it depends on uppercall to check if hosts belong to"},{"line_number":7,"context_line":"    the same aggregate pool. But the upper call is broken in cells."},{"line_number":8,"context_line":"    Add support to live migration in XAPI pool instead of aggregate pool and"},{"line_number":9,"context_line":"    the broken aggregate uppercall will be removed."},{"line_number":10,"context_line":"    Users could directly install OpenStack on pooled xenserver to use this"},{"line_number":11,"context_line":"    feather."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"bf659307_3a28b9e0","line":9,"range":{"start_line":4,"start_character":4,"end_line":9,"end_character":51},"updated":"2018-03-27 07:10:10.000000000","message":"When users read this reno, the existing implementation has supported xapi pool.\n\nYou should say something like:\n  Now we support ... XAPI pool; the old way with aggregation doesn\u0027t work now due to .....; If want to continue support shared storage migration, the operators should add the hosts belong to aggregate pool into xapi pool.","commit_id":"cd516d1ef1d33ce3e7f3b1eab45b5a74a3b4c6cf"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"969664729881be8d9692a89bf3aeb76e49706a92","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The existing implementation doesn\u0027t support live migration between hosts"},{"line_number":5,"context_line":"    which belong to a XAPI pool. The shared storage migration depends"},{"line_number":6,"context_line":"    aggregate pool and it depends on uppercall to check if hosts belong to"},{"line_number":7,"context_line":"    the same aggregate pool. But the upper call is broken in cells."},{"line_number":8,"context_line":"    Add support to live migration in XAPI pool instead of aggregate pool and"},{"line_number":9,"context_line":"    the broken aggregate uppercall will be removed."},{"line_number":10,"context_line":"    Users could directly install OpenStack on pooled xenserver to use this"},{"line_number":11,"context_line":"    feather."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"bf659307_5690c843","line":9,"range":{"start_line":4,"start_character":4,"end_line":9,"end_character":51},"in_reply_to":"bf659307_3a28b9e0","updated":"2018-03-28 02:31:07.000000000","message":"will modify","commit_id":"cd516d1ef1d33ce3e7f3b1eab45b5a74a3b4c6cf"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"d5511eea6be584fd485e2bc33a035c58bfee23b2","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    Add support to live migration in XAPI pool instead of aggregate pool and"},{"line_number":9,"context_line":"    the broken aggregate uppercall will be removed."},{"line_number":10,"context_line":"    Users could directly install OpenStack on pooled xenserver to use this"},{"line_number":11,"context_line":"    feather."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"bf659307_baa129ac","line":11,"range":{"start_line":11,"start_character":4,"end_line":11,"end_character":11},"updated":"2018-03-27 07:10:10.000000000","message":"feature.","commit_id":"cd516d1ef1d33ce3e7f3b1eab45b5a74a3b4c6cf"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"969664729881be8d9692a89bf3aeb76e49706a92","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    Add support to live migration in XAPI pool instead of aggregate pool and"},{"line_number":9,"context_line":"    the broken aggregate uppercall will be removed."},{"line_number":10,"context_line":"    Users could directly install OpenStack on pooled xenserver to use this"},{"line_number":11,"context_line":"    feather."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"bf659307_76938c50","line":11,"range":{"start_line":11,"start_character":4,"end_line":11,"end_character":11},"in_reply_to":"bf659307_baa129ac","updated":"2018-03-28 02:31:07.000000000","message":"thanks","commit_id":"cd516d1ef1d33ce3e7f3b1eab45b5a74a3b4c6cf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c604be983f532854f4fc2f3c3e25a4a0387d6116","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"feature:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    XenServer Pools with shared storage used to use aggregates in Nova,"},{"line_number":5,"context_line":"    however this support was not adequately tested and became broken in"},{"line_number":6,"context_line":"    a previous release."},{"line_number":7,"context_line":"    Now live migration with shared storage is possible using native"},{"line_number":8,"context_line":"    XAPI pools - independently of Nova\u0027s aggregates."},{"line_number":9,"context_line":"    The XenAPI/Nova integration expects one nova-compute per XenServer"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"bf659307_b00a3023","line":6,"range":{"start_line":4,"start_character":4,"end_line":6,"end_character":23},"updated":"2018-04-12 20:00:37.000000000","message":"Looks like we should modify or remove this section of the docs:\n\nhttps://docs.openstack.org/nova/latest/user/aggregates.html?highlight\u003dxenapi#xen-pool-host-aggregates\n\nIf live migration with xenserver pools using aggregates doesn\u0027t work, we could remove that section from the docs in a separate change so we can also backport it to stable branches.\n\n--\n\nSimilar, but probably something that should actually be updated as part of this patch:\n\nhttps://docs.openstack.org/nova/latest/admin/configuring-migrations.html#configuring-migrations-xenserver-shared-storage","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"934bc0b4455097c1c23f302a22c87fb08e64e763","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"feature:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    XenServer Pools with shared storage used to use aggregates in Nova,"},{"line_number":5,"context_line":"    however this support was not adequately tested and became broken in"},{"line_number":6,"context_line":"    a previous release."},{"line_number":7,"context_line":"    Now live migration with shared storage is possible using native"},{"line_number":8,"context_line":"    XAPI pools - independently of Nova\u0027s aggregates."},{"line_number":9,"context_line":"    The XenAPI/Nova integration expects one nova-compute per XenServer"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"bf659307_b0fa25ba","line":6,"range":{"start_line":4,"start_character":4,"end_line":6,"end_character":23},"in_reply_to":"bf659307_b00a3023","updated":"2018-04-13 03:21:55.000000000","message":"OK, will remove the old description.","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c604be983f532854f4fc2f3c3e25a4a0387d6116","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    however this support was not adequately tested and became broken in"},{"line_number":6,"context_line":"    a previous release."},{"line_number":7,"context_line":"    Now live migration with shared storage is possible using native"},{"line_number":8,"context_line":"    XAPI pools - independently of Nova\u0027s aggregates."},{"line_number":9,"context_line":"    The XenAPI/Nova integration expects one nova-compute per XenServer"},{"line_number":10,"context_line":"    host, so a nova-compute must be run for each slave XenServer host"},{"line_number":11,"context_line":"    in the pool as well as for the master."}],"source_content_type":"text/x-yaml","patch_set":21,"id":"bf659307_f03bc8e6","line":8,"range":{"start_line":8,"start_character":4,"end_line":8,"end_character":14},"updated":"2018-04-12 20:00:37.000000000","message":"It could be done in a follow up patch, but could this term be defined a bit in this xenapi docs page?\n\nhttps://docs.openstack.org/nova/latest/admin/configuration/hypervisor-xen-api.html\n\nI don\u0027t see anything in there about pools or live migration.","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"b5a3f77703ee36adb3aaf6366ef9613ba12e05a5","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    however this support was not adequately tested and became broken in"},{"line_number":6,"context_line":"    a previous release."},{"line_number":7,"context_line":"    Now live migration with shared storage is possible using native"},{"line_number":8,"context_line":"    XAPI pools - independently of Nova\u0027s aggregates."},{"line_number":9,"context_line":"    The XenAPI/Nova integration expects one nova-compute per XenServer"},{"line_number":10,"context_line":"    host, so a nova-compute must be run for each slave XenServer host"},{"line_number":11,"context_line":"    in the pool as well as for the master."}],"source_content_type":"text/x-yaml","patch_set":21,"id":"bf659307_05194ed5","line":8,"range":{"start_line":8,"start_character":4,"end_line":8,"end_character":14},"in_reply_to":"bf659307_5cc3a2ed","updated":"2018-04-13 09:08:37.000000000","message":"https://docs.openstack.org/nova/latest/admin/configuring-migrations.html#configuring-migrations-xenserver-shared-storage This document changes will include in this patch.","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"a77fa637e7322459ed499eab0f5d7ef68aa3b328","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    however this support was not adequately tested and became broken in"},{"line_number":6,"context_line":"    a previous release."},{"line_number":7,"context_line":"    Now live migration with shared storage is possible using native"},{"line_number":8,"context_line":"    XAPI pools - independently of Nova\u0027s aggregates."},{"line_number":9,"context_line":"    The XenAPI/Nova integration expects one nova-compute per XenServer"},{"line_number":10,"context_line":"    host, so a nova-compute must be run for each slave XenServer host"},{"line_number":11,"context_line":"    in the pool as well as for the master."}],"source_content_type":"text/x-yaml","patch_set":21,"id":"bf659307_5cc3a2ed","line":8,"range":{"start_line":8,"start_character":4,"end_line":8,"end_character":14},"in_reply_to":"bf659307_f03bc8e6","updated":"2018-04-13 07:54:09.000000000","message":"Hi, Matt, I will use a new patch to do all the documents updating things. And another patch to deprecate pool_states and related code. But both will not be involved in this patch, is that OK?","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"934bc0b4455097c1c23f302a22c87fb08e64e763","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    however this support was not adequately tested and became broken in"},{"line_number":6,"context_line":"    a previous release."},{"line_number":7,"context_line":"    Now live migration with shared storage is possible using native"},{"line_number":8,"context_line":"    XAPI pools - independently of Nova\u0027s aggregates."},{"line_number":9,"context_line":"    The XenAPI/Nova integration expects one nova-compute per XenServer"},{"line_number":10,"context_line":"    host, so a nova-compute must be run for each slave XenServer host"},{"line_number":11,"context_line":"    in the pool as well as for the master."}],"source_content_type":"text/x-yaml","patch_set":21,"id":"bf659307_30d5b51c","line":8,"range":{"start_line":8,"start_character":4,"end_line":8,"end_character":14},"in_reply_to":"bf659307_f03bc8e6","updated":"2018-04-13 03:21:55.000000000","message":"Will put it on the schedule, thanks, Matt.","commit_id":"9b18ab256ccd091aa72a023cd39e338561db4959"}]}
