Fix logger issue in move_files_to_their_places function

A typo in manager.py was fixed. This typo doesn't break
anything when old enough oslo.log module is used, but it
breaks deployment process when newer OS is used to build
bootstrap image.

A minor issue with path build process was also fixed.

Change-Id: I97616ef0bfbe0f7ffc6e625e4bf7c7ffde1a1919
Closes-Bug: #1597697
This commit is contained in:
Alexey Stupnikov 2016-06-30 20:58:27 +03:00
parent b70ff4e232
commit e6a31c8456
5 changed files with 31 additions and 15 deletions

View File

@ -71,6 +71,10 @@ class LVNotFoundError(BaseError):
pass pass
class WrongFSMount(BaseError):
pass
class MDAlreadyExistsError(BaseError): class MDAlreadyExistsError(BaseError):
pass pass

View File

@ -507,16 +507,19 @@ class Manager(object):
mount_map = self.mount_target_flat() mount_map = self.mount_target_flat()
for fs_mount in sorted(mount_map): for fs_mount in sorted(mount_map):
head, tail = os.path.split(fs_mount) head, tail = os.path.split(fs_mount)
LOG.debug('Trying to move files for %s file system', fs_mount)
while head != fs_mount: while head != fs_mount:
LOG.debug('Trying to move files for %s file system', fs_mount) LOG.debug('Checking whether %s is a separate mount point or '
'not', head)
if head in mount_map: if head in mount_map:
LOG.debug('File system %s is mounted into %s', LOG.debug('File system %s is mounted into %s',
head, mount_map[head]) head, mount_map[head])
check_path = os.path.join(mount_map[head], tail) check_path = os.path.join(mount_map[head], tail)
LOG.debug('Trying to check if path %s exists', check_path) LOG.debug('Trying to check if path %s exists', check_path)
if os.path.exists(check_path): if os.path.exists(check_path):
LOG.debug('Path %s exists. Trying to sync all files ' LOG.debug('Path exists. Trying to sync all files '
'from there to %s', mount_map[fs_mount]) 'from %s to %s', check_path,
mount_map[fs_mount])
src_path = check_path + '/' src_path = check_path + '/'
utils.execute('rsync', '-avH', src_path, utils.execute('rsync', '-avH', src_path,
mount_map[fs_mount]) mount_map[fs_mount])
@ -548,6 +551,7 @@ class Manager(object):
fs_mount = fs.mount.encode('ascii', 'ignore') fs_mount = fs.mount.encode('ascii', 'ignore')
except NameError: except NameError:
fs_mount = fs.mount fs_mount = fs.mount
fs_mount = os.path.normpath(fs_mount)
mount_map[fs_mount] = fu.mount_fs_temp(fs.type, str(fs.device)) mount_map[fs_mount] = fu.mount_fs_temp(fs.type, str(fs.device))
LOG.debug('Flat mount map: %s', mount_map) LOG.debug('Flat mount map: %s', mount_map)
return mount_map return mount_map

View File

@ -60,6 +60,9 @@ class PartitionScheme(object):
def add_fs(self, **kwargs): def add_fs(self, **kwargs):
fs = FileSystem(**kwargs) fs = FileSystem(**kwargs)
if not os.path.isabs(fs.mount) and fs.mount != 'swap':
raise errors.WrongFSMount(
'Incorrect mount point %s' % fs.mount)
self.fss.append(fs) self.fss.append(fs)
return fs return fs

View File

@ -912,7 +912,7 @@ none /run/shm tmpfs rw,nosuid,nodev 0 0"""
self.mgr.driver.partition_scheme.add_fs( self.mgr.driver.partition_scheme.add_fs(
device='/dev/fake1', mount='/', fs_type='ext4') device='/dev/fake1', mount='/', fs_type='ext4')
self.mgr.driver.partition_scheme.add_fs( self.mgr.driver.partition_scheme.add_fs(
device='/dev/fake2', mount='/var/lib', fs_type='ext4') device='/dev/fake2', mount='/var/lib/', fs_type='ext4')
self.assertEqual({'/': '/tmp/dir1', '/var/lib': '/tmp/dir2'}, self.assertEqual({'/': '/tmp/dir1', '/var/lib': '/tmp/dir2'},
self.mgr.mount_target_flat()) self.mgr.mount_target_flat())
self.assertEqual([mock.call('ext4', '/dev/fake1'), self.assertEqual([mock.call('ext4', '/dev/fake1'),

View File

@ -123,13 +123,18 @@ class TestPartitionScheme(unittest2.TestCase):
self.assertEqual(expected_fs, actual_fs) self.assertEqual(expected_fs, actual_fs)
def test_fs_by_mount(self): def test_fs_by_mount(self):
expected_fs = objects.FileSystem('d', mount='mount') expected_fs = objects.FileSystem('d', mount='/mount')
self.p_scheme.fss.append(expected_fs) self.p_scheme.fss.append(expected_fs)
self.p_scheme.fss.append(objects.FileSystem('w_d', self.p_scheme.fss.append(objects.FileSystem('w_d',
mount='wrong_mount')) mount='/wrong_mount'))
actual_fs = self.p_scheme.fs_by_mount('mount') actual_fs = self.p_scheme.fs_by_mount('/mount')
self.assertEqual(expected_fs, actual_fs) self.assertEqual(expected_fs, actual_fs)
def test_fs_malformed_mount(self):
self.assertRaises(errors.WrongFSMount, self.p_scheme.add_fs,
device='device', mount='fake_mount',
fs_type='xfs', fs_label='fake_label')
def test_pv_by_name(self): def test_pv_by_name(self):
expected_pv = objects.PhysicalVolume('pv') expected_pv = objects.PhysicalVolume('pv')
self.p_scheme.pvs.append(expected_pv) self.p_scheme.pvs.append(expected_pv)
@ -184,21 +189,21 @@ class TestPartitionScheme(unittest2.TestCase):
self.assertEqual(0, len(self.p_scheme.mds)) self.assertEqual(0, len(self.p_scheme.mds))
self.assertEqual(0, len(self.p_scheme.fss)) self.assertEqual(0, len(self.p_scheme.fss))
expected_md = objects.MultipleDevice('name', 'level') expected_md = objects.MultipleDevice('name', 'level')
expected_fs = objects.FileSystem('name', mount='mount') expected_fs = objects.FileSystem('name', mount='/mount')
self.p_scheme.mds.append(expected_md) self.p_scheme.mds.append(expected_md)
self.p_scheme.fss.append(expected_fs) self.p_scheme.fss.append(expected_fs)
self.p_scheme.fss.append(objects.FileSystem('wrong_name', self.p_scheme.fss.append(objects.FileSystem('wrong_name',
mount='wrong_mount')) mount='/wrong_mount'))
self.assertEqual(expected_md, self.p_scheme.md_by_mount('mount')) self.assertEqual(expected_md, self.p_scheme.md_by_mount('/mount'))
def test_md_attach_by_mount_md_exists(self): def test_md_attach_by_mount_md_exists(self):
self.assertEqual(0, len(self.p_scheme.mds)) self.assertEqual(0, len(self.p_scheme.mds))
self.assertEqual(0, len(self.p_scheme.fss)) self.assertEqual(0, len(self.p_scheme.fss))
expected_md = objects.MultipleDevice('name', 'level') expected_md = objects.MultipleDevice('name', 'level')
expected_fs = objects.FileSystem('name', mount='mount') expected_fs = objects.FileSystem('name', mount='/mount')
self.p_scheme.mds.append(expected_md) self.p_scheme.mds.append(expected_md)
self.p_scheme.fss.append(expected_fs) self.p_scheme.fss.append(expected_fs)
actual_md = self.p_scheme.md_attach_by_mount('device', 'mount') actual_md = self.p_scheme.md_attach_by_mount('device', '/mount')
self.assertIn('device', actual_md.devices) self.assertIn('device', actual_md.devices)
self.assertEqual(expected_md, actual_md) self.assertEqual(expected_md, actual_md)
@ -206,12 +211,12 @@ class TestPartitionScheme(unittest2.TestCase):
self.assertEqual(0, len(self.p_scheme.mds)) self.assertEqual(0, len(self.p_scheme.mds))
self.assertEqual(0, len(self.p_scheme.fss)) self.assertEqual(0, len(self.p_scheme.fss))
actual_md = self.p_scheme.md_attach_by_mount( actual_md = self.p_scheme.md_attach_by_mount(
'device', 'mount', fs_type='fs_type', fs_options='-F', 'device', '/mount', fs_type='fs_type', fs_options='-F',
fs_label='fs_label', name='name', level='level') fs_label='fs_label', name='name', level='level')
self.assertIn('device', actual_md.devices) self.assertIn('device', actual_md.devices)
self.assertEqual(1, len(self.p_scheme.fss)) self.assertEqual(1, len(self.p_scheme.fss))
self.assertEqual('name', self.p_scheme.fss[0].device) self.assertEqual('name', self.p_scheme.fss[0].device)
self.assertEqual('mount', self.p_scheme.fss[0].mount) self.assertEqual('/mount', self.p_scheme.fss[0].mount)
self.assertEqual('fs_type', self.p_scheme.fss[0].type) self.assertEqual('fs_type', self.p_scheme.fss[0].type)
self.assertEqual('fs_label', self.p_scheme.fss[0].label) self.assertEqual('fs_label', self.p_scheme.fss[0].label)
self.assertEqual('-F', self.p_scheme.fss[0].options) self.assertEqual('-F', self.p_scheme.fss[0].options)
@ -229,7 +234,7 @@ class TestPartitionScheme(unittest2.TestCase):
self.p_scheme.add_lv(name='fake_lv', vgname=vg.name, size=1) self.p_scheme.add_lv(name='fake_lv', vgname=vg.name, size=1)
lv = self.p_scheme.lvs[0] lv = self.p_scheme.lvs[0]
self.p_scheme.add_fs(device=lv.device_name, mount='fake_mount', self.p_scheme.add_fs(device=lv.device_name, mount='/fake/mount',
fs_type='xfs', fs_label='fake_label') fs_type='xfs', fs_label='fake_label')
fs = self.p_scheme.fss[0] fs = self.p_scheme.fss[0]