diff options
author | yves <steve.harrison@gmx.net> | 2011-12-13 22:44:17 +0100 |
---|---|---|
committer | yves <steve.harrison@gmx.net> | 2011-12-13 22:44:17 +0100 |
commit | d5eb42d1191d344ada0ed2ee082b504b83e5c692 (patch) | |
tree | f92fdd8ad1c982fbcf2d86b00569bf7cd4016831 | |
parent | cfc99fee423890d234cda57aa48ebb34ce66ee0e (diff) | |
download | iscsi-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-x | createAndExportDisk.py | 90 |
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) + + |