Merge "Insert os_version into instance obj when boot-from-volume"
This commit is contained in:
		@@ -2456,6 +2456,7 @@ class ZVMVolumeOperatorTestCase(ZVMTestCase):
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
        super(ZVMVolumeOperatorTestCase, self).setUp()
 | 
			
		||||
        self.volumeop = volumeop.VolumeOperator()
 | 
			
		||||
        self.fake_inst = self.instance
 | 
			
		||||
        self.mox.UnsetStubs()
 | 
			
		||||
 | 
			
		||||
    def test_init(self):
 | 
			
		||||
@@ -2463,7 +2464,6 @@ class ZVMVolumeOperatorTestCase(ZVMTestCase):
 | 
			
		||||
 | 
			
		||||
    def test_attach_volume_to_instance_check_args(self):
 | 
			
		||||
        fake_connection_info = {'info': 'fake_info'}
 | 
			
		||||
        fake_instance = {'name': 'fake_instance'}
 | 
			
		||||
 | 
			
		||||
        farg = mox.IgnoreArg()
 | 
			
		||||
        self.assertRaises(exception.ZVMDriverError,
 | 
			
		||||
@@ -2471,11 +2471,10 @@ class ZVMVolumeOperatorTestCase(ZVMTestCase):
 | 
			
		||||
                          fake_connection_info, None, farg, True)
 | 
			
		||||
        self.assertRaises(exception.ZVMDriverError,
 | 
			
		||||
                          self.volumeop.attach_volume_to_instance, None,
 | 
			
		||||
                          None, fake_instance, farg, False)
 | 
			
		||||
                          None, self.fake_inst, farg, False)
 | 
			
		||||
 | 
			
		||||
    def test_detach_volume_from_instance_check_args(self):
 | 
			
		||||
        fake_connection_info = {'info': 'fake_info'}
 | 
			
		||||
        fake_instance = {'name': 'fake_instance'}
 | 
			
		||||
 | 
			
		||||
        farg = mox.IgnoreArg()
 | 
			
		||||
        self.assertRaises(exception.ZVMDriverError,
 | 
			
		||||
@@ -2483,11 +2482,10 @@ class ZVMVolumeOperatorTestCase(ZVMTestCase):
 | 
			
		||||
                          fake_connection_info, None, farg, True)
 | 
			
		||||
        self.assertRaises(exception.ZVMDriverError,
 | 
			
		||||
                          self.volumeop.detach_volume_from_instance,
 | 
			
		||||
                          None, fake_instance, farg, False)
 | 
			
		||||
                          None, self.fake_inst, farg, False)
 | 
			
		||||
 | 
			
		||||
    def test_attach_volume_to_instance_active(self):
 | 
			
		||||
        fake_connection_info = {'info': 'fake_info'}
 | 
			
		||||
        fake_instance = {'name': 'fake_instance'}
 | 
			
		||||
        is_active = True
 | 
			
		||||
 | 
			
		||||
        farg = mox.IgnoreArg()
 | 
			
		||||
@@ -2498,12 +2496,12 @@ class ZVMVolumeOperatorTestCase(ZVMTestCase):
 | 
			
		||||
        self.mox.ReplayAll()
 | 
			
		||||
 | 
			
		||||
        self.volumeop.attach_volume_to_instance(farg, fake_connection_info,
 | 
			
		||||
                                                fake_instance, farg, is_active)
 | 
			
		||||
                                                self.fake_inst, farg,
 | 
			
		||||
                                                is_active)
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
 | 
			
		||||
    def test_attach_volume_to_instance_inactive(self):
 | 
			
		||||
        fake_connection_info = {'info': 'fake_info'}
 | 
			
		||||
        fake_instance = {'name': 'fake_instance'}
 | 
			
		||||
        is_active = False
 | 
			
		||||
 | 
			
		||||
        farg = mox.IgnoreArg()
 | 
			
		||||
@@ -2514,12 +2512,12 @@ class ZVMVolumeOperatorTestCase(ZVMTestCase):
 | 
			
		||||
        self.mox.ReplayAll()
 | 
			
		||||
 | 
			
		||||
        self.volumeop.attach_volume_to_instance(farg, fake_connection_info,
 | 
			
		||||
                                                fake_instance, farg, is_active)
 | 
			
		||||
                                                self.fake_inst, farg,
 | 
			
		||||
                                                is_active)
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
 | 
			
		||||
    def test_detach_volume_from_instance_active(self):
 | 
			
		||||
        fake_connection_info = {'info': 'fake_info'}
 | 
			
		||||
        fake_instance = {'name': 'fake_instance'}
 | 
			
		||||
        is_active = True
 | 
			
		||||
 | 
			
		||||
        farg = mox.IgnoreArg()
 | 
			
		||||
@@ -2530,13 +2528,12 @@ class ZVMVolumeOperatorTestCase(ZVMTestCase):
 | 
			
		||||
        self.mox.ReplayAll()
 | 
			
		||||
 | 
			
		||||
        self.volumeop.detach_volume_from_instance(fake_connection_info,
 | 
			
		||||
                                                  fake_instance, farg,
 | 
			
		||||
                                                  self.fake_inst, farg,
 | 
			
		||||
                                                  is_active)
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
 | 
			
		||||
    def test_detach_volume_from_instance_inactive(self):
 | 
			
		||||
        fake_connection_info = {'info': 'fake_info'}
 | 
			
		||||
        fake_instance = {'name': 'fake_instance'}
 | 
			
		||||
        is_active = False
 | 
			
		||||
 | 
			
		||||
        farg = mox.IgnoreArg()
 | 
			
		||||
@@ -2547,7 +2544,7 @@ class ZVMVolumeOperatorTestCase(ZVMTestCase):
 | 
			
		||||
        self.mox.ReplayAll()
 | 
			
		||||
 | 
			
		||||
        self.volumeop.detach_volume_from_instance(fake_connection_info,
 | 
			
		||||
                                                  fake_instance, farg,
 | 
			
		||||
                                                  self.fake_inst, farg,
 | 
			
		||||
                                                  is_active)
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
 | 
			
		||||
@@ -2755,6 +2752,8 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
        super(SVCDriverTestCase, self).setUp()
 | 
			
		||||
        self.driver = volumeop.SVCDriver()
 | 
			
		||||
        self.flags(zvm_multiple_fcp=False)
 | 
			
		||||
        self.fake_inst = self.instance
 | 
			
		||||
        self.inst_name = self.fake_inst['name']
 | 
			
		||||
        self.mox.UnsetStubs()
 | 
			
		||||
 | 
			
		||||
    def test_init(self):
 | 
			
		||||
@@ -3108,20 +3107,18 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
        self.assertEqual(target_info, connection_info)
 | 
			
		||||
 | 
			
		||||
    def test_get_volume_connector_no_fcp(self):
 | 
			
		||||
        fake_instance = {'name': 'fake'}
 | 
			
		||||
        self.mox.StubOutWithMock(self.driver, '_get_fcp_from_pool')
 | 
			
		||||
        self.driver._get_fcp_from_pool().AndReturn(None)
 | 
			
		||||
        self.mox.ReplayAll()
 | 
			
		||||
 | 
			
		||||
        empty_connector = {'zvm_fcp': [], 'wwpns': [], 'host': ''}
 | 
			
		||||
        self.assertEqual(empty_connector,
 | 
			
		||||
                         self.driver.get_volume_connector(fake_instance))
 | 
			
		||||
                         self.driver.get_volume_connector(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
 | 
			
		||||
    def test_get_volume_connector_from_instance(self):
 | 
			
		||||
        fake_instance = {'name': 'fake'}
 | 
			
		||||
        self.driver._instance_fcp_map = {'fake': {'fcp_list': ['1faa'],
 | 
			
		||||
                                                  'count': 1}}
 | 
			
		||||
        self.driver._instance_fcp_map = {self.inst_name: {'fcp_list': ['1faa'],
 | 
			
		||||
                                                          'count': 1}}
 | 
			
		||||
 | 
			
		||||
        farg = mox.IgnoreArg()
 | 
			
		||||
        self.mox.StubOutWithMock(self.driver, '_get_wwpn')
 | 
			
		||||
@@ -3132,13 +3129,12 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
                            'wwpns': ['0000000100000001'],
 | 
			
		||||
                            'zvm_fcp': ['1faa']}
 | 
			
		||||
        self.assertEqual(target_connector,
 | 
			
		||||
                         self.driver.get_volume_connector(fake_instance))
 | 
			
		||||
                         self.driver.get_volume_connector(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_get_volume_connector_from_pool(self):
 | 
			
		||||
        fake_instance = {'name': 'fake'}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([]),
 | 
			
		||||
                                 '1fab': self.driver.FCP([])}
 | 
			
		||||
        self.mox.StubOutWithMock(self.driver, '_get_fcp_from_pool')
 | 
			
		||||
@@ -3153,16 +3149,15 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
                            'wwpns': ['0000000100000001', '0000000200000002'],
 | 
			
		||||
                            'zvm_fcp': ['1faa', '1fab']}
 | 
			
		||||
        self.assertEqual(target_connector,
 | 
			
		||||
                         self.driver.get_volume_connector(fake_instance))
 | 
			
		||||
                         self.driver.get_volume_connector(self.fake_inst))
 | 
			
		||||
        self.assertEqual({'fcp_list': ['1faa', '1fab'], 'count': 0},
 | 
			
		||||
                         self.driver._instance_fcp_map.get('fake'))
 | 
			
		||||
                         self.driver._instance_fcp_map.get(self.inst_name))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
        self.driver._fcp_pool = {}
 | 
			
		||||
 | 
			
		||||
    def test_get_volume_connector_no_wwpn(self):
 | 
			
		||||
        fake_instance = {'name': 'fake'}
 | 
			
		||||
        self.driver._fcp_pool = {'0001': self.driver.FCP([])}
 | 
			
		||||
        self.mox.StubOutWithMock(self.driver, '_get_fcp_from_pool')
 | 
			
		||||
        self.mox.StubOutWithMock(self.driver, '_get_wwpn')
 | 
			
		||||
@@ -3173,7 +3168,7 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
 | 
			
		||||
        empty_connector = {'zvm_fcp': [], 'wwpns': [], 'host': ''}
 | 
			
		||||
        self.assertEqual(empty_connector,
 | 
			
		||||
                         self.driver.get_volume_connector(fake_instance))
 | 
			
		||||
                         self.driver.get_volume_connector(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._fcp_pool = {}
 | 
			
		||||
 | 
			
		||||
@@ -3434,7 +3429,6 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
 | 
			
		||||
    def test_attach_volume_active_error_no_rollback(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa')
 | 
			
		||||
        fake_instance = {'name': 'fake'}
 | 
			
		||||
        fake_mountpoint = '/dev/vdd'
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([])}
 | 
			
		||||
@@ -3455,15 +3449,14 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
 | 
			
		||||
        self.assertRaises(exception.ZVMVolumeError,
 | 
			
		||||
                          self.driver.attach_volume_active, farg,
 | 
			
		||||
                          farg, fake_instance, fake_mountpoint, rollback)
 | 
			
		||||
        self.assertFalse(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
                          farg, self.fake_inst, fake_mountpoint, rollback)
 | 
			
		||||
        self.assertFalse(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_attach_volume_active_error_rollback_and_detach(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa')
 | 
			
		||||
        fake_mountpoint = '/dev/vdd'
 | 
			
		||||
        fake_instance = {'name': 'fake'}
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([])}
 | 
			
		||||
        rollback = True
 | 
			
		||||
@@ -3494,17 +3487,16 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
 | 
			
		||||
        self.assertRaises(exception.ZVMVolumeError,
 | 
			
		||||
                          self.driver.attach_volume_active, farg, farg,
 | 
			
		||||
                          fake_instance, fake_mountpoint, rollback)
 | 
			
		||||
        self.assertFalse(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
                          self.fake_inst, fake_mountpoint, rollback)
 | 
			
		||||
        self.assertFalse(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_attach_volume_active_error_rollback_no_detach(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa')
 | 
			
		||||
        fake_mountpoint = '/dev/vdd'
 | 
			
		||||
        fake_instance = {'name': 'fake'}
 | 
			
		||||
        self.driver._instance_fcp_map = {'fake': {'fcp_list': ['1faa'],
 | 
			
		||||
                                                  'count': 1}}
 | 
			
		||||
        self.driver._instance_fcp_map = {self.inst_name: {'fcp_list': ['1faa'],
 | 
			
		||||
                                                          'count': 1}}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([])}
 | 
			
		||||
        rollback = True
 | 
			
		||||
 | 
			
		||||
@@ -3532,15 +3524,14 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
 | 
			
		||||
        self.assertRaises(exception.ZVMVolumeError,
 | 
			
		||||
                          self.driver.attach_volume_active, farg,
 | 
			
		||||
                          farg, fake_instance, fake_mountpoint, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
                          farg, self.fake_inst, fake_mountpoint, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_attach_volume_active(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa')
 | 
			
		||||
        fake_mountpoint = '/dev/vdd'
 | 
			
		||||
        fake_instance = {'name': 'fake'}
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([])}
 | 
			
		||||
        rollback = True
 | 
			
		||||
@@ -3558,16 +3549,15 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
                None)
 | 
			
		||||
        self.mox.ReplayAll()
 | 
			
		||||
 | 
			
		||||
        self.driver.attach_volume_active(farg, farg, fake_instance,
 | 
			
		||||
        self.driver.attach_volume_active(farg, farg, self.fake_inst,
 | 
			
		||||
                                         fake_mountpoint, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_attach_volume_active_multi_fcp(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa;1fab')
 | 
			
		||||
        fake_mountpoint = '/dev/vdd'
 | 
			
		||||
        fake_instance = {'name': 'fake'}
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([]),
 | 
			
		||||
                                 '1fab': self.driver.FCP([])}
 | 
			
		||||
@@ -3586,15 +3576,14 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
                None)
 | 
			
		||||
        self.mox.ReplayAll()
 | 
			
		||||
 | 
			
		||||
        self.driver.attach_volume_active(farg, farg, fake_instance,
 | 
			
		||||
        self.driver.attach_volume_active(farg, farg, self.fake_inst,
 | 
			
		||||
                                         fake_mountpoint, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_attach_volume_active_no_mountpoint(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa')
 | 
			
		||||
        fake_instance = {'name': 'fake'}
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([])}
 | 
			
		||||
        rollback = True
 | 
			
		||||
@@ -3610,18 +3599,17 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
        self.driver._add_zfcp(farg, farg, farg, farg, farg).AndReturn(None)
 | 
			
		||||
        self.mox.ReplayAll()
 | 
			
		||||
 | 
			
		||||
        self.driver.attach_volume_active(farg, farg, fake_instance,
 | 
			
		||||
        self.driver.attach_volume_active(farg, farg, self.fake_inst,
 | 
			
		||||
                                         None, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_detach_volume_active_error_no_rollback(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa')
 | 
			
		||||
        fake_instance = {'name': 'fake'}
 | 
			
		||||
        fake_mountpoint = '/dev/vdd'
 | 
			
		||||
        self.driver._instance_fcp_map = {'fake': {'fcp_list': ['1faa'],
 | 
			
		||||
                                                  'count': 1}}
 | 
			
		||||
        self.driver._instance_fcp_map = {self.inst_name: {'fcp_list': ['1faa'],
 | 
			
		||||
                                                          'count': 1}}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([])}
 | 
			
		||||
        rollback = False
 | 
			
		||||
 | 
			
		||||
@@ -3642,17 +3630,16 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
 | 
			
		||||
        self.assertRaises(exception.ZVMVolumeError,
 | 
			
		||||
                          self.driver.detach_volume_active, farg,
 | 
			
		||||
                          fake_instance, fake_mountpoint, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
                          self.fake_inst, fake_mountpoint, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_detach_volume_active_error_rollback_with_mountpoint(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa')
 | 
			
		||||
        fake_instance = {'name': 'fake'}
 | 
			
		||||
        fake_mountpoint = '/dev/vdd'
 | 
			
		||||
        self.driver._instance_fcp_map = {'fake': {'fcp_list': ['1faa'],
 | 
			
		||||
                                                  'count': 1}}
 | 
			
		||||
        self.driver._instance_fcp_map = {self.inst_name: {'fcp_list': ['1faa'],
 | 
			
		||||
                                                          'count': 1}}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([])}
 | 
			
		||||
        rollback = True
 | 
			
		||||
 | 
			
		||||
@@ -3682,16 +3669,15 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
 | 
			
		||||
        self.assertRaises(exception.ZVMVolumeError,
 | 
			
		||||
                          self.driver.detach_volume_active, farg,
 | 
			
		||||
                          fake_instance, fake_mountpoint, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
                          self.fake_inst, fake_mountpoint, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_detach_volume_active_error_rollback_no_mountpoint(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa')
 | 
			
		||||
        fake_instance = {'name': 'fake'}
 | 
			
		||||
        self.driver._instance_fcp_map = {'fake': {'fcp_list': ['1faa'],
 | 
			
		||||
                                                  'count': 1}}
 | 
			
		||||
        self.driver._instance_fcp_map = {self.inst_name: {'fcp_list': ['1faa'],
 | 
			
		||||
                                                          'count': 1}}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([])}
 | 
			
		||||
        rollback = True
 | 
			
		||||
 | 
			
		||||
@@ -3715,17 +3701,16 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
 | 
			
		||||
        self.assertRaises(exception.ZVMVolumeError,
 | 
			
		||||
                          self.driver.detach_volume_active,
 | 
			
		||||
                          farg, fake_instance, None, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
                          farg, self.fake_inst, None, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_detach_volume_active_and_detach_fcp(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa')
 | 
			
		||||
        fake_mountpoint = '/dev/vdd'
 | 
			
		||||
        fake_instance = {'name': 'fake'}
 | 
			
		||||
        self.driver._instance_fcp_map = {'fake': {'fcp_list': ['1faa'],
 | 
			
		||||
                                                  'count': 1}}
 | 
			
		||||
        self.driver._instance_fcp_map = {self.inst_name: {'fcp_list': ['1faa'],
 | 
			
		||||
                                                          'count': 1}}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([])}
 | 
			
		||||
        rollback = False
 | 
			
		||||
 | 
			
		||||
@@ -3743,18 +3728,17 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
        self.driver._detach_device(farg, farg).AndReturn(None)
 | 
			
		||||
        self.mox.ReplayAll()
 | 
			
		||||
 | 
			
		||||
        self.driver.detach_volume_active(farg, fake_instance,
 | 
			
		||||
        self.driver.detach_volume_active(farg, self.fake_inst,
 | 
			
		||||
                                         fake_mountpoint, rollback)
 | 
			
		||||
        self.assertFalse(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
        self.assertFalse(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_detach_volume_active_and_reserve_fcp(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa')
 | 
			
		||||
        fake_mountpoint = '/dev/vdd'
 | 
			
		||||
        fake_instance = {'name': 'fake'}
 | 
			
		||||
        self.driver._instance_fcp_map = {'fake': {'fcp_list': ['1faa'],
 | 
			
		||||
                                                  'count': 2}}
 | 
			
		||||
        self.driver._instance_fcp_map = {self.inst_name: {'fcp_list': ['1faa'],
 | 
			
		||||
                                                          'count': 2}}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([])}
 | 
			
		||||
        rollback = False
 | 
			
		||||
 | 
			
		||||
@@ -3770,18 +3754,18 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
        self.driver._remove_zfcp_from_pool(farg, farg).AndReturn(None)
 | 
			
		||||
        self.mox.ReplayAll()
 | 
			
		||||
 | 
			
		||||
        self.driver.detach_volume_active(farg, fake_instance,
 | 
			
		||||
        self.driver.detach_volume_active(farg, self.fake_inst,
 | 
			
		||||
                                         fake_mountpoint, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_detach_volume_active_multi_fcp(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa;1fab')
 | 
			
		||||
        fake_mountpoint = '/dev/vdd'
 | 
			
		||||
        fake_instance = {'name': 'fake'}
 | 
			
		||||
        self.driver._instance_fcp_map = {'fake': {'fcp_list': ['1faa', '1fab'],
 | 
			
		||||
                                                  'count': 2}}
 | 
			
		||||
        self.driver._instance_fcp_map = {self.inst_name: {'fcp_list': [
 | 
			
		||||
                                                            '1faa', '1fab'],
 | 
			
		||||
                                                          'count': 2}}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([]),
 | 
			
		||||
                                 '1fab': self.driver.FCP([])}
 | 
			
		||||
        rollback = False
 | 
			
		||||
@@ -3798,16 +3782,15 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
        self.driver._remove_zfcp_from_pool(farg, farg).AndReturn(None)
 | 
			
		||||
        self.mox.ReplayAll()
 | 
			
		||||
 | 
			
		||||
        self.driver.detach_volume_active(farg, fake_instance,
 | 
			
		||||
        self.driver.detach_volume_active(farg, self.fake_inst,
 | 
			
		||||
                                         fake_mountpoint, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_attach_volume_inactive_error_no_rollback(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa')
 | 
			
		||||
        fake_instance = {'name': 'fake',
 | 
			
		||||
                         'system_metadata': {'image_os_version': 'sles11'}}
 | 
			
		||||
        self.fake_inst.system_metadata = {'image_os_version': 'sles11'}
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([])}
 | 
			
		||||
        rollback = False
 | 
			
		||||
@@ -3831,15 +3814,14 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
 | 
			
		||||
        self.assertRaises(exception.ZVMVolumeError,
 | 
			
		||||
                          self.driver.attach_volume_inactive, farg,
 | 
			
		||||
                          farg, fake_instance, farg, rollback)
 | 
			
		||||
        self.assertFalse(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
                          farg, self.fake_inst, farg, rollback)
 | 
			
		||||
        self.assertFalse(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_attach_volume_inactive_error_rollback_and_detach(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa')
 | 
			
		||||
        fake_instance = {'name': 'fake',
 | 
			
		||||
                         'system_metadata': {'image_os_version': 'sles11'}}
 | 
			
		||||
        self.fake_inst.system_metadata = {'image_os_version': 'sles11'}
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([])}
 | 
			
		||||
        rollback = True
 | 
			
		||||
@@ -3872,17 +3854,16 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
 | 
			
		||||
        self.assertRaises(exception.ZVMVolumeError,
 | 
			
		||||
                          self.driver.attach_volume_inactive, farg,
 | 
			
		||||
                          farg, fake_instance, farg, rollback)
 | 
			
		||||
        self.assertFalse(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
                          farg, self.fake_inst, farg, rollback)
 | 
			
		||||
        self.assertFalse(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_attach_volume_inactive_error_rollback_no_detach(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa')
 | 
			
		||||
        fake_instance = {'name': 'fake',
 | 
			
		||||
                         'system_metadata': {'image_os_version': 'sles11'}}
 | 
			
		||||
        self.driver._instance_fcp_map = {'fake': {'fcp_list': ['1faa'],
 | 
			
		||||
                                                  'count': 1}}
 | 
			
		||||
        self.fake_inst.system_metadata = {'image_os_version': 'sles11'}
 | 
			
		||||
        self.driver._instance_fcp_map = {self.inst_name: {'fcp_list': ['1faa'],
 | 
			
		||||
                                                          'count': 1}}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([])}
 | 
			
		||||
        rollback = True
 | 
			
		||||
 | 
			
		||||
@@ -3910,15 +3891,14 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
 | 
			
		||||
        self.assertRaises(exception.ZVMVolumeError,
 | 
			
		||||
                          self.driver.attach_volume_inactive, farg,
 | 
			
		||||
                          farg, fake_instance, farg, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
                          farg, self.fake_inst, farg, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_attach_volume_inactive(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa')
 | 
			
		||||
        fake_instance = {'name': 'fake',
 | 
			
		||||
                         'system_metadata': {'image_os_version': 'sles11'}}
 | 
			
		||||
        self.fake_inst.system_metadata = {'image_os_version': 'sles11'}
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([])}
 | 
			
		||||
        rollback = True
 | 
			
		||||
@@ -3939,16 +3919,15 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
        self.driver._attach_device(farg, farg).AndReturn(None)
 | 
			
		||||
        self.mox.ReplayAll()
 | 
			
		||||
 | 
			
		||||
        self.driver.attach_volume_inactive(farg, farg, fake_instance,
 | 
			
		||||
        self.driver.attach_volume_inactive(farg, farg, self.fake_inst,
 | 
			
		||||
                                           farg, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_attach_volume_inactive_multi_fcp(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa;1fab')
 | 
			
		||||
        fake_instance = {'name': 'fake',
 | 
			
		||||
                         'system_metadata': {'image_os_version': 'sles11'}}
 | 
			
		||||
        self.fake_inst.system_metadata = {'image_os_version': 'sles11'}
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([]),
 | 
			
		||||
                                 '1fab': self.driver.FCP([])}
 | 
			
		||||
@@ -3971,18 +3950,17 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
        self.driver._attach_device(farg, farg).AndReturn(None)
 | 
			
		||||
        self.mox.ReplayAll()
 | 
			
		||||
 | 
			
		||||
        self.driver.attach_volume_inactive(farg, farg, fake_instance,
 | 
			
		||||
        self.driver.attach_volume_inactive(farg, farg, self.fake_inst,
 | 
			
		||||
                                           farg, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_attach_volume_inactive_no_attach(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa')
 | 
			
		||||
        fake_instance = {'name': 'fake',
 | 
			
		||||
                         'system_metadata': {'image_os_version': 'sles11'}}
 | 
			
		||||
        self.driver._instance_fcp_map = {'fake': {'fcp_list': ['1faa'],
 | 
			
		||||
                                                  'count': 1}}
 | 
			
		||||
        self.fake_inst.system_metadata = {'image_os_version': 'sles11'}
 | 
			
		||||
        self.driver._instance_fcp_map = {self.inst_name: {'fcp_list': ['1faa'],
 | 
			
		||||
                                                          'count': 1}}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([])}
 | 
			
		||||
        rollback = True
 | 
			
		||||
 | 
			
		||||
@@ -4000,18 +3978,17 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
                                   farg).AndReturn(None)
 | 
			
		||||
        self.mox.ReplayAll()
 | 
			
		||||
 | 
			
		||||
        self.driver.attach_volume_inactive(farg, farg, fake_instance,
 | 
			
		||||
        self.driver.attach_volume_inactive(farg, farg, self.fake_inst,
 | 
			
		||||
                                           farg, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_detach_volume_inactive_error_no_rollback(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa')
 | 
			
		||||
        fake_instance = {'name': 'fake',
 | 
			
		||||
                         'system_metadata': {'image_os_version': 'sles11'}}
 | 
			
		||||
        self.driver._instance_fcp_map = {'fake': {'fcp_list': ['1faa'],
 | 
			
		||||
                                                  'count': 1}}
 | 
			
		||||
        self.fake_inst.system_metadata = {'image_os_version': 'sles11'}
 | 
			
		||||
        self.driver._instance_fcp_map = {self.inst_name: {'fcp_list': ['1faa'],
 | 
			
		||||
                                                          'count': 1}}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([])}
 | 
			
		||||
        rollback = False
 | 
			
		||||
 | 
			
		||||
@@ -4033,17 +4010,16 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
 | 
			
		||||
        self.assertRaises(exception.ZVMVolumeError,
 | 
			
		||||
                          self.driver.detach_volume_inactive,
 | 
			
		||||
                          farg, fake_instance, farg, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
                          farg, self.fake_inst, farg, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_detach_volume_inactive_error_detach_rollback(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa')
 | 
			
		||||
        fake_instance = {'name': 'fake',
 | 
			
		||||
                         'system_metadata': {'image_os_version': 'sles11'}}
 | 
			
		||||
        self.driver._instance_fcp_map = {'fake': {'fcp_list': ['1faa'],
 | 
			
		||||
                                                  'count': 1}}
 | 
			
		||||
        self.fake_inst.system_metadata = {'image_os_version': 'sles11'}
 | 
			
		||||
        self.driver._instance_fcp_map = {self.inst_name: {'fcp_list': ['1faa'],
 | 
			
		||||
                                                          'count': 1}}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([])}
 | 
			
		||||
        rollback = True
 | 
			
		||||
 | 
			
		||||
@@ -4077,17 +4053,16 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
 | 
			
		||||
        self.assertRaises(exception.ZVMVolumeError,
 | 
			
		||||
                          self.driver.detach_volume_inactive,
 | 
			
		||||
                          farg, fake_instance, farg, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
                          farg, self.fake_inst, farg, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_detach_volume_inactive_error_no_detach_rollback(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa')
 | 
			
		||||
        fake_instance = {'name': 'fake',
 | 
			
		||||
                         'system_metadata': {'image_os_version': 'sles11'}}
 | 
			
		||||
        self.driver._instance_fcp_map = {'fake': {'fcp_list': ['1faa'],
 | 
			
		||||
                                                  'count': 2}}
 | 
			
		||||
        self.fake_inst.system_metadata = {'image_os_version': 'sles11'}
 | 
			
		||||
        self.driver._instance_fcp_map = {self.inst_name: {'fcp_list': ['1faa'],
 | 
			
		||||
                                                          'count': 2}}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([])}
 | 
			
		||||
        rollback = True
 | 
			
		||||
 | 
			
		||||
@@ -4120,17 +4095,16 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
 | 
			
		||||
        self.assertRaises(exception.ZVMVolumeError,
 | 
			
		||||
                          self.driver.detach_volume_inactive,
 | 
			
		||||
                          farg, fake_instance, farg, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
                          farg, self.fake_inst, farg, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_detach_volume_inactive_and_detach(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa')
 | 
			
		||||
        fake_instance = {'name': 'fake',
 | 
			
		||||
                         'system_metadata': {'image_os_version': 'sles11'}}
 | 
			
		||||
        self.driver._instance_fcp_map = {'fake': {'fcp_list': ['1faa'],
 | 
			
		||||
                                                  'count': 1}}
 | 
			
		||||
        self.fake_inst.system_metadata = {'image_os_version': 'sles11'}
 | 
			
		||||
        self.driver._instance_fcp_map = {self.inst_name: {'fcp_list': ['1faa'],
 | 
			
		||||
                                                          'count': 1}}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([])}
 | 
			
		||||
        rollback = True
 | 
			
		||||
 | 
			
		||||
@@ -4149,18 +4123,17 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
        self.driver._detach_device(farg, farg).AndReturn(None)
 | 
			
		||||
        self.mox.ReplayAll()
 | 
			
		||||
 | 
			
		||||
        self.driver.detach_volume_inactive(farg, fake_instance,
 | 
			
		||||
        self.driver.detach_volume_inactive(farg, self.fake_inst,
 | 
			
		||||
                                           farg, rollback)
 | 
			
		||||
        self.assertFalse(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
        self.assertFalse(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_detach_volume_inactive_no_detach(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa')
 | 
			
		||||
        fake_instance = {'name': 'fake',
 | 
			
		||||
                         'system_metadata': {'image_os_version': 'sles11'}}
 | 
			
		||||
        self.driver._instance_fcp_map = {'fake': {'fcp_list': ['1faa'],
 | 
			
		||||
                                                  'count': 2}}
 | 
			
		||||
        self.fake_inst.system_metadata = {'image_os_version': 'sles11'}
 | 
			
		||||
        self.driver._instance_fcp_map = {self.inst_name: {'fcp_list': ['1faa'],
 | 
			
		||||
                                                          'count': 2}}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([])}
 | 
			
		||||
        rollback = True
 | 
			
		||||
 | 
			
		||||
@@ -4177,17 +4150,17 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
                                   farg).AndReturn(None)
 | 
			
		||||
        self.mox.ReplayAll()
 | 
			
		||||
 | 
			
		||||
        self.driver.detach_volume_inactive(farg, fake_instance, farg, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
        self.driver.detach_volume_inactive(farg, self.fake_inst,
 | 
			
		||||
                                           farg, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
    def test_detach_volume_inactive_multi_path(self):
 | 
			
		||||
        fake_info = ('lun', 'wwpn', '1G', '1faa')
 | 
			
		||||
        fake_instance = {'name': 'fake',
 | 
			
		||||
                         'system_metadata': {'image_os_version': 'sles11'}}
 | 
			
		||||
        self.driver._instance_fcp_map = {'fake': {'fcp_list': ['1faa'],
 | 
			
		||||
                                                  'count': 2}}
 | 
			
		||||
        self.fake_inst.system_metadata = {'image_os_version': 'sles11'}
 | 
			
		||||
        self.driver._instance_fcp_map = {self.inst_name: {'fcp_list': ['1faa'],
 | 
			
		||||
                                                          'count': 2}}
 | 
			
		||||
        self.driver._fcp_pool = {'1faa': self.driver.FCP([]),
 | 
			
		||||
                                 '1fab': self.driver.FCP([])}
 | 
			
		||||
        rollback = True
 | 
			
		||||
@@ -4205,8 +4178,9 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
                                   farg).AndReturn(None)
 | 
			
		||||
        self.mox.ReplayAll()
 | 
			
		||||
 | 
			
		||||
        self.driver.detach_volume_inactive(farg, fake_instance, farg, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
        self.driver.detach_volume_inactive(farg, self.fake_inst,
 | 
			
		||||
                                           farg, rollback)
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
 | 
			
		||||
@@ -4218,26 +4192,25 @@ class SVCDriverTestCase(ZVMTestCase):
 | 
			
		||||
 | 
			
		||||
    def test_is_fcp_in_use_no_record(self):
 | 
			
		||||
        self.driver._instance_fcp_map = {}
 | 
			
		||||
        fake_instance = {'name': 'fake'}
 | 
			
		||||
        self.assertFalse(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
        self.assertFalse(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
 | 
			
		||||
    def test_is_fcp_in_use_reserved(self):
 | 
			
		||||
        self.driver._instance_fcp_map = {'fake': {'fcp': '1faa', 'count': 0}}
 | 
			
		||||
        fake_instance = {'name': 'fake'}
 | 
			
		||||
        self.assertFalse(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
        self.driver._instance_fcp_map = {self.inst_name: {'fcp': '1faa',
 | 
			
		||||
                                                          'count': 0}}
 | 
			
		||||
        self.assertFalse(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
 | 
			
		||||
    def test_is_fcp_in_use_only_one(self):
 | 
			
		||||
        self.driver._instance_fcp_map = {'fake': {'fcp': '1faa', 'count': 1}}
 | 
			
		||||
        fake_instance = {'name': 'fake'}
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
        self.driver._instance_fcp_map = {self.inst_name: {'fcp': '1faa',
 | 
			
		||||
                                                          'count': 1}}
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
 | 
			
		||||
    def test_is_fcp_in_use_multi_volume(self):
 | 
			
		||||
        self.driver._instance_fcp_map = {'fake': {'fcp': '1faa', 'count': 3}}
 | 
			
		||||
        fake_instance = {'name': 'fake'}
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(fake_instance))
 | 
			
		||||
        self.driver._instance_fcp_map = {self.inst_name: {'fcp': '1faa',
 | 
			
		||||
                                                          'count': 3}}
 | 
			
		||||
        self.assertTrue(self.driver._is_fcp_in_use(self.fake_inst))
 | 
			
		||||
        self.mox.VerifyAll()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -290,6 +290,8 @@ class ZVMDriver(driver.ComputeDriver):
 | 
			
		||||
            volume_summery = self._volume_api.get(context, volume_id)
 | 
			
		||||
            volume_meta = volume_summery['volume_metadata']
 | 
			
		||||
            os_version = volume_meta['os_version']
 | 
			
		||||
            instance.system_metadata['image_os_version'] = os_version
 | 
			
		||||
            instance.save()
 | 
			
		||||
 | 
			
		||||
        linuxdist = self._dist_manager.get_linux_dist(os_version)()
 | 
			
		||||
        files_and_cmds = linuxdist.create_network_configuration_files(
 | 
			
		||||
 
 | 
			
		||||
@@ -822,7 +822,7 @@ class SVCDriver(DriverAPI):
 | 
			
		||||
        do_attach = not self._is_fcp_in_use(instance)
 | 
			
		||||
        self._update_instance_fcp_map_if_unlocked(instance['name'],
 | 
			
		||||
                                                  fcp_list, self._INCREASE)
 | 
			
		||||
        os_version = instance['system_metadata']['image_os_version']
 | 
			
		||||
        os_version = instance.system_metadata['image_os_version']
 | 
			
		||||
        try:
 | 
			
		||||
            self._add_zfcp_to_pool(fcp, wwpn, lun, size)
 | 
			
		||||
            self._allocate_zfcp(instance, fcp, size, wwpn, lun)
 | 
			
		||||
@@ -862,7 +862,7 @@ class SVCDriver(DriverAPI):
 | 
			
		||||
        self._update_instance_fcp_map_if_unlocked(instance['name'],
 | 
			
		||||
                                                  fcp_list, self._DECREASE)
 | 
			
		||||
        do_detach = not self._is_fcp_in_use(instance)
 | 
			
		||||
        os_version = instance['system_metadata']['image_os_version']
 | 
			
		||||
        os_version = instance.system_metadata['image_os_version']
 | 
			
		||||
        try:
 | 
			
		||||
            self._remove_zfcp(instance, fcp, wwpn, lun)
 | 
			
		||||
            self._remove_zfcp_from_pool(wwpn, lun)
 | 
			
		||||
@@ -1049,7 +1049,7 @@ class SVCDriver(DriverAPI):
 | 
			
		||||
        self._xcat_chvm(instance['name'], body)
 | 
			
		||||
 | 
			
		||||
    def _create_mountpoint(self, instance, fcp, wwpn, lun, mountpoint):
 | 
			
		||||
        os_version = instance['system_metadata']['image_os_version']
 | 
			
		||||
        os_version = instance.system_metadata['image_os_version']
 | 
			
		||||
        dist = self._dist_manager.get_linux_dist(os_version)()
 | 
			
		||||
        srcdev = dist.assemble_zfcp_srcdev(fcp, wwpn, lun)
 | 
			
		||||
        body = [" ".join(['--createfilesysnode', srcdev, mountpoint])]
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user