[Thincrust-devel] [PATCH] Removed the system exits
Bryan Kearney
bkearney at redhat.com
Thu Nov 20 17:00:23 UTC 2008
---
ec2convert/ec2config.py | 53 +++++++++++++++++++++++++++++++++-------------
ec2convert/rpmcheck.py | 4 ++-
tools/ec2-converter | 6 ++--
3 files changed, 44 insertions(+), 19 deletions(-)
diff --git a/ec2convert/ec2config.py b/ec2convert/ec2config.py
index cf53f93..273a6ee 100644
--- a/ec2convert/ec2config.py
+++ b/ec2convert/ec2config.py
@@ -31,6 +31,7 @@ class EC2Config():
os.popen("/sbin/MAKEDEV -d %s/dev -x console" % tmpdir)
os.popen("/sbin/MAKEDEV -d %s/dev -x null" % tmpdir)
os.popen("/sbin/MAKEDEV -d %s/dev -x zero" % tmpdir)
+ return True
def fstab(self,tmpdir):
logging.info("* - Updating /etc/fstab")
@@ -46,6 +47,7 @@ class EC2Config():
ec2_fstab += "none /sys sysfs defaults 0 0\n"
fstab.writelines(ec2_fstab)
fstab.close()
+ return True
def rclocal_config(self,tmpdir):
@@ -75,6 +77,7 @@ class EC2Config():
ec2_rclocal += "echo \" + Updated ec2-ami-tools\"\n"
rclocal.writelines(ec2_rclocal)
rclocal.close()
+ return True
def ssh_config(self,tmpdir):
try:
@@ -83,13 +86,14 @@ class EC2Config():
except IOError, (errno, strerror):
logging.error( "%s, %s" % (strerror,sshdconfig_path))
logging.error( "The openssh_server package must be installed to convert and function properly on EC2" )
- sys.exit(1)
+ return False
else:
logging.info("* - Creating ssh configuration")
ec2_sshdconfig = "UseDNS no\n"
ec2_sshdconfig +="PermitRootLogin without-password\n"
sshdconfig.writelines(ec2_sshdconfig)
- sshdconfig.close()
+ sshdconfig.close()
+ return True
def eth0_config(self,tmpdir):
try:
@@ -99,7 +103,7 @@ class EC2Config():
eth0 = open(eth0_path, "w")
except IOError, (errno, strerror):
logging.info( "%s, %s" % (strerror,eth0_path) )
- sys.exit(1)
+ return False
else:
ec2_eth0 = "ONBOOT=yes\n"
ec2_eth0 += "DEVICE=eth0\n"
@@ -110,6 +114,7 @@ class EC2Config():
logging.info("* - Prevent nosegneg errors")
os.system("echo \"hwcap 0 nosegneg\" > %s/etc/ld.so.conf.d/nosegneg.conf" % tmpdir)
+ return True
def ami_tools(self,tmpdir):
logging.info("Adding EC2 Tools")
@@ -124,7 +129,9 @@ class EC2Config():
os.system("unzip -qo /tmp/ec2-api-tools-1.2-9739.zip -d /home/ec2")
else:
logging.error( "EC2 tools download error!")
- sys.exit(1)
+ return False
+
+ return True
def kernel_modules(self,tmpdir):
@@ -135,9 +142,12 @@ class EC2Config():
os.system("rpm -ivh --nodeps /tmp/kernel-xen-2.6.21.7-2.fc8.i686.rpm --root=%s" % tmpdir)
else:
logging.error("Kernel download error!")
+ return False
+
+ return True
-def convert(imagefile, inputtype, tmpdirectory, checkrpms, checkssh, newimagepath):
+def convert(imagefile, inputtype, tmpdirectory, checkrpms, sshconfig, newimagepath):
tmpdir = tmpdirectory + "/ec2-convert-" + (''.join(random.sample('123567890abcdefghijklmnopqrstuvwxyz', 8)))
tmpimage = tmpdir + "-tmpimage"
newimage = tmpimage + "/ec2-diskimage.img"
@@ -165,19 +175,32 @@ def convert(imagefile, inputtype, tmpdirectory, checkrpms, checkssh, newimagepat
fsutil.setup_fs(imagefile,tmpdir)
if checkrpms:
- rpmcheck.checkpkgs(tmpdir)
+ if not rpmcheck.checkpkgs(tmpdir):
+ return False
config = EC2Config()
- config.makedev(tmpdir)
- config.fstab(tmpdir)
- config.rclocal_config(tmpdir)
-
- if checkssh:
- config.ssh_config(tmpdir)
+ # Each method returns TRUE if successful, or false if it failed
+ # We catch false and return False if we failed.
+ if not config.makedev(tmpdir):
+ return False
+ if not config.fstab(tmpdir):
+ return False
+ if not config.rclocal_config(tmpdir):
+ return False
- config.eth0_config(tmpdir)
- config.ami_tools(tmpdir)
- config.kernel_modules(tmpdir)
+ if not sshconfig:
+ if config.ssh_config(tmpdir):
+ return False
+
+ if not config.eth0_config(tmpdir):
+ return False
+
+ if not config.ami_tools(tmpdir):
+ return False
+
+ if not config.kernel_modules(tmpdir):
+ return False
+
fsutil.unmount(tmpdir)
shutil.move(newimage,newimagepath)
diff --git a/ec2convert/rpmcheck.py b/ec2convert/rpmcheck.py
index 377dd47..f9160ee 100644
--- a/ec2convert/rpmcheck.py
+++ b/ec2convert/rpmcheck.py
@@ -38,4 +38,6 @@ def checkpkgs(tmpdir):
logging.error("Package(s): %s not installed, exiting" % notinstalled_list)
logging.error("Please install %s and rerun ec2-converter" % notinstalled_list)
logging.error("Or add --rpmcheck=no option")
- sys.exit(1)
+ return False
+
+ return True
diff --git a/tools/ec2-converter b/tools/ec2-converter
index 81fe770..7cfc15c 100755
--- a/tools/ec2-converter
+++ b/tools/ec2-converter
@@ -95,10 +95,10 @@ def main():
imagename = "ec2-" + suffix
rpmcheck = options.rpmcheck == "yes"
- sshcheck = options.ssh == "yes"
+ sshconfig = options.ssh == "yes"
success = ec2config.convert(options.imagefile, options.inputtype, \
- options.tmpdir, rpmcheck, sshcheck, imagename)
+ options.tmpdir, rpmcheck, sshconfig, imagename)
if success:
print >> sys.stdout, "\n\nEC2 Image created as %s" % imagename
@@ -106,7 +106,7 @@ def main():
print >> sys.stdout, "Available at: http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.noarch.rpm\n"
return 0
else:
- print >> sys.stdout, "\n Conversion failed"
+ print >> sys.stdout, "\nConversion failed"
return 1
if __name__ == "__main__":
--
1.5.6.5
More information about the Thincrust-devel
mailing list