1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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)
|