From 6170c7695bfc3f89d4218f3087c3ac772d2e50f2 Mon Sep 17 00:00:00 2001 From: Peter Palfrader Date: Mon, 12 Mar 2012 12:06:49 +0100 Subject: [PATCH] ud-generate: Move main code into a ud_generate() --- debian/changelog | 3 +- ud-generate | 110 +++++++++++++++++++++++++---------------------- 2 files changed, 60 insertions(+), 53 deletions(-) diff --git a/debian/changelog b/debian/changelog index 95b67f2..8eb7f01 100644 --- a/debian/changelog +++ b/debian/changelog @@ -30,6 +30,7 @@ userdir-ldap (0.3.80) UNRELEASED; urgency=low * ud-generate: Move code into getLastBuildTime() and getLastLDAPChangeTime() functions. * ud-generate: Add -f option to build even if cache is current. + * ud-generate: Move main code into a ud_generate() [ Stephen Gran ] * Fix deprecation warnings for sha module by using hashlib module instead @@ -42,7 +43,7 @@ userdir-ldap (0.3.80) UNRELEASED; urgency=low * ud-replicate: set correct permissions for web-passwords * add freecdb to depends - -- Peter Palfrader Mon, 12 Mar 2012 11:55:55 +0100 + -- Peter Palfrader Mon, 12 Mar 2012 12:06:20 +0100 userdir-ldap (0.3.79) unstable; urgency=low diff --git a/ud-generate b/ud-generate index c0b6515..6362a54 100755 --- a/ud-generate +++ b/ud-generate @@ -1286,66 +1286,72 @@ def getLastBuildTime(): -parser = optparse.OptionParser() -parser.add_option("-g", "--generatedir", dest="generatedir", metavar="DIR", - help="Output directory.") -parser.add_option("-f", "--force", dest="force", action="store_true", - help="Force generation, even if not update to LDAP has happened.") - -(options, args) = parser.parse_args() -if len(args) > 0: - parser.print_help() - sys.exit(1) +def ud_generate(): + global GenerateDir + global GroupIDMap + parser = optparse.OptionParser() + parser.add_option("-g", "--generatedir", dest="generatedir", metavar="DIR", + help="Output directory.") + parser.add_option("-f", "--force", dest="force", action="store_true", + help="Force generation, even if not update to LDAP has happened.") + + (options, args) = parser.parse_args() + if len(args) > 0: + parser.print_help() + sys.exit(1) -l = make_ldap_conn() + l = make_ldap_conn() -if options.generatedir is not None: - GenerateDir = os.environ['UD_GENERATEDIR'] -elif 'UD_GENERATEDIR' in os.environ: - GenerateDir = os.environ['UD_GENERATEDIR'] + if options.generatedir is not None: + GenerateDir = os.environ['UD_GENERATEDIR'] + elif 'UD_GENERATEDIR' in os.environ: + GenerateDir = os.environ['UD_GENERATEDIR'] -ldap_last_mod = getLastLDAPChangeTime(l) -cache_last_mod = getLastBuildTime() -need_update = ldap_last_mod > cache_last_mod + ldap_last_mod = getLastLDAPChangeTime(l) + cache_last_mod = getLastBuildTime() + need_update = ldap_last_mod > cache_last_mod -if not options.force and not need_update: - fd = open(os.path.join(GenerateDir, "last_update.trace"), "w") - fd.write("%s\n%s\n" % (ldap_last_mod, int(time.time()))) - fd.close() - sys.exit(0) + if not options.force and not need_update: + fd = open(os.path.join(GenerateDir, "last_update.trace"), "w") + fd.write("%s\n%s\n" % (ldap_last_mod, int(time.time()))) + fd.close() + sys.exit(0) -# Fetch all the groups -GroupIDMap = {} -attrs = l.search_s(BaseDn, ldap.SCOPE_ONELEVEL, "gid=*",\ - ["gid", "gidNumber", "subGroup"]) - -# Generate the SubGroupMap and GroupIDMap -for x in attrs: - if x[1].has_key("accountStatus") and x[1]['accountStatus'] == "disabled": - continue - if x[1].has_key("gidNumber") == 0: - continue - GroupIDMap[x[1]["gid"][0]] = int(x[1]["gidNumber"][0]) - if x[1].has_key("subGroup") != 0: - SubGroupMap.setdefault(x[1]["gid"][0], []).extend(x[1]["subGroup"]) - -lock = None -try: - lockf = os.path.join(GenerateDir, 'ud-generate.lock') - lock = get_lock( lockf ) - if lock is None: - sys.stderr.write("Could not acquire lock %s.\n"%(lockf)) - sys.exit(1) + # Fetch all the groups + GroupIDMap = {} + attrs = l.search_s(BaseDn, ldap.SCOPE_ONELEVEL, "gid=*",\ + ["gid", "gidNumber", "subGroup"]) - tracefd = open(os.path.join(GenerateDir, "last_update.trace"), "w") - generate_all(GenerateDir, l) - tracefd.write("%s\n%s\n" % (ldap_last_mod, int(time.time()))) - tracefd.close() + # Generate the SubGroupMap and GroupIDMap + for x in attrs: + if x[1].has_key("accountStatus") and x[1]['accountStatus'] == "disabled": + continue + if x[1].has_key("gidNumber") == 0: + continue + GroupIDMap[x[1]["gid"][0]] = int(x[1]["gidNumber"][0]) + if x[1].has_key("subGroup") != 0: + SubGroupMap.setdefault(x[1]["gid"][0], []).extend(x[1]["subGroup"]) -finally: - if lock is not None: - lock.release() + lock = None + try: + lockf = os.path.join(GenerateDir, 'ud-generate.lock') + lock = get_lock( lockf ) + if lock is None: + sys.stderr.write("Could not acquire lock %s.\n"%(lockf)) + sys.exit(1) + + tracefd = open(os.path.join(GenerateDir, "last_update.trace"), "w") + generate_all(GenerateDir, l) + tracefd.write("%s\n%s\n" % (ldap_last_mod, int(time.time()))) + tracefd.close() + + finally: + if lock is not None: + lock.release() + +if __name__ == "__main__": + ud_generate() # vim:set et: -- 2.20.1