Use abstract base class for identity driver

Use the abc module for managing abstract base classes in the driver
layer.

bp abstract-base-class-drivers

Change-Id: Ifc3b7c158a3a26ca0295e5e133d0108a357b1e37
Use abstract base class for trust driver

Use the abc module for managing abstract base classes in the driver
layer.

bp abstract-base-class-drivers

Change-Id: I84fa24bf636e13d39544c2a811f92f62c538b100
Use abstract base class for assignment driver

Use the abc module for managing abstract base classes in the driver
layer and add missing methods to concrete classes.

bp abstract-base-class-drivers

Change-Id: I91b20ff2f7fd591ea51da619a76044907a7f0c76
Use abstract base class for credential driver

Use the abc module for managing abstract base classes in the driver
layer.

bp abstract-base-class-drivers

Change-Id: Iae65d406bdb65f5ae0fc08f0c1d4b48890eca889
Remove unused member

keystone.assignment.backends.ldap:Assignment._identity_api was not
used, so remove it.

Change-Id: If4dc5a47c87e9aaf97e3db20a9b813ba32754bea
set user_update policy to admin_required

This changes the default policy.json to prevent users from changing
their own attributes such as password, name, or default_project_id.

Closes-Bug: 1237989
Change-Id: I7de5fff3d72a76b78113e289c57a9fac2096395f
Handle unicode at the caching layer more elegantly

This patchset resolves an issue where in some cases unicode would
cause the cache key generator to raise a UnicodeEncodeError due to
the name/value being outside of the standard ascii character set.
Included is a fix to the cache backend debug code to utilize repr
for passing the keys/values to the logger.

Tests in test_backend provided by chenxiao <chenxiao@cn.ibm.com>

Closes-bug: 1237892
Change-Id: I4df1c9eb6b4a1367defdbb6bcbcd1f1f992348e5
Merge "Use abstract base class for identity driver"
Merge "Remove unused member"
Merge "set user_update policy to admin_required"
Merge "Use abstract base class for trust driver"
Merge "Use abstract base class for assignment driver"
Fix v2 token user ref with trust impersonation=True

The v2 token controller incorrectly checks for a string instead
of a boolean, which results in the wrong user ID (trustee, when
it should be the trustor) when impersonation=True.  So fix the
comparison and tests, adding a test which illustrates the issue.

Change-Id: Ic94f30f2354c9fda20531bb598387368fde8a096
Closes-Bug: #1239303
Merge "Fix v2 token user ref with trust impersonation=True"
Merge "Use abstract base class for credential driver"
Initial KDS service

The Key Distribution Service is used to register keys for services and
distribute tickets to contact othe services.

The KDS is used to digitally sign and optionally encrypt messages sent over the
message queue by the rpc modules.

It implements the service described in this document:
https://wiki.openstack.org/wiki/MessageSecurity#A_Key_Distribution_Server_in_Keystone

DocImpact
SecurityImpact
blueprint key-distribution-server
Change-Id: Ib47aca8f72623a07ff18f23d46d0af520e463fc9
Co-Authored-By: Jamie Lennox <jamielennox@redhat.com>
Additional

Change-Id: Ia659310df117e639c47eed2f24fbb04ca7a17e2a
Group key changes

Change-Id: I21414dcbc5ff5c8c7616486d48d320b19d0b0649
Group key test fixes

Change-Id: Id9049d9a247ff0e856493d387ff7691fc760cd76