Fix iSCSI disconnect

We have some unlinking done in os-brick for iSCSI connections that only
happen in some cases and uses a privsep python method to unlink, so when
we call it we get and "ImportError: No module named rootwrap" error.

This patch fixes this by calling as sudo the "unlink" command.

(cherry picked from commit 65e675c129c4baa12dc78769fbb9d855a0a85b78)
This commit is contained in:
Gorka Eguileor
2018-05-14 15:26:44 +02:00
parent 7dde24e6cc
commit db5ed94fa3
2 changed files with 16 additions and 0 deletions

View File

@@ -17,6 +17,7 @@ History
- Accept id field set to None on resource creation.
- Disabling of sudo command wasn't working.
- Fix volume cloning on XtremIO
- Fix iSCSI detach issue related to privsep
0.1.0 (2017-11-03)
------------------

View File

@@ -226,6 +226,19 @@ class Backend(object):
volume_cmd.logging.setup(volume_cmd.CONF, 'cinder')
volume_cmd.python_logging.captureWarnings(True)
@staticmethod
def unlink_root(*links, **kwargs):
no_errors = kwargs.get('no_errors', False)
raise_at_end = kwargs.get('raise_at_end', False)
exc = brick_exception.ExceptionChainer()
catch_exception = no_errors or raise_at_end
for link in links:
with exc.context(catch_exception, 'Unlink failed for %s', link):
putils.execute('unlink', link, run_as_root=True,
root_helper=Backend.root_helper)
if not no_errors and raise_at_end and exc:
raise exc
@classmethod
def _set_priv_helper(cls, root_helper):
utils.get_root_helper = lambda: root_helper
@@ -254,6 +267,8 @@ class Backend(object):
utils.connector.get_connector_properties = my_bgcp
utils.connector.InitiatorConnector.factory = staticmethod(my_bgc)
if hasattr(rootwrap, 'unlink_root'):
rootwrap.unlink_root = cls.unlink_root
@classmethod
def _set_coordinator(cls, file_locks_path):