From 63519a744307c2b8b063fb51002f48326a162d9a Mon Sep 17 00:00:00 2001 From: Peter Palfrader Date: Fri, 21 Jun 2013 10:48:59 +0200 Subject: [PATCH] Allow up to two failed mirrors on a mirror-run --- .../files/static-mirroring/static-master-run | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/modules/roles/files/static-mirroring/static-master-run b/modules/roles/files/static-mirroring/static-master-run index f8f2be36..d2f364d6 100755 --- a/modules/roles/files/static-mirroring/static-master-run +++ b/modules/roles/files/static-mirroring/static-master-run @@ -11,6 +11,7 @@ import time base="/srv/static.debian.org" serialname = '.serial' +had_warnings = False clients = [] with open('/etc/static-clients.conf') as f: @@ -100,11 +101,24 @@ def callout(component, serial): log("Stage 1 done.") cnt = count_statuses(status) - if 'failed' in cnt > 0: - log("Some clients failed, aborting...") + if 'failed' in cnt and cnt['failed'] >= 2: + log("%d clients failed, aborting..."%(cnt['failed'],)) stage2(pipes, status, 'abort') return False - elif 'waiting' in cnt > 0: + + failedmirrorsfile = os.path.join(base, 'master', component + "-failedmirrors") + if 'failed' in cnt: + log("WARNING: %d clients failed! Continuing anyway!"%(cnt['failed'],)) + global had_warnings + had_warnings = True + f = open(failedmirrorsfile, "w") + for c in status: + if status[c] == 'failed': f.write(c+"\n") + f.close() + else: + os.unlink(failedmirrorsfile) + + if 'waiting' in cnt: log("Committing...") stage2(pipes, status, 'go') return True @@ -160,7 +174,8 @@ def run_mirror(component): os.rename(cur, live) log("Cleaning up.") shutil.rmtree(tmpdir_old) - log("Done.") + if had_warnings: log("Done, with warnings.") + else: log("Done.") ret = True else: log("Aborted.") -- 2.39.2