commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

r6675 - in trunk/gnue-common/src/datasources/drivers/sapdb: Schema/Creat


From: johannes
Subject: r6675 - in trunk/gnue-common/src/datasources/drivers/sapdb: Schema/Creation sapdb
Date: Fri, 12 Nov 2004 08:56:41 -0600 (CST)

Author: johannes
Date: 2004-11-12 08:56:40 -0600 (Fri, 12 Nov 2004)
New Revision: 6675

Modified:
   trunk/gnue-common/src/datasources/drivers/sapdb/Schema/Creation/Creation.py
   trunk/gnue-common/src/datasources/drivers/sapdb/sapdb/Connection.py
   trunk/gnue-common/src/datasources/drivers/sapdb/sapdb/Info.py
Log:
Added database-creation support so the driver is now fully functional


Modified: 
trunk/gnue-common/src/datasources/drivers/sapdb/Schema/Creation/Creation.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/sapdb/Schema/Creation/Creation.py 
2004-11-12 09:30:23 UTC (rev 6674)
+++ trunk/gnue-common/src/datasources/drivers/sapdb/Schema/Creation/Creation.py 
2004-11-12 14:56:40 UTC (rev 6675)
@@ -21,33 +21,94 @@
 #
 # $Id$
 
+import sapdb.dbm
+
 from gnue.common.apps import errors
+from gnue.common.datasources.GLoginHandler import BasicLoginHandler
 from gnue.common.datasources.drivers.DBSIG2.Schema.Creation import \
     Creation as Base
 
 
 # =============================================================================
-#
+# This class implements the schema creation for MaxDB/SAP-DB
 # =============================================================================
 
 class Creation (Base.Creation):
 
   END_COMMAND     = ""
   MAX_NAME_LENGTH = 32
-  MAX_VARCHAR_LEN = 3999                # For ASCII type, UNICODE is 4000
+  MAX_VARCHAR_LEN = 3999
 
   # ---------------------------------------------------------------------------
-  # We cannot create a database (atm)
+  # Create a new database instance
   # ---------------------------------------------------------------------------
 
   def createDatabase (self):
     """
+    This function creates a new database instance as defined by the
+    connection's parameters. The user will be askt for a username and password
+    which is member of the SDBA group on the backend system and theirfore
+    allowed to create new instances. If the database already exists no action
+    takes place.
     """
 
-    raise errors.AdminError, \
-        u_("MaxDB/SAP-DB driver does not support database creation")
+    host     = self.connection.parameters.get ('host', 'localhost')
+    dbname   = self.connection.parameters.get ('dbname', None)
+    username = self.connection.parameters.get ('username', 'gnue')
+    password = self.connection.parameters.get ('password', 'gnue')
 
+    res = BasicLoginHandler ().getLogin (['OS User', host, \
+                                    [['_username', u_('User Name'), False],
+                                     ['_password', u_('Password'), True]]], '')
 
+    try:
+      session = sapdb.dbm.DBM (host, '', '',
+                              "%s,%s" % (res ['_username'], res ['_password']))
+
+    except sapdb.dbm.CommunicationError, err:
+      raise errors.AdminError, \
+          u_("Unable to establish session: %s") % errors.getException () [2]
+
+    try:
+      result = session.cmd ('db_enum')
+
+      for entry in result.split ('\n'):
+        if entry.split ('\t') [0] == dbname.upper ():
+          return
+
+      print o(u_("Creating database instance %s") % dbname)
+      session.cmd ("db_create %s %s,%s" % (dbname, res ['_username'],
+                                                   res ['_password']))
+
+      print o(u_("Setting up parameters ..."))
+      session.cmd ("param_startsession")
+      session.cmd ("param_init OLTP")
+      session.cmd ("param_put MAXUSERTASKS 10")
+      session.cmd ("param_put CACHE_SIZE 20000")
+      session.cmd ("param_put _UNICODE YES")
+      session.cmd ("param_checkall")
+      session.cmd ("param_commitsession")
+
+      print o(u_("Adding log- and data-volumes ..."))
+      session.cmd ("param_adddevspace 1 LOG  LOG_001 F 1000")
+      session.cmd ("param_adddevspace 1 DATA DAT_001 F 2500")
+
+      print o(u_("Entering administration mode"))
+      session.cmd ("db_admin")
+
+      print o(u_("Activating instance with initial user %s") % (username))
+      session.cmd ("db_activate %s,%s" % (username, password))
+
+      print o(u_("Loading system tables ..."))
+      session.cmd ("load_systab -ud domp")
+
+      print o(u_("Database instance created."))
+
+    finally:
+      session.release ()
+
+
+
   # ---------------------------------------------------------------------------
   # Handle special defaults
   # ---------------------------------------------------------------------------

Modified: trunk/gnue-common/src/datasources/drivers/sapdb/sapdb/Connection.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/sapdb/sapdb/Connection.py 
2004-11-12 09:30:23 UTC (rev 6674)
+++ trunk/gnue-common/src/datasources/drivers/sapdb/sapdb/Connection.py 
2004-11-12 14:56:40 UTC (rev 6675)
@@ -76,7 +76,7 @@
         if connectData.has_key (gnueName):
           options [sapdbName] = connectData [gnueName]
 
-      user   = connectData ['_username']
+      user   = connectData ['_username'].upper ()
       passwd = connectData ['_password']
       dbname = connectData ['dbname']
       host   = connectData.get ('host', '')

Modified: trunk/gnue-common/src/datasources/drivers/sapdb/sapdb/Info.py
===================================================================
--- trunk/gnue-common/src/datasources/drivers/sapdb/sapdb/Info.py       
2004-11-12 09:30:23 UTC (rev 6674)
+++ trunk/gnue-common/src/datasources/drivers/sapdb/sapdb/Info.py       
2004-11-12 14:56:40 UTC (rev 6675)
@@ -66,8 +66,5 @@
 Notes
 -----
 
-1. Creation of new database instances with 'gnue-schema --createdb' does not
-   work 
-
-2. Other than that the driver is fully functional
+1.  The driver is fully functional
 """





reply via email to

[Prev in Thread] Current Thread [Next in Thread]