From d5eb42d1191d344ada0ed2ee082b504b83e5c692 Mon Sep 17 00:00:00 2001 From: yves Date: Tue, 13 Dec 2011 22:44:17 +0100 Subject: first draft of a script, that does massic argument checking --- createAndExportDisk.py | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100755 createAndExportDisk.py 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 (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) + + -- cgit v1.2.3-1-g7c22