[anaconda][PATCH 2/2] Use a temporary directory for verifying ISO media
David Shea
dshea at redhat.com
Tue Sep 24 13:55:54 UTC 2013
On 09/24/2013 09:48 AM, Vratislav Podzimek wrote:
> On Tue, 2013-09-24 at 09:37 -0400, David Shea wrote:
>> None of the callers of opticalInstallMedia use the mountpoint parameter,
>> so removed it. Changed to using a temporary directory instead of
>> /run/install/source to mount and verify potential optical media, since
>> /run/install/source may already be in use by media specified in
>> inst.repo.
>> ---
>> pyanaconda/image.py | 23 ++++++++++++++---------
>> 1 file changed, 14 insertions(+), 9 deletions(-)
>>
>> diff --git a/pyanaconda/image.py b/pyanaconda/image.py
>> index 9049be9..82f3e4f 100644
>> --- a/pyanaconda/image.py
>> +++ b/pyanaconda/image.py
>> @@ -18,8 +18,8 @@
>> #
>>
>> import isys
>> -import os, os.path, stat
>> -from constants import INSTALL_TREE, ISO_DIR
>> +import os, os.path, stat, tempfile
>> +from constants import ISO_DIR
>>
>> from errors import errorHandler, ERROR_RAISE, InvalidImageSizeError, MediaMountError, MediaUnmountError, MissingImageError
>>
>> @@ -185,7 +185,7 @@ def mountImage(isodir, tree):
>>
>> # Return the first Device instance containing valid optical install media
>> # for this product.
>> -def opticalInstallMedia(devicetree, mountpoint=INSTALL_TREE):
>> +def opticalInstallMedia(devicetree):
>> retval = None
>>
>> # Search for devices identified as cdrom along with any other
>> @@ -201,16 +201,21 @@ def opticalInstallMedia(devicetree, mountpoint=INSTALL_TREE):
>> # no mountable media
>> continue
>>
>> + mountpoint = tempfile.mkdtemp()
>> try:
>> - dev.format.mount(mountpoint=mountpoint)
>> - except FSError:
>> - continue
>> + try:
>> + dev.format.mount(mountpoint=mountpoint)
>> + except FSError:
>> + continue
>> +
>> + if not verifyMedia(mountpoint):
>> + dev.format.unmount()
>> + continue
>>
>> - if not verifyMedia(mountpoint):
>> dev.format.unmount()
>> - continue
>> + finally:
>> + os.rmdir(mountpoint)
>>
>> - dev.format.unmount()
> If verifyMedia returns True, the format won't get umounted and the
> finally block will try to remove its contents. Or am I missing
> something?
>
It looks funny because I indented a block and one of the original
unmounts ended up in the context of the diff. I just removed the
parameter from the function definition, added the mountpoint =
tempfile.mkdtemp(), and wrapped everything in this block:
try:
dev.format.mount(mountpoint=mountpoint)
except FSError:
continue
if not verifyMedia(mountpoint):
dev.format.unmount()
continue
dev.format.unmount()
In a try-finally. There's still two unmount() lines.
More information about the anaconda-patches
mailing list