summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryves <steve.harrison@gmx.net>2011-12-13 22:44:17 +0100
committeryves <steve.harrison@gmx.net>2011-12-13 22:44:17 +0100
commitd5eb42d1191d344ada0ed2ee082b504b83e5c692 (patch)
treef92fdd8ad1c982fbcf2d86b00569bf7cd4016831
parentcfc99fee423890d234cda57aa48ebb34ce66ee0e (diff)
downloadiscsi-helper-d5eb42d1191d344ada0ed2ee082b504b83e5c692.tar.gz
iscsi-helper-d5eb42d1191d344ada0ed2ee082b504b83e5c692.tar.bz2
iscsi-helper-d5eb42d1191d344ada0ed2ee082b504b83e5c692.zip
first draft of a script, that does massic argument checking
-rwxr-xr-xcreateAndExportDisk.py90
1 files changed, 90 insertions, 0 deletions
diff --git a/createAndExportDisk.py b/createAndExportDisk.py
new file mode 100755
index 0000000..52638ea
--- /dev/null
+++ b/createAndExportDisk.py
@@ -0,0 +1,90 @@
+#!/usr/bin/python3
+#coding: UTF-8
+import optparse
+import sys
+import re
+
+def logInfo(msg):
+ print("\033[1;32mINFO\033[0m " + str(msg))
+
+def logErr(msg):
+ print("\033[1;31mERROR\033[0m " + str(msg))
+
+# vars
+volumeGroupName = 'scsiRaid'
+defaultDiskSize = '3G'
+
+diskSize = ''
+diskSizeUnit='g'
+vmName = ''
+
+# configure known options
+parser = optparse.OptionParser()
+parser.add_option("-s", "--size", dest="size", default=defaultDiskSize,
+ help="SIZE of vm root disk", metavar="SIZE")
+parser.add_option("-n", "--name", dest="name",
+ help="name of the vm to create NAME", metavar="NAME")
+parser.add_option("-v", "--verbose", dest="verbose",
+ action="store_true", default=False,
+ help="should I do output")
+(options, args) = parser.parse_args()
+
+def execute(command):
+ logInfo('Would execute: ' + str(command))
+
+def parseVmName(rawString):
+ # valdiate vm name
+ if not re.match('^vm-[a-z]+[0-9]?(-[a-z])?$',rawString):
+ logErr('The name ' + options.name + ' is no valid vm-name');
+ sys.exit(2)
+
+ return rawString
+
+def parseDiskSize(rawString):
+ # valdiate disk size
+ diskSizeUnit = 'G'
+ diskSize = 0
+
+ match = re.match('^([0-9]+)([GgMm])?$',rawString)
+
+ if not match:
+ logErr('The name ' + raw + ' is no a valid disk size <number>(G|M)?');
+ sys.exit(2)
+
+ try:
+ diskSizeUnit = match.group(2)
+ diskSize = int(match.group(1))
+ except ValueError:
+ logErr('The size ' + options.size + ' is not a valid disk size');
+ sys.exit(2)
+
+ if not diskSizeUnit:
+ diskSizeUnit = 'G'
+ logInfo("Interpreteing disk size in gigbyte magnitude")
+
+ if diskSizeUnit == 'm' or diskSizeUnit == 'M':
+ if not(1024 < diskSize and diskSize < 500000):
+ logErr(' Syrsly? ' + str(diskSize) + ' megabytes?')
+ sys.exit(2)
+ else:
+ if not(1 < diskSize and diskSize < 500):
+ logErr(' Syrsly? ' + str(diskSize) + ' gigabytes?')
+ sys.exit(2)
+ return (diskSize, diskSizeUnit)
+
+# check if required options are given
+if options.name == None:
+ logErr("A vm name (-n) schould be given")
+ sys.exit(2)
+
+vmName = parseVmName(options.name)
+diskSize, diskSizeUnit = parseDiskSize(options.size)
+
+execute(["lvcreate", "-n", vmName, "-L", str(diskSize) + str(diskSizeUnit)])
+execute(["mkfs", "/dev/" + volumeGroupName + "/" + vmName, "-l",vmName])
+execute(["addIscsiDisk", vmName])
+
+logInfo("All done. Proceed to {pang,peng} an install your vm there!")
+sys.exit(0)
+
+