Browse Source

Merge "RBD: Fix error on disconnect"

tags/2.0.0^0
Zuul 2 weeks ago
committed by Gerrit Code Review
parent
commit
d810da70c8
3 changed files with 27 additions and 2 deletions
  1. +1
    -2
      cinderlib/nos_brick.py
  2. +19
    -0
      cinderlib/tests/unit/test_nos_brick.py
  3. +7
    -0
      releasenotes/notes/rbd-missing-file-or-directory-c835abac22f6b32e.yaml

+ 1
- 2
cinderlib/nos_brick.py View File

@@ -253,8 +253,7 @@ def unlink_root(*links, **kwargs):
else:
with exc.context(catch_exception, error_msg, links):
# Ignore file doesn't exist errors
putils.execute('rm', *links, run_as_root=True,
check_exit_code=(0, errno.ENOENT),
putils.execute('rm', '-f', *links, run_as_root=True,
root_helper=ROOT_HELPER)

if not no_errors and raise_at_end and exc:


+ 19
- 0
cinderlib/tests/unit/test_nos_brick.py View File

@@ -476,3 +476,22 @@ class TestRBDConnector(base.BaseTest):
exec_mock.assert_called_once_with(
'dd', 'if=/tmp/path', 'of=/dev/null', 'bs=4096', 'count=1',
root_helper=self.connector._root_helper, run_as_root=True)

@mock.patch.object(nos_brick.os, 'unlink')
@mock.patch.object(nos_brick.os, 'getuid', return_value=0)
def test_unlink_root_being_root(self, mock_getuid, mock_unlink):
mock_unlink.side_effect = [None, OSError(errno.ENOENT, '')]
nos_brick.unlink_root(mock.sentinel.file1, mock.sentinel.file2)
mock_getuid.assert_called_once()
mock_unlink.assert_has_calls([mock.call(mock.sentinel.file1),
mock.call(mock.sentinel.file2)])

@mock.patch.object(nos_brick.putils, 'execute')
@mock.patch.object(nos_brick.os, 'getuid', return_value=1000)
def test_unlink_root_non_root(self, mock_getuid, mock_exec):
nos_brick.unlink_root(mock.sentinel.file1, mock.sentinel.file2)
mock_getuid.assert_called_once()
mock_exec.assert_called_once_with('rm', '-f', mock.sentinel.file1,
mock.sentinel.file2,
run_as_root=True,
root_helper=nos_brick.ROOT_HELPER)

+ 7
- 0
releasenotes/notes/rbd-missing-file-or-directory-c835abac22f6b32e.yaml View File

@@ -0,0 +1,7 @@
---
fixes:
- |
Fix issue where disconnecting an RBD volume inside a container when the
host had the ceph-common package installed could lead to failure due to a
"No such file or directory" error.
(Bug #1885293).

Loading…
Cancel
Save