[Thincrust-devel] [PATCH] Modify all the ec2-creator code to use logging instead of printing to standard out and standard error
Bryan Kearney
bkearney at redhat.com
Thu Nov 20 17:00:21 UTC 2008
---
.gitignore | 1 +
ec2convert/ec2config.py | 25 +++++++++++++------------
ec2convert/fs.py | 30 +++++++++++++++---------------
ec2convert/rpmcheck.py | 9 +++++----
tools/ec2-converter | 10 ++++++----
5 files changed, 40 insertions(+), 35 deletions(-)
create mode 100644 .gitignore
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..0d20b64
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+*.pyc
diff --git a/ec2convert/ec2config.py b/ec2convert/ec2config.py
index 50193f2..35a7ceb 100644
--- a/ec2convert/ec2config.py
+++ b/ec2convert/ec2config.py
@@ -19,6 +19,7 @@
import os
import sys
+import logging
class ec2_modify:
@@ -28,7 +29,7 @@ class ec2_modify:
os.popen("/sbin/MAKEDEV -d %s/dev -x zero" % tmpdir)
def fstab(self,tmpdir):
- print "* - Updating /etc/fstab\n"
+ logging.info("* - Updating /etc/fstab")
fstab_path = tmpdir + "/etc/fstab"
os.system("touch " + fstab_path)
fstab = open(fstab_path, "w")
@@ -46,7 +47,7 @@ class ec2_modify:
def rclocal_config(self,tmpdir):
rclocal_path = tmpdir + "/etc/rc.local"
rclocal = open(rclocal_path, "w")
- print "* - Creating rc.local configuration\n"
+ logging.info("* - Creating rc.local configuration\n")
ec2_rclocal = "if [ ! -d /root/.ssh ] ; then\n"
ec2_rclocal += "mkdir -p /root/.ssh\n"
ec2_rclocal += "chmod 700 /root/.ssh\n"
@@ -76,11 +77,11 @@ class ec2_modify:
sshdconfig_path = tmpdir + "/etc/ssh/sshd_config"
sshdconfig = open(sshdconfig_path,"w")
except IOError, (errno, strerror):
- print "%s, %s" % (strerror,sshdconfig_path)
- print "The openssh_server package must be installed to convert and function properly on EC2"
+ 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)
else:
- print "* - Creating ssh configuration\n"
+ logging.info("* - Creating ssh configuration")
ec2_sshdconfig = "UseDNS no\n"
ec2_sshdconfig +="PermitRootLogin without-password\n"
sshdconfig.writelines(ec2_sshdconfig)
@@ -88,12 +89,12 @@ class ec2_modify:
def eth0_config(self,tmpdir):
try:
- print "* - Creating eth0 configuration\n"
+ logging.info("* - Creating eth0 configuration")
eth0_path = tmpdir + "/etc/sysconfig/network-scripts/ifcfg-eth0"
os.system("touch %s" % eth0_path)
eth0 = open(eth0_path, "w")
except IOError, (errno, strerror):
- print "%s, %s" % (strerror,eth0_path)
+ logging.info( "%s, %s" % (strerror,eth0_path) )
sys.exit(1)
else:
ec2_eth0 = "ONBOOT=yes\n"
@@ -103,11 +104,11 @@ class ec2_modify:
eth0.close()
os.system("chroot %s /sbin/chkconfig network on" % tmpdir)
- print "* - Prevent nosegneg errors\n"
+ logging.info("* - Prevent nosegneg errors")
os.system("echo \"hwcap 0 nosegneg\" > %s/etc/ld.so.conf.d/nosegneg.conf" % tmpdir)
def ami_tools(self,tmpdir):
- print "Adding EC2 Tools"
+ logging.info("Adding EC2 Tools")
if os.path.isdir(tmpdir + "/home/ec2"):
pass
@@ -118,16 +119,16 @@ class ec2_modify:
if ec2td == 0:
os.system("unzip -qo /tmp/ec2-api-tools-1.2-9739.zip -d /home/ec2")
else:
- print "\n\n EC2 tools download error!"
+ logging.error( "EC2 tools download error!")
sys.exit(1)
def kernel_modules(self,tmpdir):
- print "Configure image for accepting the EC2 kernel"
+ logging.info("Configure image for accepting the EC2 kernel")
kd = os.system("curl -o /tmp/kernel-xen-2.6.21.7-2.fc8.i686.rpm http://kojipkgs.fedoraproject.org/packages/kernel-xen-2.6/2.6.21.7/2.fc8/i686/kernel-xen-2.6.21.7-2.fc8.i686.rpm")
if kd == 0:
os.system("rpm -ivh --nodeps /tmp/kernel-xen-2.6.21.7-2.fc8.i686.rpm --root=%s" % tmpdir)
else:
- print "\n\n Kernel download error!"
+ logging.error("Kernel download error!")
diff --git a/ec2convert/fs.py b/ec2convert/fs.py
index 6b75a16..79e15f1 100644
--- a/ec2convert/fs.py
+++ b/ec2convert/fs.py
@@ -32,7 +32,7 @@ class loopbackdisk_image():
tmproot = tmpdir + "-tmproot"
tmpimage = tmpdir + "-tmpimage"
- print >> sys.stdout, "\nTMPDIR: " + tmpdir
+ logging.debug("TMPDIR: " + tmpdir)
free_loop_dev = os.popen("/sbin/losetup -f")
loop_device = free_loop_dev.read().strip()
@@ -49,10 +49,10 @@ class loopbackdisk_image():
label = os.popen("e2label /dev/mapper/%s 2>&1 " % dev)
label = label.read().strip()
if label.startswith("e2label"):
- print >> sys.stderr, "\n\nUnable to detect partition label on %s, continuing anyways, if %s is a swap partition, no action is needed\n" % (dev,dev)
+ logging.error("Unable to detect partition label on %s, continuing anyways, if %s is a swap partition, no action is needed" % (dev,dev))
else:
loop_partition_dict[dev] = label
- print dev + " : " + label
+ logging.debug( dev + " : " + label)
dev = loop_partition_dict.values()
dev.sort()
@@ -64,34 +64,34 @@ class loopbackdisk_image():
ld = os.popen("/sbin/losetup -f")
loop_partition_device = ld.read().strip()
if not loop_device:
- print >> sys.stderr, "Please review your loopback device settings and remove unneeded ones"
+ logging.error("Please review your loopback device settings and remove unneeded ones")
sys.exit(1)
os.system("mount -o loop /dev/mapper/%s %s%s" % (key,tmproot,value))
tmp_disk_space = os.popen("du -s %s|awk {'print $1'}" % tmproot)
tmp_disk_space= int(tmp_disk_space.read()) / 1024
- print >> sys.stdout, "\nDisk Space Required: %sM" % str(tmp_disk_space)
+ logging.info("Disk Space Required: %sM" % str(tmp_disk_space))
new_disk_space = int(tmp_disk_space + ((tmp_disk_space * 0.30) + 150))
- print >> sys.stdout, "\nCreating a new disk image with additional freespace: " + str(new_disk_space) + "M total"
+ logging.info("\nCreating a new disk image with additional freespace: " + str(new_disk_space) + "M total")
create_disk = os.system("dd if=/dev/zero of=%s/ec2-diskimage.img bs=1M count=%s" % (tmpimage,new_disk_space))
os.system("mke2fs -Fj %s/ec2-diskimage.img" % tmpimage)
if not loop_device:
- print >> sys.stderr, "Please review your loopback device settings and remove unneeded ones"
+ logging.error("Please review your loopback device settings and remove unneeded ones")
sys.exit(1)
os.system("mount -o loop %s/ec2-diskimage.img %s" % (tmpimage,tmpdir))
- print >> sys.stdout, "\nPerforming rsync on all partitions to new root\n"
+ logging.info("Performing rsync on all partitions to new root")
os.system("rsync -u -r -a %s/* %s" % (tmproot,tmpdir))
dev.sort(reverse=True)
for value in dev:
- print >> sys.stdout, "Unmounting %s%s" % (tmpdir,value)
+ logging.info("Unmounting %s%s" % (tmpdir,value))
os.system("umount %s%s" % (tmproot,value))
- print >> sys.stdout, "Freeing loopdevices"
+ logging.info("Freeing loopdevices")
os.system("kpartx -d %s" % loop_device)
os.system("losetup -d %s" % loop_device)
return
@@ -111,14 +111,14 @@ class directory_image():
tmproot = tmpdir + "-tmproot"
tmpimage = tmpdir + "-tmpimage"
- print >> sys.stdout, "\nTMPDIR: " + tmpdir
+ logging.info("TMPDIR: " + tmpdir)
tmp_disk_space = os.popen("du -s %s|awk {'print $1'}" % imagefile)
tmp_disk_space= int(tmp_disk_space.read()) / 1024
- print >> sys.stdout, "\nDisk Space Required: %sM" % str(tmp_disk_space)
+ logging.info("Disk Space Required: %sM" % str(tmp_disk_space))
new_disk_space = int(tmp_disk_space + ((tmp_disk_space * 0.30) + 150))
- print >> sys.stdout, "\nCreating a new disk image with additional freespace: " + str(new_disk_space) + "M total"
+ logging.info("Creating a new disk image with additional freespace: " + str(new_disk_space) + "M total")
create_disk = os.system("dd if=/dev/zero of=%s/ec2-diskimage.img bs=1M count=%s" % (tmpimage,new_disk_space))
os.system("mke2fs -Fj %s/ec2-diskimage.img" % tmpimage)
@@ -126,12 +126,12 @@ class directory_image():
loop_device = free_loop_dev.read().strip()
if not loop_device:
- print >> sys.stderr, "Please review your loopback device settings and remove unneeded ones"
+ logging.error("Please review your loopback device settings and remove unneeded ones")
sys.exit(1)
os.system("mount -o loop %s/ec2-diskimage.img %s" % (tmpimage,tmpdir))
- print >> sys.stdout, "\nPerforming rsync on all partitions to new root\n"
+ logging.info("Performing rsync on all partitions to new root")
os.system("rsync -u -r -a %s/* %s" % (imagefile,tmpdir))
return
diff --git a/ec2convert/rpmcheck.py b/ec2convert/rpmcheck.py
index 02f28e7..377dd47 100644
--- a/ec2convert/rpmcheck.py
+++ b/ec2convert/rpmcheck.py
@@ -21,6 +21,7 @@
import sys
import os
+import logging
package_list = ['openssh-server','curl']
@@ -32,9 +33,9 @@ def checkpkgs(tmpdir):
if rpm.endswith("installed\n"):
notinstalled_list += package
else:
- print >> sys.stderr, "%s is installed\n" % rpm.strip()
+ logging.error("%s is installed\n" % rpm.strip())
if notinstalled_list:
- print >> sys.stderr, "\n\nPackage(s): %s not installed, exiting" % notinstalled_list
- print >> sys.stderr, "\nPlease install %s and rerun ec2-converter\n\n" % notinstalled_list
- print >> sys.stderr, "\nOr add --rpmcheck=no option"
+ 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)
diff --git a/tools/ec2-converter b/tools/ec2-converter
index c045541..96524f9 100755
--- a/tools/ec2-converter
+++ b/tools/ec2-converter
@@ -22,6 +22,7 @@ import sys
import shutil
import optparse
import logging
+import imgcreate
import random
import ec2convert.ec2config as ec2config
import ec2convert.rpmcheck as rpmcheck
@@ -58,6 +59,7 @@ def parse_options(args):
dest="rpmcheck", default="yes",
help="Perform rpm package checks, default is yes, set to no to override")
+ imgcreate.setup_logging(parser)
(options, args) = parser.parse_args()
@@ -79,11 +81,11 @@ def main():
return ret
if os.geteuid () != 0:
- print >> sys.stderr, "You must run as root"
+ logging.error("You must run as root")
return 1
if not options.imagefile:
- print >> sys.stderr, "Imagefile required to convert"
+ logging.error("Imagefile required to convert")
return 1
imagefile = options.imagefile
@@ -101,14 +103,14 @@ def main():
fsutil = fs.directory_image()
else:
- print >> sys.stderr, "--inputtype must be defined"
+ logging.error("--inputtype must be defined")
sys.exit(1)
os.mkdir(tmpdir)
os.mkdir(tmpimage)
if options.inputtype =="diskimage" or options.inputtype == "loopbackfs":
- print >> sys.stdout, "Copying %s to %s" % (imagefile,tmpimage)
+ logging.info("Copying %s to %s" % (imagefile,tmpimage))
shutil.copy(imagefile,newimage)
fsutil.setup_fs(imagefile,tmpdir)
--
1.5.6.5
More information about the Thincrust-devel
mailing list