Switch gnt-debug submit-job to JobExecutor
[ganeti-local] / tools / lvmstrap
index 153de88..fdbf1fb 100755 (executable)
@@ -47,8 +47,9 @@ import time
 from ganeti.utils import RunCmd
 from ganeti import constants
 
-USAGE = ("\tlvmstrap.py diskinfo\n"
-         "\tlvmstrap.py [--vgname=NAME] { --alldisks | --disks DISKLIST }"
+USAGE = ("\tlvmstrap diskinfo\n"
+         "\tlvmstrap [--vgname=NAME] [--allow-removable]"
+         " { --alldisks | --disks DISKLIST }"
          " create")
 
 verbose_flag = False
@@ -110,6 +111,7 @@ class ParameterError(Error):
   """
   pass
 
+
 def Usage():
   """Shows program usage information and exits the program."""
 
@@ -142,6 +144,9 @@ def ParseOptions():
   parser.add_option("-v", "--verbose",
                     action="store_true", dest="verbose", default=False,
                     help="print command execution messages to stdout")
+  parser.add_option("-r", "--allow-removable",
+                    action="store_true", dest="removable_ok", default=False,
+                    help="allow and use removable devices too")
   parser.add_option("-g", "--vg-name", type="string",
                     dest="vgname", default="xenvg", metavar="NAME",
                     help="the volume group to be created [default: xenvg]")
@@ -262,7 +267,7 @@ def CheckSysDev(name, devnum):
    devnum: the device number, e.g. 0x803 (2051 in decimal) for sda3
 
   Returns:
-    None; failure of the check is signalled by raising a
+    None; failure of the check is signaled by raising a
       SysconfigError exception
   """
 
@@ -352,7 +357,7 @@ def ReadPV(name):
   return vgname
 
 
-def GetDiskList():
+def GetDiskList(opts):
   """Computes the block device list for this system.
 
   This function examines the /sys/block tree and using information
@@ -385,7 +390,7 @@ def GetDiskList():
     removable = int(f.read().strip())
     f.close()
 
-    if removable:
+    if removable and not opts.removable_ok:
       continue
 
     dev = ReadDev("/sys/block/%s" % name)
@@ -444,7 +449,7 @@ def GetMountInfo():
 
 
 def DevInfo(name, dev, mountinfo):
-  """Computes miscellaneous informations about a block device.
+  """Computes miscellaneous information about a block device.
 
   Args:
     name: the device name, e.g. sda
@@ -470,16 +475,16 @@ def DevInfo(name, dev, mountinfo):
   return mpath, whatvg, fileinfo
 
 
-def ShowDiskInfo():
+def ShowDiskInfo(opts):
   """Shows a nicely formatted block device list for this system.
 
-  This function shows the user a table with the informations gathered
+  This function shows the user a table with the information gathered
   by the other functions defined, in order to help the user make a
   choice about which disks should be allocated to our volume group.
 
   """
   mounts = GetMountInfo()
-  dlist = GetDiskList()
+  dlist = GetDiskList(opts)
 
   print "------- Disk information -------"
   print ("%5s %7s %4s %5s %-10s %s" %
@@ -649,7 +654,7 @@ def ValidateDiskList(options):
     a list of disk names, e.g. ['sda', 'sdb']
   """
 
-  sysdisks = GetDiskList()
+  sysdisks = GetDiskList(options)
   if not sysdisks:
     raise PrereqError("no disks found (I looked for"
                       " non-removable block devices).")
@@ -688,7 +693,7 @@ def BootStrap():
   vgname = options.vgname
   command = args.pop(0)
   if command == "diskinfo":
-    ShowDiskInfo()
+    ShowDiskInfo(options)
     return
   if command != "create":
     Usage()