[Top][All Lists]
[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
"""
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- r6675 - in trunk/gnue-common/src/datasources/drivers/sapdb: Schema/Creation sapdb,
johannes <=