This completes the code re-factoring to make map's with tables with more
then one row (target in dm speak) work.
---
__init__.py | 2 +-
device.py | 16 ++++++++--------
maps.py | 7 ++++---
3 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/__init__.py b/__init__.py
index 03a4802..9911940 100644
--- a/__init__.py
+++ b/__init__.py
@@ -261,7 +261,7 @@ def getDmTarget(uuid = None, major = None, minor = None,
name = None):
"""
map = getMap(uuid=uuid, major=major, minor=minor, name=name)
try:
- target = map.table.type
+ target = map.table[0].type
except AttributeError:
target = None
return target
diff --git a/device.py b/device.py
index aae1204..8a6d0d9 100644
--- a/device.py
+++ b/device.py
@@ -62,9 +62,10 @@ def map_dev(path):
return path
# Helper function for get_map
-# The tables will be considered the same if, everything else being the
-# same, they contain the same sets of devices.
-def compare_tables(table1, table2):
+# The tables will be considered the same if for every row, with everythingelse
+# being the same, they contain the same sets of devices.
+def compare_tables(t1, t2):
+ for table1, table2 in zip(t1, t2):
table1 = str(table1).strip().split(' ')
table2 = str(table2).strip().split(' ')
table1sets = []
@@ -109,7 +110,7 @@ def compare_tables(table1, table2):
if table1sets[i] != table2sets[i]:
return False
- return True
+ return True
class BlockDev:
def get_major(self):
@@ -453,8 +454,8 @@ class MultiPath:
table = apply(_dm.table, tableParts, {})
del _dm
- self._MultiPath__table = table
- return table
+ self._MultiPath__table = [ table ]
+ return self._MultiPath__table
table = property(get_table, None, None, "block.dm.table")
def get_map(self):
@@ -466,8 +467,7 @@ class MultiPath:
import dm as _dm
for map in _dm.maps():
- # XXX wtf? why's it have a space at the end sometimes?
- if str(map.table).strip() == str(table).strip():
+ if compare_tables(map.table, table):
if self.name != map.name:
self.name = nameCache.rename(self.name, map.name)
diff --git a/maps.py b/maps.py
index e6fff76..4090422 100644
--- a/maps.py
+++ b/maps.py
@@ -136,7 +136,7 @@ class DeviceMap:
raise RuntimeError, "type cannot be created"
f = getattr(self, ff)
import dm as _dm
- ret = _dm.table(self.start, self.size, self.type, f())
+ ret = [ _dm.table(self.start, self.size, self.type, f()) ]
del _dm
return ret
table = property(get_table, None, None, "the table for this DeviceMap")
@@ -172,9 +172,9 @@ class DeviceMap:
def create(self, name=None):
import dm as _dm
+ import device as _device
for map in _dm.maps():
- # XXX wtf? why's it have a space at the end sometimes?
- if str(map.table).strip() == str(self.table).strip():
+ if _device.compare_tables(map.table, self.table):
self.map = map
self.name = map.name
break
@@ -185,6 +185,7 @@ class DeviceMap:
raise ValueError, "DeviceMap name is not set"
self.map = _dm.map(name = self.name, table = self.table)
del _dm
+ del _device
class LinearDeviceMap(DeviceMap):
"""map for dm-linear"""
--
1.6.1.3
_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list