Merge "Check volume_backend in retype"
This commit is contained in:
		| @@ -674,3 +674,14 @@ class VolumeUtilsTestCase(test.TestCase): | |||||||
|         expected = None |         expected = None | ||||||
|         self.assertEqual(expected, |         self.assertEqual(expected, | ||||||
|                          volume_utils.append_host(host, pool)) |                          volume_utils.append_host(host, pool)) | ||||||
|  |  | ||||||
|  |     def test_compare_hosts(self): | ||||||
|  |         host_1 = 'fake_host@backend1' | ||||||
|  |         host_2 = 'fake_host@backend1#pool1' | ||||||
|  |         self.assertTrue(volume_utils.hosts_are_equivalent(host_1, host_2)) | ||||||
|  |  | ||||||
|  |         host_2 = 'fake_host@backend1' | ||||||
|  |         self.assertTrue(volume_utils.hosts_are_equivalent(host_1, host_2)) | ||||||
|  |  | ||||||
|  |         host_2 = 'fake_host2@backend1' | ||||||
|  |         self.assertFalse(volume_utils.hosts_are_equivalent(host_1, host_2)) | ||||||
|   | |||||||
| @@ -1665,7 +1665,17 @@ class VolumeManager(manager.SchedulerDependentManager): | |||||||
|  |  | ||||||
|         # Call driver to try and change the type |         # Call driver to try and change the type | ||||||
|         retype_model_update = None |         retype_model_update = None | ||||||
|         if not retyped: |  | ||||||
|  |         # NOTE(jdg): Check to see if the destination host is the same | ||||||
|  |         # as the current.  If it's not don't call the driver.retype | ||||||
|  |         # method, otherwise drivers that implement retype may report | ||||||
|  |         # success, but it's invalid in the case of a migrate. | ||||||
|  |  | ||||||
|  |         # We assume that those that support pools do this internally | ||||||
|  |         # so we strip off the pools designation | ||||||
|  |         if (not retyped and | ||||||
|  |                 vol_utils.hosts_are_equivalent(self.driver.host, | ||||||
|  |                                                host['host'])): | ||||||
|             try: |             try: | ||||||
|                 new_type = volume_types.get_volume_type(context, new_type_id) |                 new_type = volume_types.get_volume_type(context, new_type_id) | ||||||
|                 ret = self.driver.retype(context, |                 ret = self.driver.retype(context, | ||||||
|   | |||||||
| @@ -507,3 +507,7 @@ def matching_backend_name(src_volume_type, volume_type): | |||||||
|             volume_type.get('volume_backend_name') |             volume_type.get('volume_backend_name') | ||||||
|     else: |     else: | ||||||
|         return False |         return False | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def hosts_are_equivalent(host_1, host_2): | ||||||
|  |     return extract_host(host_1) == extract_host(host_2) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jenkins
					Jenkins