Put log file in 'release' output always.
authorLihong <lihongx.sun@intel.com>
Tue, 11 Nov 2014 03:26:44 +0000 (22:26 -0500)
committeradmin <yuhuan.yang@samsung.com>
Thu, 4 Feb 2016 10:30:54 +0000 (18:30 +0800)
When image creation failed, log created by '--release' will be
located under 'outdir' instead of 'release_dir'. Also put the
log file under 'release_dir' when image creation failed.

mic-appliance create images through executing '/etc/init.d/mic'
script in the appliance. 'time mic cr auto $extra /media/out/$ks'
is called, and '--release' option is used when creating images.

In the past, 3 points about the logfile created by '--release':
1. Create logfile in default 'out_dir' which is specified in
'/etc/mic/mic.conf'. 2. Before creating images, check whether the
'release_dir' exists, if it exists, remove the whole directory. 3.
After the image creation finished, copy the logfile to the final
'release_dir' where the images located. So when the image creation
failed, no logfile found in 'release_dir', the logfile is under default
'out_dir'.

If directly change the 'out_dir' to 'dest_dir' in conf.py, the image
creation will fail if there already exist a same 'release_dir', because
this existed 'release_dir' will be removed when creating images, but the
logfile use this dir at the time, so it cannot be removed, then mic will
fail and exit. So right now, if 'release_dir' already existed, just remove
the files under it except the newly created logfile, and remain the dir.

Fixes: #2212
Change-Id: Ibdc9af3d0e03ca966517d05b1e519d4d9fb3ad43

mic/conf.py
mic/imager/baseimager.py
mic/pluginbase.py

index 139660a2200d2613f77da8705073c53aa9171653..67d6d0c9d3446660dfeac0b4c76132fa3338bc73 100644 (file)
@@ -218,7 +218,7 @@ class ConfigMgr(object):
             self.create['name'] = self.create['release'] + '_' + self.create['name']
 
             if not self.create['logfile']:
-                self.create['logfile'] = os.path.join(self.create['outdir'],
+                self.create['logfile'] = os.path.join(self.create['destdir'],
                                                       self.create['name'] + ".log")
                 self.create['releaselog'] = True
                 self.set_logfile()
index dc7807dd282b935a458a56a5ca1dc6eef6ebe66b..10c433fbc736fcbfe46799cb5ea1af589159a641 100644 (file)
@@ -1293,9 +1293,6 @@ class BaseImageCreator(object):
 
         # save log file, logfile is only available in creator attrs
         if hasattr(self, 'releaselog') and self.releaselog:
-            final_logfile = _rpath(self.name+'.log')
-            shutil.move(self.logfile, final_logfile)
-            self.logfile = final_logfile
             outimages.append(self.logfile)
 
         # rename iso and usbimg
index ef4dcdefb51986b74aa891e8bdfa0139cbf96071..541ac8a5c8f9df2569d62ba16e8fc6d1adb2b903 100644 (file)
@@ -64,11 +64,14 @@ class ImagerPlugin(_Plugin):
             image = os.path.join(destdir, name)
             if not os.path.exists(image):
                 continue
-
             if msger.ask("Target image/dir: %s already exists, "
-                         "clean up and continue?" % image):
+                         "clean up the old files and continue?" % image):
                 if os.path.isdir(image):
-                    shutil.rmtree(image)
+                    for path, dirs, files in os.walk(os.path.abspath(image)):
+                        for fname in files:
+                            fpath = os.path.join(path, fname)
+                            if not fpath.endswith('.log'):
+                                os.remove(fpath)
                 else:
                     os.unlink(image)
             else: