diff --git a/lib/backend.py b/lib/backend.py index 027f38617b383be00804d341909b71f7ecb13e2e..b6918c87fbb2e475fc272613b9af4ad592e012c7 100644 --- a/lib/backend.py +++ b/lib/backend.py @@ -1217,9 +1217,16 @@ def RunRenameInstance(instance, old_name, debug): " log file:\n%s", result.fail_reason, "\n".join(lines), log=False) -def _GetBlockDevSymlinkPath(instance_name, idx): - return utils.PathJoin(pathutils.DISK_LINKS_DIR, "%s%s%d" % - (instance_name, constants.DISK_SEPARATOR, idx)) +def _GetBlockDevSymlinkPath(instance_name, idx, _dir=None): + """Returns symlink path for block device. + + """ + if _dir is None: + _dir = pathutils.DISK_LINKS_DIR + + return utils.PathJoin(_dir, + ("%s%s%s" % + (instance_name, constants.DISK_SEPARATOR, idx))) def _SymlinkBlockDev(instance_name, device_path, idx): diff --git a/test/py/ganeti.backend_unittest.py b/test/py/ganeti.backend_unittest.py index 4a852425b0d052277a53baa998dbc0bcd8feed9d..74ae4e74846320a31c648a30dca6c6971a241bdd 100755 --- a/test/py/ganeti.backend_unittest.py +++ b/test/py/ganeti.backend_unittest.py @@ -517,5 +517,23 @@ class TestSetWatcherPause(unittest.TestCase): self.assertEqual(os.stat(self.filename).st_mode & 0777, 0644) +class TestGetBlockDevSymlinkPath(unittest.TestCase): + def setUp(self): + self.tmpdir = tempfile.mkdtemp() + + def tearDown(self): + shutil.rmtree(self.tmpdir) + + def _Test(self, name, idx): + self.assertEqual(backend._GetBlockDevSymlinkPath(name, idx, + _dir=self.tmpdir), + ("%s/%s%s%s" % (self.tmpdir, name, + constants.DISK_SEPARATOR, idx))) + + def test(self): + for idx in range(100): + self._Test("inst1.example.com", idx) + + if __name__ == "__main__": testutils.GanetiTestProgram()