Repository : http://git.fedorahosted.org/cgit/
On branch : v1.4
commit 19aae22f9e7f706c2efeee0000994a0b8f1dec1d Author: Matt Domsch Matt_Domsch@dell.com Date: Sat Jun 15 22:33:15 2013 -0500
umdl: fix nuke_gone_directories, enable --delete-directories
server/update-master-directory-list | 22 +++++++++------------- 1 files changed, 9 insertions(+), 13 deletions(-)
diff --git a/server/update-master-directory-list b/server/update-master-directory-list index 87cb6a1..24d5566 100755 --- a/server/update-master-directory-list +++ b/server/update-master-directory-list @@ -273,23 +273,18 @@ def make_repository(dir, dname, category, product_id, topdir):
return repo
-def nuke_gone_directories(category, category_directories): +def nuke_gone_directories(rootdir): """ deleting a Directory has a ripple effect through the whole database. Be really sure you're ready do to this. It comes in handy when say a Test release is dropped."""
- cache = setup_directory_category_cache() - for d in list(Directory.select(orderBy='-name')): + for d in Directory.select(orderBy='-name'): dname = d.name - try: - for c in cache[d.id]: - if category == c and dname: - if not category_directories.has_key(dname): - sys.stdout.write("Deleting gone directory %s\n" % (dname)) - sys.stdout.flush() - d.destroySelf() - except: - continue + if not os.path.isdir(os.path.join(rootdir, dname)): + if len(d.categories) == 1: # safety, this should always trigger + sys.stdout.write("Deleting gone directory %s\n" % (dname)) + sys.stdout.flush() + d.destroySelf()
unreadable_dirs = set()
@@ -419,7 +414,6 @@ def sync_category_directories(category, category_directories, directory_info): make_repository(D, dirpath, category, product_id, topdir) make_repomd_file_details(dirpath, D) Directory.ageFileDetails() - nuke_gone_directories(category, category_directories)
def parse_rsync_listing(category, f): @@ -589,6 +583,8 @@ def main(): excludes = i.get('excludes', []) sync_directories_from_directory(i['path'], category, excludes)
+ if options.delete_directories: + nuke_gone_directories(options.rootdir) remove_pidfile(pidfile) sys.stdout.write("Ending umdl %s\n" % (datetime.datetime.utcnow().isoformat())) sys.stdout.flush()
mirrormanager-commits@lists.fedorahosted.org