[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