Merge "Fix lvm driver to be compatible with share manager"
This commit is contained in:
commit
0997dcf8d0
manila
@ -192,7 +192,7 @@ class LVMShareDriver(driver.ExecuteMixin, driver.ShareDriver):
|
||||
|
||||
self._stats = data
|
||||
|
||||
def create_share(self, context, share):
|
||||
def create_share(self, context, share, share_server=None):
|
||||
self._allocate_container(share)
|
||||
#create file system
|
||||
device_name = self._local_path(share)
|
||||
@ -203,7 +203,8 @@ class LVMShareDriver(driver.ExecuteMixin, driver.ShareDriver):
|
||||
#TODO(rushiagr): what is the provider_location? realy needed?
|
||||
return location
|
||||
|
||||
def create_share_from_snapshot(self, context, share, snapshot):
|
||||
def create_share_from_snapshot(self, context, share, snapshot,
|
||||
share_server=None):
|
||||
"""Is called to create share from snapshot."""
|
||||
self._allocate_container(share)
|
||||
device_name = self._local_path(snapshot)
|
||||
@ -216,7 +217,7 @@ class LVMShareDriver(driver.ExecuteMixin, driver.ShareDriver):
|
||||
#TODO(rushiagr): what is the provider_location? realy needed?
|
||||
return location
|
||||
|
||||
def delete_share(self, context, share):
|
||||
def delete_share(self, context, share, share_server=None):
|
||||
self._remove_export(context, share)
|
||||
self._delete_share(context, share)
|
||||
self._deallocate_container(share['name'])
|
||||
@ -239,7 +240,7 @@ class LVMShareDriver(driver.ExecuteMixin, driver.ShareDriver):
|
||||
except OSError:
|
||||
LOG.info('Unable to delete %s', mount_path)
|
||||
|
||||
def create_snapshot(self, context, snapshot):
|
||||
def create_snapshot(self, context, snapshot, share_server=None):
|
||||
"""Creates a snapshot."""
|
||||
orig_lv_name = "%s/%s" % (self.configuration.share_volume_group,
|
||||
snapshot['share_name'])
|
||||
@ -247,7 +248,7 @@ class LVMShareDriver(driver.ExecuteMixin, driver.ShareDriver):
|
||||
'--name', snapshot['name'],
|
||||
'--snapshot', orig_lv_name, run_as_root=True)
|
||||
|
||||
def ensure_share(self, ctx, share):
|
||||
def ensure_share(self, ctx, share, share_server=None):
|
||||
"""Ensure that storage are mounted and exported."""
|
||||
device_name = self._local_path(share)
|
||||
location = self._mount_device(share, device_name)
|
||||
@ -264,18 +265,18 @@ class LVMShareDriver(driver.ExecuteMixin, driver.ShareDriver):
|
||||
except exception.InvalidShare as exc:
|
||||
LOG.info(exc.message)
|
||||
|
||||
def delete_snapshot(self, context, snapshot):
|
||||
def delete_snapshot(self, context, snapshot, share_server=None):
|
||||
"""Deletes a snapshot."""
|
||||
self._deallocate_container(snapshot['name'])
|
||||
|
||||
def allow_access(self, ctx, share, access):
|
||||
def allow_access(self, ctx, share, access, share_server=None):
|
||||
"""Allow access to the share."""
|
||||
location = self._get_mount_path(share)
|
||||
self._get_helper(share).allow_access(location, share['name'],
|
||||
access['access_type'],
|
||||
access['access_to'])
|
||||
|
||||
def deny_access(self, ctx, share, access):
|
||||
def deny_access(self, ctx, share, access, share_server=None):
|
||||
"""Allow access to the share."""
|
||||
location = self._get_mount_path(share)
|
||||
self._get_helper(share).deny_access(location, share['name'],
|
||||
|
@ -101,6 +101,9 @@ class LVMShareDriverTestCase(test.TestCase):
|
||||
self.access = fake_access()
|
||||
self.snapshot = fake_snapshot()
|
||||
|
||||
# Used only to test compatibility with share manager
|
||||
self.share_server = "fake_share_server"
|
||||
|
||||
def tearDown(self):
|
||||
super(LVMShareDriverTestCase, self).tearDown()
|
||||
fake_utils.fake_execute_set_repliers([])
|
||||
@ -160,7 +163,8 @@ class LVMShareDriverTestCase(test.TestCase):
|
||||
def test_create_share(self):
|
||||
self._helper_nfs.create_export.return_value = 'fakelocation'
|
||||
self._driver._mount_device = mock.Mock()
|
||||
ret = self._driver.create_share(self._context, self.share)
|
||||
ret = self._driver.create_share(self._context, self.share,
|
||||
self.share_server)
|
||||
CONF.set_default('share_lvm_mirrors', 0)
|
||||
self._driver._mount_device.assert_called_with(
|
||||
self.share, '/dev/mapper/fakevg-fakename')
|
||||
@ -180,8 +184,9 @@ class LVMShareDriverTestCase(test.TestCase):
|
||||
mount_path = self._get_mount_path(self.share)
|
||||
|
||||
ret = self._driver.create_share_from_snapshot(self._context,
|
||||
self.share,
|
||||
self.snapshot)
|
||||
self.share,
|
||||
self.snapshot,
|
||||
self.share_server)
|
||||
|
||||
self._driver._mount_device.assert_called_with(self.share,
|
||||
mount_snapshot)
|
||||
@ -201,7 +206,8 @@ class LVMShareDriverTestCase(test.TestCase):
|
||||
CONF.set_default('share_lvm_mirrors', 2)
|
||||
self._helper_nfs.create_export.return_value = 'fakelocation'
|
||||
self._driver._mount_device = mock.Mock()
|
||||
ret = self._driver.create_share(self._context, share)
|
||||
ret = self._driver.create_share(self._context, share,
|
||||
self.share_server)
|
||||
self._driver._mount_device.assert_called_with(
|
||||
share, '/dev/mapper/fakevg-fakename')
|
||||
expected_exec = [
|
||||
@ -304,7 +310,8 @@ class LVMShareDriverTestCase(test.TestCase):
|
||||
self.assertEqual(fake_utils.fake_execute_get_log(), expected_exec)
|
||||
|
||||
def test_create_snapshot(self):
|
||||
self._driver.create_snapshot(self._context, self.snapshot)
|
||||
self._driver.create_snapshot(self._context, self.snapshot,
|
||||
self.share_server)
|
||||
expected_exec = [
|
||||
("lvcreate -L 1G --name fakesnapshotname --snapshot %s/fakename" %
|
||||
(CONF.share_volume_group,)),
|
||||
@ -317,7 +324,8 @@ class LVMShareDriverTestCase(test.TestCase):
|
||||
with mock.patch.object(self._driver,
|
||||
'_mount_device',
|
||||
mock.Mock(return_value=location)):
|
||||
self._driver.ensure_share(self._context, self.share)
|
||||
self._driver.ensure_share(self._context, self.share,
|
||||
self.share_server)
|
||||
self._driver._mount_device.assert_called_with(self.share,
|
||||
device_name)
|
||||
self._helper_nfs.create_export.assert_called_once_with(
|
||||
@ -330,13 +338,14 @@ class LVMShareDriverTestCase(test.TestCase):
|
||||
|
||||
def test_delete_snapshot(self):
|
||||
expected_exec = ['lvremove -f fakevg/fakesnapshotname']
|
||||
self._driver.delete_snapshot(self._context, self.snapshot)
|
||||
self._driver.delete_snapshot(self._context, self.snapshot,
|
||||
self.share_server)
|
||||
self.assertEqual(fake_utils.fake_execute_get_log(), expected_exec)
|
||||
|
||||
def test_delete_share_invalid_share(self):
|
||||
self._driver._get_helper = mock.Mock(
|
||||
side_effect=exception.InvalidShare(reason='fake'))
|
||||
self._driver.delete_share(self._context, self.share)
|
||||
self._driver.delete_share(self._context, self.share, self.share_server)
|
||||
|
||||
def test_allow_access(self):
|
||||
mount_path = self._get_mount_path(self.share)
|
||||
@ -344,7 +353,8 @@ class LVMShareDriverTestCase(test.TestCase):
|
||||
self.share['name'],
|
||||
self.access['access_type'],
|
||||
self.access['access_to'])
|
||||
self._driver.allow_access(self._context, self.share, self.access)
|
||||
self._driver.allow_access(self._context, self.share, self.access,
|
||||
self.share_server)
|
||||
|
||||
def test_deny_access(self):
|
||||
mount_path = self._get_mount_path(self.share)
|
||||
@ -352,7 +362,8 @@ class LVMShareDriverTestCase(test.TestCase):
|
||||
self.share['name'],
|
||||
self.access['access_type'],
|
||||
self.access['access_to'])
|
||||
self._driver.deny_access(self._context, self.share, self.access)
|
||||
self._driver.deny_access(self._context, self.share, self.access,
|
||||
self.share_server)
|
||||
|
||||
def test_mount_device(self):
|
||||
mount_path = self._get_mount_path(self.share)
|
||||
|
Loading…
x
Reference in New Issue
Block a user