[PATCH] Better naming for LVM volume groups and logical volumes (#461682)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Try to name volume groups as vg_HOSTNAME and logical volumes as
lv_MOUNTPOINT, if we can.  Swap partitions will be lv_swapNN where
NN is a unique number in the instance where more than one swap
partition in use.  The / partition will get the name lv_root.
---
 autopart.py |   26 ++++++++++++++++++++++----
 lvm.py      |   57 +++++++++++++++++++++++++++++++++++++--------------------
 2 files changed, 59 insertions(+), 24 deletions(-)

diff --git a/autopart.py b/autopart.py
index ff62f37..64237dd 100644
--- a/autopart.py
+++ b/autopart.py
@@ -1463,7 +1463,7 @@ def doAutoPartition(anaconda):
                     # FIXME: this is a hack so that autopartition'd vgs
                     # can have a unique name
                     if req.autoname == 1 and req.volumeGroupName == "lvm":
-                        n = lvm.createSuggestedVGName(partitions)
+                        n = lvm.createSuggestedVGName(partitions, anaconda.id.network)
                         req.volumeGroupName = n
 
             if (isinstance(req, partRequests.LogicalVolumeRequestSpec)):
@@ -1649,6 +1649,7 @@ def autoCreateLVMPartitionRequests(autoreq):
     requests.append(nr)
 
     volnum = 0
+
     for (mntpt, fstype, minsize, maxsize, grow, format, asvol) in autoreq:
         if fstype:
             ptype = fsset.fileSystemTypeGet(fstype)
@@ -1663,17 +1664,34 @@ def autoCreateLVMPartitionRequests(autoreq):
                                                     grow = grow,
                                                     format = format)
         else:
+            # try to incorporate the mount point in to the logical volume name
+            if mntpt is not None and mntpt != '':
+                if mntpt == '/':
+                    lvtemplate = 'lv_root'
+                else:
+                    tmp = string.strip(mntpt)
+                    tmp = tmp.replace('/', '_')
+
+                    while tmp.startswith('_'):
+                        tmp = tmp[1:]
+
+                    lvtemplate = "lv_%s" % (tmp,)
+            else:
+                if ptype == fsset.fileSystemTypeGet("swap"):
+                    lvtemplate = "lv_swap"
+                else:
+                    lvtemplate = "LogVol%02d" % (volnum,)
+                    volnum += 1
+
             newrequest = partRequests.LogicalVolumeRequestSpec(ptype,
                                                                mountpoint = mntpt,
                                                                size = minsize,
                                                                maxSizeMB = maxsize,
                                                                grow = grow,
                                                                format = format,
-                                                               lvname = "LogVol%02d" %(volnum,),
+                                                               lvname = "%s" % (lvtemplate,),
                                                                volgroup = "lvm")
-            volnum += 1
 
-        
         requests.append(newrequest)
 
     return requests
diff --git a/lvm.py b/lvm.py
index 00f7c02..0e07a1f 100644
--- a/lvm.py
+++ b/lvm.py
@@ -528,45 +528,62 @@ def getMaxLVSize(pe):
         else:
             return (16*1024*1024) #Max is 16TiB
 
-def createSuggestedVGName(partitions):
+def createSuggestedVGName(partitions, network):
     """Given list of partition requests, come up with a reasonable VG name
 
     partitions - list of requests
     """
-    i = 0
-    while 1:
-	tmpname = "VolGroup%02d" % (i,)
-	if not partitions.isVolumeGroupNameInUse(tmpname):
-	    break
 
-	i = i + 1
-	if i>99:
-	    tmpname = ""
+    # try to create a volume group name incorporating the hostname
+    hn = network.hostname
+    if hn is not None and hn != '':
+        if hn == 'localhost' or hn == 'localhost.localdomain':
+            vgtemplate = "VolGroup"
+        elif hn.find('.') != -1:
+            vgtemplate = "vg_%s" % (hn.split('.')[0].lower(),)
+        else:
+            vgtemplate = "vg_%s" % (hn.lower(),)
+    else:
+        vgtemplate = "VolGroup"
+
+    if not partitions.isVolumeGroupNameInUse(vgtemplate):
+        return vgtemplate
+    else:
+        i = 0
+        while 1:
+            tmpname = "%s%02d" % (vgtemplate, i,)
+            if not partitions.isVolumeGroupNameInUse(tmpname):
+                break
+
+            i += 1
+            if i > 99:
+                tmpname = ""
+
+        return tmpname
 
-    return tmpname
-	    
 def createSuggestedLVName(logreqs):
     """Given list of LV requests, come up with a reasonable LV name
 
     partitions - list of LV requests for this VG
     """
+
     i = 0
 
     lnames = []
     for lv in logreqs:
-	lnames.append(lv.logicalVolumeName)
-    
+        lnames.append(lv.logicalVolumeName)
+
     while 1:
-	tmpname = "LogVol%02d" % (i,)
-	if (logreqs is None) or (tmpname not in lnames):
-	    break
+        tmpname = "LogVol%02d" % (i,)
+        if (logreqs is None) or (tmpname not in lnames):
+            break
 
-	i = i + 1
-	if i>99:
-	    tmpname = ""
+        i += 1
+        if i > 99:
+            tmpname = ""
 
     return tmpname
-	    
+
 def getVGUsedSpace(vgreq, requests, diskset):
     vgused = 0
     for request in requests.requests:
-- 
1.6.0.3

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list

[Index of Archives]     [Kickstart]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]
  Powered by Linux