示例#1
0
    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()
示例#3
0
    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()
示例#4
0
    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()
示例#5
0
    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()
示例#6
0
    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
示例#7
0
    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()
示例#8
0
    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()
示例#9
0
    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()
示例#10
0
    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()