Issue is not reproduced on sqlite backend, which is obviously not a production one. Is reqproduced on the mysql.
I put your code (slightly modified) to LdapIdentitySqlAssignment.
self.assignment_api.create_grant(user_id=self.user_foo['id'], project_id=project['id'], role_id=self.role_member['id']) self.assignment_api.delete_grant(user_id=self.user_foo['id'], project_id=project['id'], role_id=self.role_member['id']) self.assignment_api.delete_domain(domain['id']) self.assertRaises(exception.DomainNotFound, self.assignment_api.get_domain, domain['id'])
Test pass ok
But, when I changed config keystone/tests/backend_ldap_sql.conf
#connection = sqlite://
connection = mysql://root:qwerty@127.0.0.1/keystone_test?charset=utf8
Issue was reproduced
nosetests keystone.tests.test_backend_ldap:LdapIdentitySqlAssignment.test_delete_domain_with_user_added
======================================================================
ERROR: keystone.tests.test_backend_ldap.LdapIdentitySqlAssignment.test_delete_domain_with_user_added
----------------------------------------------------------------------
_StringException: traceback-1: {{{
Traceback (most recent call last):
File "/opt/stack/keystone/keystone/tests/test_backend_ldap.py", line 965, in tearDown
sql.ModelBase.metadata.drop_all(bind=self.engine)
File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/schema.py", line 2598, in drop_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py", line 2302, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py", line 1972, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/sql/visitors.py", line 106, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/engine/ddl.py", line 130, in visit_metadata
self.traverse_single(table, drop_ok=True)
File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/sql/visitors.py", line 106, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/engine/ddl.py", line 173, in visit_table
self.connection.execute(schema.DropTable(table))
File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py", line 1449, in execute
params)
File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py", line 1542, in _execute_ddl
compiled
File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py", line 1698, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py", line 1691, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.7.9-py2.7-linux-x86_64.egg/sqlalchemy/engine/default.py", line 331, in do_execute
cursor.execute(statement, parameters)
File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute
self.errorhandler(self, exc, value)
File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
IntegrityError: (IntegrityError) (1217, 'Cannot delete or update a parent row: a foreign key constraint fails') '\nDROP TABLE domain' ()
}}}
Issue is not reproduced on sqlite backend, which is obviously not a production one. Is reqproduced on the mysql. Assignment.
I put your code (slightly modified) to LdapIdentitySql
def test_delete_ domain_ with_user_ added(self) :
'enabled' : True}
'domain_ id': domain['id'],
'descripti on': uuid.uuid4().hex, 'enabled': True
}
self.assignmen t_api.create_ domain( domain[ 'id'], domain)
self.assignmen t_api.create_ project( project[ 'id'], project) _api.get_ project( project[ 'id'])
self.assertDic tEqual( project_ ref, project)
domain = {'id': uuid.uuid4().hex, 'name': uuid.uuid4().hex,
project = {'id': uuid.uuid4().hex, 'name': uuid.uuid4().hex,
project_ref = self.assignment
Test pass ok
But, when I changed config keystone/
#connection = sqlite://
connection = mysql:/
Issue was reproduced
nosetests keystone.
=======
ERROR: keystone.
-------
_StringException: traceback-1: {{{
Traceback (most recent call last):
File "/opt/stack/
sql.
File "/usr/local/
tables=tables)
File "/usr/local/
conn.
File "/usr/local/
**kwargs)
File "/usr/local/
return meth(obj, **kw)
File "/usr/local/
self.
File "/usr/local/
return meth(obj, **kw)
File "/usr/local/
self.
File "/usr/local/
params)
File "/usr/local/
compiled
File "/usr/local/
context)
File "/usr/local/
context)
File "/usr/local/
cursor.
File "/usr/lib/
self.
File "/usr/lib/
raise errorclass, errorvalue
IntegrityError: (IntegrityError) (1217, 'Cannot delete or update a parent row: a foreign key constraint fails') '\nDROP TABLE domain' ()
}}}