]> git.decadent.org.uk Git - dak.git/blobdiff - dak/import_users_from_passwd.py
Merge remote-tracking branch 'nthykier/auto-decruft'
[dak.git] / dak / import_users_from_passwd.py
index 07c6193aede7a23c8efaf8e7765a8d023d870d58..ae99ef9094db7d8601202a79d47a2e09debd7471 100755 (executable)
@@ -63,8 +63,8 @@ def main ():
         if not cnf.has_key("Import-Users-From-Passwd::Options::%s" % (i)):
             cnf["Import-Users-From-Passwd::Options::%s" % (i)] = ""
 
-    arguments = apt_pkg.ParseCommandLine(cnf.Cnf, Arguments, sys.argv)
-    Options = cnf.SubTree("Import-Users-From-Passwd::Options")
+    arguments = apt_pkg.parse_commandline(cnf.Cnf, Arguments, sys.argv)
+    Options = cnf.subtree("Import-Users-From-Passwd::Options")
 
     if Options["Help"]:
         usage()
@@ -99,8 +99,9 @@ def main ():
     keys = postgres_unames.keys()
     keys.sort()
     for uname in keys:
-        if not passwd_unames.has_key(uname)and not known_postgres_unames.has_key(uname):
-            print "W: %s is in Postgres but not the passwd file or list of known Postgres users." % (uname)
+        if not passwd_unames.has_key(uname) and not known_postgres_unames.has_key(uname):
+            print "I: Deleting %s from Postgres, no longer in passwd or list of known Postgres users" % (uname)
+            q = session.execute('DROP USER "%s"' % (uname))
 
     keys = passwd_unames.keys()
     keys.sort()
@@ -114,7 +115,12 @@ def main ():
                     # NB: I never figured out how to use a bind parameter for this query
                     # XXX: Fix this as it looks like a potential SQL injection attack to me
                     #      (hence the safe_name match we do)
-                    q = session.execute('CREATE USER "%s"' % (uname))
+                    try:
+                        q = session.execute('CREATE USER "%s"' % (uname))
+                        session.commit()
+                    except Exception as e:
+                        utils.warn("Could not create user %s (%s)" % (uname, str(e)))
+                        session.rollback()
                 else:
                     print "NOT CREATING USER %s.  Doesn't match safety regex" % uname