upload-logs-swift: Cleanup temporary directories
Add a function to the FileList context manager to get a temporary directory; keep track and remove these on exit. Use this in the index creation. Change-Id: I9d9220ad70ce191af02ae0331c98eafe487d96d4
This commit is contained in:
parent
9491dcdae8
commit
928d0bb051
@ -32,6 +32,7 @@ try:
|
|||||||
import queue as queuelib
|
import queue as queuelib
|
||||||
except ImportError:
|
except ImportError:
|
||||||
import Queue as queuelib
|
import Queue as queuelib
|
||||||
|
import shutil
|
||||||
import stat
|
import stat
|
||||||
import sys
|
import sys
|
||||||
import tempfile
|
import tempfile
|
||||||
@ -193,12 +194,14 @@ class FileList(Sequence):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.file_list = []
|
self.file_list = []
|
||||||
self.file_list.append(FileDetail(None, '', ''))
|
self.file_list.append(FileDetail(None, '', ''))
|
||||||
|
self.tempdirs = []
|
||||||
|
|
||||||
def __enter__(self):
|
def __enter__(self):
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def __exit__(self, type, value, traceback):
|
def __exit__(self, type, value, traceback):
|
||||||
pass
|
for tempdir in self.tempdirs:
|
||||||
|
shutil.rmtree(tempdir)
|
||||||
|
|
||||||
def __getitem__(self, item):
|
def __getitem__(self, item):
|
||||||
return self.file_list.__getitem__(item)
|
return self.file_list.__getitem__(item)
|
||||||
@ -206,6 +209,16 @@ class FileList(Sequence):
|
|||||||
def __len__(self):
|
def __len__(self):
|
||||||
return self.file_list.__len__()
|
return self.file_list.__len__()
|
||||||
|
|
||||||
|
def get_tempdir(self):
|
||||||
|
'''Get a temporary directory
|
||||||
|
|
||||||
|
Returns path to a private temporary directory which will be
|
||||||
|
cleaned on exit
|
||||||
|
'''
|
||||||
|
tempdir = tempfile.mkdtemp(prefix='s-u-l-tmp')
|
||||||
|
self.tempdirs.append(tempdir)
|
||||||
|
return tempdir
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _path_in_tree(root, path):
|
def _path_in_tree(root, path):
|
||||||
full_path = os.path.realpath(os.path.abspath(
|
full_path = os.path.realpath(os.path.abspath(
|
||||||
@ -274,6 +287,7 @@ class Indexer():
|
|||||||
def __init__(self, file_list, create_parent_links=True,
|
def __init__(self, file_list, create_parent_links=True,
|
||||||
create_topdir_parent_link=False,
|
create_topdir_parent_link=False,
|
||||||
append_footer='index_footer.html'):
|
append_footer='index_footer.html'):
|
||||||
|
|
||||||
'''
|
'''
|
||||||
Args:
|
Args:
|
||||||
file_list (FileList): A FileList object to be updated
|
file_list (FileList): A FileList object to be updated
|
||||||
@ -319,7 +333,8 @@ class Indexer():
|
|||||||
files = [parent_file_detail] + files
|
files = [parent_file_detail] + files
|
||||||
|
|
||||||
# Do generate a link to the parent directory
|
# Do generate a link to the parent directory
|
||||||
full_path = self.make_index_file(files, 'Index of %s' % (folder,))
|
full_path = self.make_index_file(files, 'Index of %s' % (folder,),
|
||||||
|
self.file_list.get_tempdir())
|
||||||
|
|
||||||
if full_path:
|
if full_path:
|
||||||
filename = os.path.basename(full_path)
|
filename = os.path.basename(full_path)
|
||||||
@ -347,7 +362,7 @@ class Indexer():
|
|||||||
new_list.reverse()
|
new_list.reverse()
|
||||||
self.file_list.file_list = new_list
|
self.file_list.file_list = new_list
|
||||||
|
|
||||||
def make_index_file(self, folder_links, title):
|
def make_index_file(self, folder_links, title, tempdir):
|
||||||
"""Writes an index into a file for pushing"""
|
"""Writes an index into a file for pushing"""
|
||||||
for file_details in folder_links:
|
for file_details in folder_links:
|
||||||
# Do not generate an index file if one exists already.
|
# Do not generate an index file if one exists already.
|
||||||
@ -356,7 +371,6 @@ class Indexer():
|
|||||||
if self.index_filename == file_details.filename:
|
if self.index_filename == file_details.filename:
|
||||||
return
|
return
|
||||||
index_content = self.generate_log_index(folder_links, title)
|
index_content = self.generate_log_index(folder_links, title)
|
||||||
tempdir = tempfile.mkdtemp()
|
|
||||||
fd = open(os.path.join(tempdir, self.index_filename), 'w')
|
fd = open(os.path.join(tempdir, self.index_filename), 'w')
|
||||||
fd.write(index_content)
|
fd.write(index_content)
|
||||||
return os.path.join(tempdir, self.index_filename)
|
return os.path.join(tempdir, self.index_filename)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user