extras-buildsys/server User.py, 1.7, 1.8 main.py, 1.15, 1.16 DBManager.py, 1.3, 1.4

Daniel Williams (dcbw) fedora-extras-commits at redhat.com
Sun Nov 20 18:42:48 UTC 2005


Author: dcbw

Update of /cvs/fedora/extras-buildsys/server
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv22895/server

Modified Files:
	User.py main.py DBManager.py 
Log Message:
2005-11-20  Dan Williams  <dcbw at redhat.com>

    Patches from Jeff Sheltren <sheltren at cs.ucsb.edu>
    * server/User.py
      server/main.py
      server/DBManager.py
      utils/user-manager.py
        - Store users using same db engine as the job database

    * utils/plague-user-migration.py
        - Script to move user info from sqlite to postgres/mysql




Index: User.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/User.py,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- User.py	15 Aug 2005 03:18:20 -0000	1.7
+++ User.py	20 Nov 2005 18:42:46 -0000	1.8
@@ -15,9 +15,7 @@
 # Copyright 2005 Dan Williams <dcbw at redhat.com> and Red Hat, Inc.
 
 
-import sqlite
-
-CONFIG_LOCATION = "/etc/plague/server/"
+import DBManager
 
 class User:
     def __init__(self, email, guest):
@@ -31,54 +29,30 @@
         self.server_admin = False
 
 
-def get_userdb_dbcx():
-    try:
-        dbcx = sqlite.connect(CONFIG_LOCATION + "userdb", encoding="utf-8", timeout=4)
-        curs = dbcx.cursor()
-        return (dbcx, curs)
-    except sqlite.DatabaseError, e:
-        print "sqlite DatabaseError: %s" % str(e)
-        return (None, None)
-
 class Authenticator:
     """
     Talks to a database of users & capabilities
     """
 
-    def __init__(self, cfg):
+    def __init__(self, db_manager, cfg):
         self._cfg = cfg
-        (dbcx, curs) = get_userdb_dbcx()
-        if not dbcx or not curs:
-            print "Unable to open the user database.  Exiting..."
-            os._exit(1)
-
-        # Ensure the table exists in the database
-        create = False
-        try:
-            curs.execute('SELECT * FROM users')
-            dbcx.commit()
-        except sqlite._sqlite.DatabaseError, e:
-            create = True
-
-        if create:
-            curs.execute('CREATE TABLE users (' \
-                    'email VARCHAR(50), '       \
-                    'own_jobs BOOLEAN, '        \
-                    'job_admin BOOLEAN, '       \
-                    'user_admin BOOLEAN, '    \
-                    'server_admin BOOLEAN)')
-            dbcx.commit()
-
+        self._db_manager = db_manager
 
     def new_authed_user(self, email, client_address):
         if not email:
             return None
 
-        (dbcx, curs) = get_userdb_dbcx()
+        try:
+            dbcx = self._db_manager.dbcx()
+            curs = dbcx.cursor()
+        except StandardError, e:
+            del curs
+            del dbcx
+            print "Unable to access user database: '%s'" % str(e)
+            return None
         user = None
         curs.execute('SELECT * FROM users WHERE email="%s"' % email)
-        dbcx.commit()
-        item = curs.fetchone()
+        item = dbcx.fetchone(curs)
         if item:
             user = User(email, False)
             user.own_jobs = item['own_jobs']
@@ -88,5 +62,7 @@
         else:
             if self._cfg.get_bool("UI", "guest_allowed"):
                 user = User('guest at guest', True)
+        del curs
+        del dbcx
         return user
 


Index: main.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/main.py,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- main.py	27 Oct 2005 14:34:35 -0000	1.15
+++ main.py	20 Nov 2005 18:42:46 -0000	1.16
@@ -41,9 +41,9 @@
     SSL XMLRPC server that authenticates clients based on their certificate.
     """
 
-    def __init__(self, address, certs, cfg):
+    def __init__(self, address, certs, db_manager, cfg):
         AuthedXMLRPCServer.AuthedSSLXMLRPCServer.__init__(self, address, self.auth_cb, certs)
-        self.authenticator = User.Authenticator(cfg)
+        self.authenticator = User.Authenticator(db_manager, cfg)
 
     def auth_cb(self, request, client_address):
         peer_cert = request.get_peer_certificate()
@@ -115,7 +115,7 @@
             ui_certs['ca_cert'] = cfg.get_str("SSL", "ca_cert")
             ui_certs['peer_ca_cert'] = cfg.get_str("UI", "client_ca_cert")
             ui = UserInterfaceSSLAuth(builder_manager, bm, dbm, cfg)
-            bm_server = AuthenticatedSSLXMLRPCServer((hostname, port), ui_certs, cfg)
+            bm_server = AuthenticatedSSLXMLRPCServer((hostname, port), ui_certs, dbm, cfg)
         else:
             ui = UserInterfaceNoAuth(builder_manager, bm, dbm, cfg)
             bm_server = AuthedXMLRPCServer.AuthedXMLRPCServer((hostname, port))


Index: DBManager.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/DBManager.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DBManager.py	24 Oct 2005 15:34:05 -0000	1.3
+++ DBManager.py	20 Nov 2005 18:42:46 -0000	1.4
@@ -365,3 +365,22 @@
                 print "Could not access the job database.  Reason: '%s'.  Exiting..." % e
                 os._exit(1)
 
+        # Create the users table
+        try:
+            curs.execute('SELECT * FROM users LIMIT 4')
+        except Exception, e:
+            # If table wasn't created, try to create it
+            try:
+                dbcx.commit()
+                curs.execute('CREATE TABLE users ('  \
+                    'email VARCHAR(50) PRIMARY KEY, '   \
+                    'own_jobs BOOLEAN, '                \
+                    'job_admin BOOLEAN, '               \
+                    'user_admin BOOLEAN, '              \
+                    'server_admin BOOLEAN'              \
+                    ')')
+                dbcx.commit()
+            except StandardError, e:
+                print "Could not access the user database.  Reason: '%s'.  Exiting..." % e
+                os._exit(1)
+




More information about the fedora-extras-commits mailing list