def test_do_setup(self): mock = mox.Mox() mock.StubOutWithMock(driver, 'xenapi_lib') mock.StubOutWithMock(driver, 'xenapi_opts') configuration = mox.MockObject(conf.Configuration) configuration.xenapi_connection_url = 'url' configuration.xenapi_connection_username = '******' configuration.xenapi_connection_password = '******' configuration.append_config_values(mox.IgnoreArg()) session_factory = object() nfsops = object() driver.xenapi_lib.SessionFactory('url', 'user', 'pass').AndReturn(session_factory) driver.xenapi_lib.NFSBasedVolumeOperations(session_factory).AndReturn( nfsops) drv = driver.XenAPINFSDriver(configuration=configuration) mock.ReplayAll() drv.do_setup('context') mock.VerifyAll() self.assertEquals(nfsops, drv.nfs_ops)
def test_use_image_utils_to_pipe_bytes_to_volume(self): mock, drv = self._setup_mock_driver('server', 'serverpath', '/var/run/sr-mount') volume = dict(provider_location='sr-uuid/vdi-uuid', size=1) context = MockContext('token') mock.StubOutWithMock(driver.image_utils, 'fetch_to_raw') drv.nfs_ops.volume_attached_here('server', 'serverpath', 'sr-uuid', 'vdi-uuid', False).AndReturn( simple_context('device')) driver.image_utils.fetch_to_raw(context, 'image_service', 'image_id', 'device', mox.IgnoreArg(), size=1) mock.ReplayAll() drv._use_image_utils_to_pipe_bytes_to_volume(context, volume, "image_service", "image_id") mock.VerifyAll()
def test_copy_image_to_volume_non_xenserver_case(self): mock, drv = self._setup_mock_driver('server', 'serverpath', '/var/run/sr-mount') mock.StubOutWithMock(drv, '_use_image_utils_to_pipe_bytes_to_volume') mock.StubOutWithMock(driver, 'is_xenserver_image') context = MockContext('token') driver.is_xenserver_image(context, 'image_service', 'image_id').AndReturn(False) drv._use_image_utils_to_pipe_bytes_to_volume( context, 'volume', 'image_service', 'image_id').AndReturn(True) mock.ReplayAll() drv.copy_image_to_volume(context, "volume", "image_service", "image_id") mock.VerifyAll()
def test_copy_image_to_volume_xenserver_case(self): mock, drv = self._setup_mock_driver('server', 'serverpath', '/var/run/sr-mount') mock.StubOutWithMock(drv, '_use_glance_plugin_to_copy_image_to_volume') mock.StubOutWithMock(driver, 'is_xenserver_image') context = MockContext('token') driver.is_xenserver_image(context, 'image_service', 'image_id').AndReturn(True) drv._use_glance_plugin_to_copy_image_to_volume( context, 'volume', 'image_service', 'image_id').AndReturn('result') mock.ReplayAll() result = drv.copy_image_to_volume(context, "volume", "image_service", "image_id") self.assertEquals('result', result) mock.VerifyAll()
def test_copy_volume_to_image_non_xenserver_case(self): mock, drv = self._setup_mock_driver('server', 'serverpath', '/var/run/sr-mount') mock.StubOutWithMock(drv, '_use_image_utils_to_upload_volume') mock.StubOutWithMock(driver, 'is_xenserver_format') context = MockContext('token') driver.is_xenserver_format('image_meta').AndReturn(False) drv._use_image_utils_to_upload_volume(context, 'volume', 'image_service', 'image_meta').AndReturn('result') mock.ReplayAll() result = drv.copy_volume_to_image(context, "volume", "image_service", "image_meta") self.assertEquals('result', result) mock.VerifyAll()
def _setup_mock_driver(self, server, serverpath, sr_base_path="_srbp"): mock = mox.Mox() drv = get_configured_driver(server, serverpath) ops = mock.CreateMock(lib.NFSBasedVolumeOperations) db = mock.CreateMock(db_api) drv.nfs_ops = ops drv.db = db mock.StubOutWithMock(driver, 'FLAGS') driver.FLAGS.xenapi_nfs_server = server driver.FLAGS.xenapi_nfs_serverpath = serverpath driver.FLAGS.xenapi_sr_base_path = sr_base_path return mock, drv
def test_use_glance_plugin_to_upload_volume(self): mock, drv = self._setup_mock_driver( 'server', 'serverpath', '/var/run/sr-mount') volume = dict(provider_location='sr-uuid/vdi-uuid') context = MockContext('token') mock.StubOutWithMock(driver.glance, 'get_api_servers') driver.glance.get_api_servers().AndReturn((x for x in ['glancesrv'])) drv.nfs_ops.use_glance_plugin_to_upload_volume( 'server', 'serverpath', 'sr-uuid', 'vdi-uuid', 'glancesrv', 'image-id', 'token', '/var/run/sr-mount') mock.ReplayAll() drv._use_glance_plugin_to_upload_volume( context, volume, "image_service", {"id": "image-id"}) mock.VerifyAll()
def test_use_image_utils_to_upload_volume(self): mock, drv = self._setup_mock_driver('server', 'serverpath', '/var/run/sr-mount') volume = dict(provider_location='sr-uuid/vdi-uuid') context = MockContext('token') mock.StubOutWithMock(driver.image_utils, 'upload_volume') drv.nfs_ops.volume_attached_here('server', 'serverpath', 'sr-uuid', 'vdi-uuid', True).AndReturn( simple_context('device')) driver.image_utils.upload_volume(context, 'image_service', 'image_meta', 'device') mock.ReplayAll() drv._use_image_utils_to_upload_volume(context, volume, "image_service", "image_meta") mock.VerifyAll()
def test_use_glance_plugin_to_copy_image_to_volume_fail(self): mock, drv = self._setup_mock_driver('server', 'serverpath', '/var/run/sr-mount') volume = dict(provider_location='sr-uuid/vdi-uuid', size=2) mock.StubOutWithMock(driver.glance, 'get_api_servers') driver.glance.get_api_servers().AndReturn((x for x in ['glancesrv'])) drv.nfs_ops.use_glance_plugin_to_overwrite_volume( 'server', 'serverpath', 'sr-uuid', 'vdi-uuid', 'glancesrv', 'image_id', 'token', '/var/run/sr-mount').AndReturn(False) mock.ReplayAll() self.assertRaises( exception.ImageCopyFailure, lambda: drv._use_glance_plugin_to_copy_image_to_volume( MockContext('token'), volume, "ignore", "image_id")) mock.VerifyAll()
def test_use_glance_plugin_to_copy_image_to_volume_success(self): mock, drv = self._setup_mock_driver('server', 'serverpath', '/var/run/sr-mount') volume = dict(provider_location='sr-uuid/vdi-uuid', size=2) mock.StubOutWithMock(driver.glance, 'get_api_servers') driver.glance.get_api_servers().AndReturn((x for x in ['glancesrv'])) drv.nfs_ops.use_glance_plugin_to_overwrite_volume( 'server', 'serverpath', 'sr-uuid', 'vdi-uuid', 'glancesrv', 'image_id', 'token', '/var/run/sr-mount').AndReturn(True) drv.nfs_ops.resize_volume('server', 'serverpath', 'sr-uuid', 'vdi-uuid', 2) mock.ReplayAll() drv._use_glance_plugin_to_copy_image_to_volume(MockContext('token'), volume, "ignore", "image_id") mock.VerifyAll()