← Back to team overview

openstack team mailing list archive

[keystone] IBM DB2 configuration

 

(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@xxxxxxxxxxxxx:50000/pydev')

-Dolph


On Thu, Dec 20, 2012 at 4:05 AM, Kevin-Yang <benbenzhuforever@xxxxxxxxx>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
>

Follow ups