summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryves <steve.harrison@gmx.net>2011-12-22 19:47:36 +0100
committeryves <steve.harrison@gmx.net>2011-12-22 19:47:36 +0100
commitcb011dab044bd886823b167ce7e60c916a1fa146 (patch)
treeaaa17efe61955a17a3ace2ab400fd994be03f8b4
parent677649923e407111be95328ffda5af5e14441e0b (diff)
downloadiscsi-helper-cb011dab044bd886823b167ce7e60c916a1fa146.tar.gz
iscsi-helper-cb011dab044bd886823b167ce7e60c916a1fa146.tar.bz2
iscsi-helper-cb011dab044bd886823b167ce7e60c916a1fa146.zip
rewrote basic functionality for createAndExport, further abstraction may be used
-rwxr-xr-xcreateAndExportDisk.py27
-rw-r--r--shared.py33
2 files changed, 37 insertions, 23 deletions
diff --git a/createAndExportDisk.py b/createAndExportDisk.py
index 30093e6..f343b80 100755
--- a/createAndExportDisk.py
+++ b/createAndExportDisk.py
@@ -10,8 +10,9 @@ defaultDiskSize = '3G'
# configure known options
usage = "usage: %prog VMNAME [options]"
parser = optparse.OptionParser(usage=usage)
-parser.add_option("-s", "--size", dest="size", default=defaultDiskSize,
- help="SIZE of vm root disk", metavar="SIZE")
+parser.add_option("-s", "--disk-size", dest="size",
+ default=defaultDiskSize, help="size of the disk",
+ metavar="SIZE")
parser.add_option("-v", "--verbose", dest="verbose",
action="store_true", default=False,
help="should I do output")
@@ -29,15 +30,23 @@ elif len(args) > 1:
vmName = parseVmName(args[0])
diskSize, diskSizeUnit = parseDiskSize(options.size)
+#ip, ipLastBlock = parseIp(args[1])
-cmds = [
- ["lvcreate", "-n", vmName, "-L", str(diskSize) + str(diskSizeUnit)],
- ["mkfs.ext4", "/dev/" + volumeGroupName + "/" + vmName, "-l",vmName],
- ["addIscsiDisk", vmName]
-]
+pl = ProgressLogger(3)
-execPlan = ExecutionPlan(cmds,vmName)
-execPlan.execute_all()
+lf = openLogFile()
+
+pl.start('create logical volume')
+execute(["lvcreate", "-n", vmName, "-L", str(diskSize) + str(diskSizeUnit)],lf)
+pl.done()
+
+pl.start('format logical volume with ext4')
+execute(["mkfs.ext4", "/dev/" + volumeGroupName + "/" + vmName, "-l",vmName],lf)
+pl.done()
+
+pl.start('adding iscsi export')
+execute(["addIscsiDisk", vmName],lf)
+pl.done()
logInfo("all done. SSH to (pang|peng).spline.de an install your vm there!")
sys.exit(0)
diff --git a/shared.py b/shared.py
index 487236f..a150ea7 100644
--- a/shared.py
+++ b/shared.py
@@ -10,13 +10,13 @@ def logInfo(msg):
def logErr(msg):
print("\033[1;31mERROR\033[0m " + str(msg))
-def openLogFile(comment)
+def openLogFile(comment=sys.argv[0]):
logFile = open("/tmp/" + comment + ".log","a")
logFile.write("# ### Starting new run \"" + comment + "\" ### #\r\n")
logFile.flush()
return logFile
-def execute(cmd, logFile):
+def execute(cmd, logFile=None):
# safty anker subprocess.call(cmd)
try:
subprocess.call(['echo','#>>>'] + cmd,stdout=logFile)
@@ -34,21 +34,26 @@ def execute(cmd, logFile):
+ logFile.name + ". Error was: " + str(e))
sys.exit(1)
-class ExecutionPlan:
+class ProgressLogger:
- def __init__(self, commands, comment = sys.argv[0]):
- self.commands = commands
- self.executed = []
+ def __init__(self, totalSteps, steps=[]):
+ self.totalSteps = totalSteps
+ self.progress=1
+ self.steps=steps
- def execute_all(self):
- for i in range(len(self.executed),len(self.commands)):
- total = len(self.commands)
- print("[" + str(i+1) + "/" + str(total) + "]: excuting "
- + self.commands[i][0],end="")
- self.execute(self.commands[i])
- print("\r[" + str(i+1) + "/" + str(total) + "]: excuted "
- + self.commands[i][0] + " ")
+ def start(self, step=None):
+ if(step == None):
+ step = self.steps.pop()
+ print("[" + str(self.progress) + "/" + str(self.totalSteps)
+ + "] excuting: " + step, end="")
+
+ self.current=step
+
+ def done(self):
+ print("\r[" + str(self.progress) + "/" + str(self.totalSteps) + "] excuted: "
+ + self.current + " ")
+ self.progress = self.progress + 1
def parseIp(rawString):
match = re.match('^130\.133\.110\.([0-9]{1,3})$',rawString)