[Openstack] [keystone] IBM DB2 configuration

Adam Young ayoung at redhat.com
Thu Dec 20 19:16:12 UTC 2012


What I think we need is a simple way to run our current body of unit 
tests, to include the sql Migration tests, against a Live database, 
kindof the same way as I have et up for the live LDAP test.

The steps:

create a file under keystone/tests  that doesn't trigger the nameing 
scheme that matches for unit tests.  Since I use _ldap_livetest.py  for 
LDAP,  I would recommend _db_livetests.py.

That should then import test_backend_sql and test_sql upgrade. They 
would pull in a custom config file that is .gitignored but that has the 
DB connection info for DB2 etc.  We could post sample ones for 
smokestack etc to pull in for integration testing.

A user then could run against those test  with ./run_tests.sh -x 
_db_livetests





On 12/20/2012 11:55 AM, Dolph Mathews wrote:
> (raising to the mailing list)
>
> Which DB2 driver are you using? I was referring to: 
> http://code.google.com/p/ibm-db/wiki/README
>
> ... which shows an example connection string for sqlalchemy as:
>
> >>> db2 = 
> sqlalchemy.create_engine('ibm_db_sa://db2inst1:secret@host.name.com:50000/pydev 
> <http://db2inst1:secret@host.name.com:50000/pydev>')
>
> -Dolph
>
>
> On Thu, Dec 20, 2012 at 4:05 AM, Kevin-Yang 
> <benbenzhuforever at gmail.com <mailto:benbenzhuforever at gmail.com>> wrote:
>
>     Dolph,
>
>     Really appreciated for your response.
>
>     My VM configuration is:
>
>     OS ->
>     Red Hat Enterprise Linux Server release 6.3 (Santiago)
>
>     DB2 ->
>     Informational tokens are "DB2 v9.7.0.0", "s090521",
>     "LINUXAMD6497", and Fix
>     Pack "0"
>     ibm_db ->
>     http://pypi.python.org/packages/source/i/ibm_db/ibm_db-2.0.0.tar.gz#md5=709c576c0ec2379ca15049f5c861beb1
>     ibm_db_sa ->
>
>     When i changed from "ibmdb" -> "ibm_db_sa", I came with a
>     different error -> Could not determine dialect for 'ibm_db_sa'.
>     ##################################################################################
>     Traceback (most recent call last):
>       File "/usr/local/bin/keystone-manage", line 5, in <module>
>         pkg_resources.run_script('keystone==2012.2', 'keystone-manage')
>       File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 499,
>     in run_script
>       File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 1239,
>     in run_script
>       File
>     "/usr/local/lib/python2.7/site-packages/keystone-2012.2-py2.7.egg/EGG-INFO/scripts/keystone-manage",
>     line 28, in <module>
>         cli.main(argv=sys.argv, config_files=config_files)
>       File
>     "/usr/local/lib/python2.7/site-packages/keystone-2012.2-py2.7.egg/keystone/cli.py",
>     line 164, in main
>         return run(cmd, (args[:1] + args[2:]))
>       File
>     "/usr/local/lib/python2.7/site-packages/keystone-2012.2-py2.7.egg/keystone/cli.py",
>     line 147, in run
>         return CMDS[cmd](argv=args).run()
>       File
>     "/usr/local/lib/python2.7/site-packages/keystone-2012.2-py2.7.egg/keystone/cli.py",
>     line 35, in run
>         return self.main()
>       File
>     "/usr/local/lib/python2.7/site-packages/keystone-2012.2-py2.7.egg/keystone/cli.py",
>     line 56, in main
>         driver.db_sync()
>       File
>     "/usr/local/lib/python2.7/site-packages/keystone-2012.2-py2.7.egg/keystone/identity/backends/sql.py",
>     line 136, in db_sync
>         migration.db_sync()
>       File
>     "/usr/local/lib/python2.7/site-packages/keystone-2012.2-py2.7.egg/keystone/common/sql/migration.py",
>     line 49, in db_sync
>         current_version = db_version()
>       File
>     "/usr/local/lib/python2.7/site-packages/keystone-2012.2-py2.7.egg/keystone/common/sql/migration.py",
>     line 61, in db_version
>         return versioning_api.db_version(CONF.sql.connection, repo_path)
>       File "<string>", line 2, in db_version
>       File
>     "/usr/local/lib/python2.7/site-packages/migrate/versioning/util/__init__.py",
>     line 155, in with_engine
>         engine = construct_engine(url, **kw)
>       File
>     "/usr/local/lib/python2.7/site-packages/migrate/versioning/util/__init__.py",
>     line 140, in construct_engine
>         return create_engine(engine, **kwargs)
>       File
>     "build/bdist.linux-x86_64/egg/sqlalchemy/engine/__init__.py", line
>     338, in create_engine
>       File
>     "build/bdist.linux-x86_64/egg/sqlalchemy/engine/strategies.py",
>     line 50, in create
>       File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/url.py",
>     line 123, in get_dialect
>
>     sqlalchemy.exc.ArgumentError: Could not determine dialect for
>     'ibm_db_sa'.
>     ##################################################################################
>
>     --
>     You received this bug notification because you are a bug assignee.
>     https://bugs.launchpad.net/bugs/987121
>
>     Title:
>       strict constraint for database table creation
>
>     Status in OpenStack Identity (Keystone):
>       Fix Released
>
>     Bug description:
>       OpenStack claims that any type of database supporting SQLAlchemy
>     can be taken as the database for OpenStack use.
>       In some databases, if a column is defined as UNIQUE, it must be
>     specified NOT NULL at the same time, e.g. IBM DB2, which is
>     SQLAlchemy supporting. I am doing some tests with DB2 now.
>       For the tables TENANT, USER and ROLE, they all have the column
>     NAME, but they don't define this column NOT NULL. For database
>     like MYSQL, it is permitted and keystone-manage db_sync works
>     well. However, for database with strict constrains, like IBM DB2,
>     this is not allowed. Running keystone-manage db_sync will prompt
>     the error, which tells me UNIQUE and NOT NULL must be specified
>     for the column NAME.
>       Suggestion:
>       In the code keystone/identity/backends/sql.py, we have
>       name = sql.Column(sql.String(64), unique=True)
>
>       If we change it into
>       name = sql.Column(sql.String(64), unique=True, nullable=False),
>       this issue will be solved.
>
>     To manage notifications about this bug go to:
>     https://bugs.launchpad.net/keystone/+bug/987121/+subscriptions
>
>
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~openstack
> Post to     : openstack at lists.launchpad.net
> Unsubscribe : https://launchpad.net/~openstack
> More help   : https://help.launchpad.net/ListHelp

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20121220/bf8f001b/attachment.html>


More information about the Openstack mailing list