def test_remove_storage_vopt(self): # Mock Data self.adpt.read.return_value = self.v1resp # Validate that the mapping was removed from existing def validate_update(*kargs, **kwargs): vios_w = kargs[0] self.assertEqual(4, len(vios_w.scsi_mappings)) return vios_w.entry self.adpt.update_by_path.side_effect = validate_update # Run the code media_name = 'bldr1_dfe05349_kyleh_config.iso' vios, remel = scsi_mapper.remove_vopt_mapping(self.adpt, 'fake_vios_uuid', 2, media_name=media_name) # Make sure that our validation code above was invoked self.assertEqual(1, self.adpt.update_by_path.call_count) self.assertEqual(1, len(remel)) self.assertIsInstance(remel[0], pvm_stor.VOptMedia) # And the VIOS was "looked up" self.assertEqual(1, self.adpt.read.call_count) self.assertEqual(self.v1resp.atom, vios.entry) # Now do it again, but passing the vios wrapper and the client UUID. # Match by UDID this time. media_udid = '0ebldr1_dfe05349_kyleh_config.iso' vios_wrap = pvm_vios.VIOS.wrap( tju.load_file(VIO_MULTI_MAP_FILE, self.adpt)) self.adpt.update_by_path.reset_mock() self.adpt.read.reset_mock() vios, remel = scsi_mapper.remove_vopt_mapping(self.adpt, vios_wrap, LPAR_UUID, udid=media_udid) self.assertEqual(1, self.adpt.update_by_path.call_count) self.assertEqual(1, len(remel)) self.assertIsInstance(remel[0], pvm_stor.VOptMedia) # But the VIOS was not "looked up" self.assertEqual(0, self.adpt.read.call_count) self.assertEqual(vios_wrap.entry, vios.entry)
def test_remove_storage_vopt(self): # Mock Data self.adpt.read.return_value = tju.load_file(VIO_MULTI_MAP_FILE, self.adpt) # Validate that the mapping was removed from existing def validate_update(*kargs, **kwargs): vios_w = kargs[0] self.assertEqual(4, len(vios_w.scsi_mappings)) return vios_w.entry self.adpt.update_by_path.side_effect = validate_update # Run the code media_name = 'bldr1_dfe05349_kyleh_config.iso' vios, remel = scsi_mapper.remove_vopt_mapping( self.adpt, 'fake_vios_uuid', 2, media_name=media_name) # Make sure that our validation code above was invoked self.assertEqual(1, self.adpt.update_by_path.call_count) self.assertEqual(1, len(remel)) self.assertIsInstance(remel[0], pvm_stor.VOptMedia) # And the VIOS was "looked up" self.assertEqual(1, self.adpt.read.call_count) # Now do it again, but passing the vios wrapper and the client UUID vios_wrap = pvm_vios.VIOS.wrap( tju.load_file(VIO_MULTI_MAP_FILE, self.adpt)) self.adpt.update_by_path.reset_mock() self.adpt.read.reset_mock() vios, remel = scsi_mapper.remove_vopt_mapping( self.adpt, vios_wrap, LPAR_UUID, media_name=media_name) self.assertEqual(1, self.adpt.update_by_path.call_count) self.assertEqual(1, len(remel)) self.assertIsInstance(remel[0], pvm_stor.VOptMedia) # But the VIOS was not "looked up" self.assertEqual(0, self.adpt.read.call_count)
def test_remove_storage_vopt_retry(self): """Tests removing the storage vOpt with multiple retries.""" # Mock Data. The retry will call this three times. They have to # be indepdent loads, otherwise the data gets re-used and the remove # will not be properly invoked. self.adpt.read.side_effect = [ tju.load_file(VIO_MULTI_MAP_FILE, self.adpt), tju.load_file(VIO_MULTI_MAP_FILE, self.adpt), tju.load_file(VIO_MULTI_MAP_FILE, self.adpt) ] global attempt_count attempt_count = 0 # Validate that the mapping was removed from existing. First few # loops, force a retry def validate_update(*kargs, **kwargs): global attempt_count attempt_count += 1 if attempt_count == 3: vios_w = kargs[0] self.assertEqual(4, len(vios_w.scsi_mappings)) return vios_w.entry else: tju.raiseRetryException() self.adpt.update_by_path.side_effect = validate_update # Run the code media_name = 'bldr1_dfe05349_kyleh_config.iso' remel = scsi_mapper.remove_vopt_mapping(self.adpt, 'fake_vios_uuid', 2, media_name=media_name)[1] # Make sure that our validation code above was invoked self.assertEqual(3, self.adpt.update_by_path.call_count) self.assertEqual(3, attempt_count) self.assertEqual(1, len(remel)) self.assertIsInstance(remel[0], pvm_stor.VOptMedia)
def test_remove_storage_vopt_no_name_specified(self): # Mock Data self.adpt.read.return_value = tju.load_file(VIO_MULTI_MAP_FILE, self.adpt) # Validate that the mapping was removed from existing def validate_update(*kargs, **kwargs): vios_w = kargs[0] self.assertEqual(4, len(vios_w.scsi_mappings)) return vios_w.entry self.adpt.update_by_path.side_effect = validate_update # Run the code vios, remel = scsi_mapper.remove_vopt_mapping( self.adpt, 'fake_vios_uuid', 2, media_name=None) # Make sure that our validation code above was invoked self.assertEqual(1, self.adpt.update_by_path.call_count) self.assertEqual(1, len(remel)) self.assertIsInstance(remel[0], pvm_stor.VOptMedia)
def test_remove_storage_vopt_retry(self): """Tests removing the storage vOpt with multiple retries.""" # Mock Data. The retry will call this three times. They have to # be indepdent loads, otherwise the data gets re-used and the remove # will not be properly invoked. self.adpt.read.side_effect = [ tju.load_file(VIO_MULTI_MAP_FILE, self.adpt), tju.load_file(VIO_MULTI_MAP_FILE, self.adpt), tju.load_file(VIO_MULTI_MAP_FILE, self.adpt)] global attempt_count attempt_count = 0 # Validate that the mapping was removed from existing. First few # loops, force a retry def validate_update(*kargs, **kwargs): global attempt_count attempt_count += 1 if attempt_count == 3: vios_w = kargs[0] self.assertEqual(4, len(vios_w.scsi_mappings)) return vios_w.entry else: tju.raiseRetryException() self.adpt.update_by_path.side_effect = validate_update # Run the code media_name = 'bldr1_dfe05349_kyleh_config.iso' vios, remel = scsi_mapper.remove_vopt_mapping( self.adpt, 'fake_vios_uuid', 2, media_name=media_name) # Make sure that our validation code above was invoked self.assertEqual(3, self.adpt.update_by_path.call_count) self.assertEqual(3, attempt_count) self.assertEqual(1, len(remel)) self.assertIsInstance(remel[0], pvm_stor.VOptMedia)