X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=modules%2Froles%2Ffiles%2Fstatic-mirroring%2Fstatic-master-run;h=95c9355a5ffc6172f550f8489a09c1ebbae47fd7;hb=5dc5997952b5754e99c246f2887057de4ad4b126;hp=e2a583e9ee4fa5a325a6271e9b3099d9daec7540;hpb=a6a56555039941b10af2d856138661f50680485b;p=mirror%2Fdsa-puppet.git diff --git a/modules/roles/files/static-mirroring/static-master-run b/modules/roles/files/static-mirroring/static-master-run index e2a583e9e..95c9355a5 100755 --- a/modules/roles/files/static-mirroring/static-master-run +++ b/modules/roles/files/static-mirroring/static-master-run @@ -9,10 +9,23 @@ import sys import tempfile import time -base="/srv/static.debian.org" serialname = '.serial' had_warnings = False +conffile = '/etc/staticsync.conf' +config={} + +with open(conffile) as f: + for line in f: + line = line.rstrip() + if not line or line.startswith("#"): continue + (name, value) = line.split("=") + config[name] = value + +for key in ('base',): + if not key in config: + raise Exception("Configuration element '%s' not found in config file %s"%(key, conffile)) + allclients = set() with open('/etc/static-clients.conf') as f: for line in f: @@ -106,7 +119,7 @@ def callout(component, serial, clients): stage2(pipes, status, 'abort', clients) return False - failedmirrorsfile = os.path.join(base, 'master', component + "-failedmirrors") + failedmirrorsfile = os.path.join(config['base'], 'master', component + "-failedmirrors") if 'failed' in cnt: log("WARNING: %d clients failed! Continuing anyway!"%(cnt['failed'],)) global had_warnings @@ -152,7 +165,7 @@ def run_mirror(component): clients = allclients - meta['extraignoreclients'] # setup - basemaster = os.path.join(base, 'master') + basemaster = os.path.join(config['base'], 'master') componentdir = os.path.join(basemaster, component) cur = componentdir + '-current-push' live = componentdir + '-current-live' @@ -161,14 +174,25 @@ def run_mirror(component): os.chmod(tmpdir_new, 0755) locks = [] - for p in (componentdir, live, tmpdir_new): - if not os.path.exists(p): os.mkdir(p, 0755) + lockfiles = [ os.path.join(basemaster, component + ".lock") ] + for p in lockfiles: fd = os.open(p, os.O_RDONLY) log("Acquiring lock for %s(%d)."%(p,fd)) fcntl.flock(fd, fcntl.LOCK_EX) locks.append(fd) log("All locks acquired.") + for p in (live, ): + if not os.path.exists(p): os.mkdir(p, 0755) + + #for p in (componentdir, live, tmpdir_new): + # if not os.path.exists(p): os.mkdir(p, 0755) + # fd = os.open(p, os.O_RDONLY) + # log("Acquiring lock for %s(%d)."%(p,fd)) + # fcntl.flock(fd, fcntl.LOCK_EX) + # locks.append(fd) + #log("All locks acquired.") + serialfile = os.path.join(componentdir, serialname) try: with open(serialfile) as f: serial = int(f.read())