Remove backend dependency on core

Bug #1563101 reported by Ron De Rose
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Identity (keystone)
Fix Released
Medium
Ron De Rose

Bug Description

Remove dependencies where backend code references code in the core. For example, identity backends imports identity:
https://github.com/openstack/keystone/blob/stable/mitaka/keystone/identity/backends/sql.py#L24

The reasoning being that the core should know about the backend interface, but the backends should not know anything about the core (separation of concerns).

And part of the risk here is a potential for circular dependencies. Backend code could reference code in the core, as well as other higher level modules inside identity; thus, creating a circular dependency.

Changed in keystone:
assignee: nobody → Ron De Rose (ronald-de-rose)
Changed in keystone:
status: New → In Progress
description: updated
description: updated
Revision history for this message
Brant Knudson (blk-u) wrote :

The core shouldn't know about the backends. Each backend is optional so the backend might not even be available.

Changed in keystone:
status: In Progress → Opinion
Changed in keystone:
status: Opinion → In Progress
description: updated
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to keystone (master)

Fix proposed to branch: master
Review: https://review.openstack.org/299635

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to keystone (master)

Reviewed: https://review.openstack.org/296140
Committed: https://git.openstack.org/cgit/openstack/keystone/commit/?id=5107da7610ef8afbc5802f79e8d1a48c8c6deb77
Submitter: Jenkins
Branch: master

commit 5107da7610ef8afbc5802f79e8d1a48c8c6deb77
Author: Ronald De Rose <email address hidden>
Date: Wed Mar 23 01:32:20 2016 +0000

    Remove backend interface and common code out of identity.core

    This removes dependencies where backend code references code in the
    core. The reasoning being that the core should know about the backend
    interface, but the backends should not know anything about the core
    (separation of concerns). And part of the risk here is a potential for
    circular dependencies.

    - Moved the filter_user method to backends/base.py. This method is
    only used by the backends.

    - Moved the interfaces (base) to modules inside the backends. Interfaces
    should be closer to the code that implements them and again, wanted to
    remove the dependency where the backends were referencing code in the
    core.

    Partial-Bug: #1563101

    Change-Id: I5ff9c4e4b6d64750f5db2a73cc4317358aea0649

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to keystone (master)

Fix proposed to branch: master
Review: https://review.openstack.org/302826

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to keystone (master)

Reviewed: https://review.openstack.org/302317
Committed: https://git.openstack.org/cgit/openstack/keystone/commit/?id=b316b141385345dea3a89ad69f9d54ae1dbd02fd
Submitter: Jenkins
Branch: master

commit b316b141385345dea3a89ad69f9d54ae1dbd02fd
Author: Ronald De Rose <email address hidden>
Date: Wed Apr 6 15:23:12 2016 +0000

    Dev doc update for moving abstract base classes out of core

    As part of an effort to remove backend dependencies on higher level
    classes, this patch updates the dev docs, defining a standard as to
    where abstract base classes are located and named.

    Partial-Bug: #1563101

    Change-Id: I784e344f333ee616bda800f63af0b1c149a529f3

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to keystone (master)

Fix proposed to branch: master
Review: https://review.openstack.org/309238

Changed in keystone:
assignee: Ron De Rose (ronald-de-rose) → Brant Knudson (blk-u)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to keystone (master)

Reviewed: https://review.openstack.org/307379
Committed: https://git.openstack.org/cgit/openstack/keystone/commit/?id=92ece11d01f52e3e7b3c7aad20b63604cdea064d
Submitter: Jenkins
Branch: master

commit 92ece11d01f52e3e7b3c7aad20b63604cdea064d
Author: Samuel de Medeiros Queiroz <email address hidden>
Date: Mon Apr 18 14:06:13 2016 -0300

    Restructure policy abstract driver

    Change I5ff9c4e4b6d64750f5db2a73cc4317358aea0649 restructured the
    identity subsystem. As part of the change, the abstract driver
    was extracted to identity/backends/base.py

    This change does the same for the policy subsystem.

    Partial-Bug: 1563101
    Change-Id: Id2a6e9d43724a7ffe95f097a9876b2320f8f01f8

Changed in keystone:
assignee: Brant Knudson (blk-u) → Ron De Rose (ronald-de-rose)
Changed in keystone:
importance: Undecided → Medium
milestone: none → newton-1
Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Reviewed: https://review.openstack.org/302826
Committed: https://git.openstack.org/cgit/openstack/keystone/commit/?id=d1591b56b50f11864d340407b3030366da2a9ae3
Submitter: Jenkins
Branch: master

commit d1591b56b50f11864d340407b3030366da2a9ae3
Author: Ronald De Rose <email address hidden>
Date: Thu Apr 7 14:51:31 2016 +0000

    Move the resource abstract base class out of core

    This patch moves the resource abstract base class and other backend
    code out of core and into backends/base.py

    This removes dependencies where backend code references code in the
    core. The reasoning being that the core should know about the backend
    interface, but the backends should not know anything about the core
    (separation of concerns). And part of the risk here is a potential for
    circular dependencies.

    Partial-Bug: #1563101

    Change-Id: Id14d698fa7e083e72c463732e227726448a86f6d

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Reviewed: https://review.openstack.org/309238
Committed: https://git.openstack.org/cgit/openstack/keystone/commit/?id=2963dc152560c22c672b840c5e98a01a15fb083c
Submitter: Jenkins
Branch: master

commit 2963dc152560c22c672b840c5e98a01a15fb083c
Author: Ronald De Rose <email address hidden>
Date: Fri Apr 22 02:00:28 2016 +0000

    Move the catalog abstract base class and common code out of core

    This patch moves the catalog abstract base class and common code
    out of core, and into backends/base.py

    This removes dependencies where backend code references code in the
    core. The reasoning being that the core should know about the backend
    interface, but the backends should not know anything about the core
    (separation of concerns). And part of the risk here is a potential for
    circular dependencies.

    Change-Id: I87edf8cf660fabbc7253e6b1abc7354eef34151d
    Partial-Bug: #1563101

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to keystone (master)

Fix proposed to branch: master
Review: https://review.openstack.org/314137

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to keystone (master)

Reviewed: https://review.openstack.org/299635
Committed: https://git.openstack.org/cgit/openstack/keystone/commit/?id=bdeee9cc15341566676d1824c200918b50034887
Submitter: Jenkins
Branch: master

commit bdeee9cc15341566676d1824c200918b50034887
Author: Ronald De Rose <email address hidden>
Date: Wed Mar 30 21:19:40 2016 +0000

    Move the assignment abstract base class out of core

    This patch moves the assignment abstract base class out of core and into
    backends/base.py

    This removes dependencies where backend code references code in the
    core. The reasoning being that the core should know about the backend
    interface, but the backends should not know anything about the core
    (separation of concerns). And part of the risk here is a potential for
    circular dependencies.

    Partial-Bug: #1563101

    Change-Id: Ie507b61044ad32ecaac26901c1bcd0a0c17bd381

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Reviewed: https://review.openstack.org/314137
Committed: https://git.openstack.org/cgit/openstack/keystone/commit/?id=86d037f32c0eba17d4e3f5e0bcfa381c6ad47bb8
Submitter: Jenkins
Branch: master

commit 86d037f32c0eba17d4e3f5e0bcfa381c6ad47bb8
Author: Ronald De Rose <email address hidden>
Date: Mon May 9 14:42:26 2016 +0000

    Move the federation abstract base class out of core

    This patch moves the federation abstract base class out of core and into
    backends/base.py

    This removes dependencies where backend code references code in the
    core. The reasoning being that the core should know about the backend
    interface, but the backends should not know anything about the core
    (separation of concerns). And part of the risk here is a potential for
    circular dependencies.

    Partial-Bug: #1563101

    Change-Id: I3304f9c1fafe42cfe955f44224703ace82ae185a

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to keystone (master)

Fix proposed to branch: master
Review: https://review.openstack.org/317045

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to keystone (master)

Reviewed: https://review.openstack.org/317045
Committed: https://git.openstack.org/cgit/openstack/keystone/commit/?id=a9d2daace2ee29caae7bd62abcd37779f317f0db
Submitter: Jenkins
Branch: master

commit a9d2daace2ee29caae7bd62abcd37779f317f0db
Author: Ronald De Rose <email address hidden>
Date: Mon May 16 18:36:50 2016 +0000

    Move the oauth1 abstract base class out of core

    This patch moves the oauth1 abstract base class out of core and into
    backends/base.py

    This removes dependencies where backend code references code in the
    core. The reasoning being that the core should know about the backend
    interface, but the backends should not know anything about the core
    (separation of concerns). And part of the risk here is a potential for
    circular dependencies.

    Partial-Bug: #1563101

    Change-Id: I730798c71a6e8be8f32edd5bddb9e86cabd6ff65

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to keystone (master)

Fix proposed to branch: master
Review: https://review.openstack.org/317784

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to keystone (master)

Reviewed: https://review.openstack.org/317784
Committed: https://git.openstack.org/cgit/openstack/keystone/commit/?id=47529d0e3219028c8c5a0dd50382cdb395c1b467
Submitter: Jenkins
Branch: master

commit 47529d0e3219028c8c5a0dd50382cdb395c1b467
Author: Ronald De Rose <email address hidden>
Date: Wed May 18 00:17:52 2016 +0000

    Move the revoke abstract base class out of core

    This patch moves the revoke abstract base class out of core and into
    backends/base.py

    This removes dependencies where backend code references code in the
    core. The reasoning being that the core should know about the backend
    interface, but the backends should not know anything about the core
    (separation of concerns). And part of the risk here is a potential for
    circular dependencies.

    Partial-Bug: #1563101

    Change-Id: I0550e0fedfb28b16e9803d225df4d2337e6c65e6

Changed in keystone:
milestone: newton-1 → newton-2
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to keystone (master)

Fix proposed to branch: master
Review: https://review.openstack.org/339112

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Fix proposed to branch: master
Review: https://review.openstack.org/339133

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Fix proposed to branch: master
Review: https://review.openstack.org/339142

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Fix proposed to branch: master
Review: https://review.openstack.org/339152

description: updated
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to keystone (master)

Reviewed: https://review.openstack.org/339112
Committed: https://git.openstack.org/cgit/openstack/keystone/commit/?id=5d707d510daa7ae0784fffd2cf45a9ee8906821f
Submitter: Jenkins
Branch: master

commit 5d707d510daa7ae0784fffd2cf45a9ee8906821f
Author: Ronald De Rose <email address hidden>
Date: Thu Jul 7 16:19:28 2016 +0000

    Move the auth plugins abstract base class out of core

    This patch moves the auth plugins abstract base class out of core and
    into plugins/base.py

    This removes dependencies where backend code references code in the
    core. The reasoning being that the core should know about the backend
    interface, but the backends should not know anything about the core
    (separation of concerns). And part of the risk here is a potential for
    circular dependencies.

    Partial-Bug: #1563101

    Change-Id: I4413ef01523d02c30af97e306069229252cb4971

Changed in keystone:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Reviewed: https://review.openstack.org/339152
Committed: https://git.openstack.org/cgit/openstack/keystone/commit/?id=9f5ed12c1142b5949288adb42d03b32386fc355a
Submitter: Jenkins
Branch: master

commit 9f5ed12c1142b5949288adb42d03b32386fc355a
Author: Ronald De Rose <email address hidden>
Date: Thu Jul 7 17:17:47 2016 +0000

    Doc update for moving abstract base classes out of core

    This patch updates the service backends documentation, updating the
    location for the abstract base classes (out of core and into
    backends.base).

    Closes-Bug: #1563101

    Change-Id: I0b4ce448ba94ec09294b07f704ee07d433049ac8

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Reviewed: https://review.openstack.org/339142
Committed: https://git.openstack.org/cgit/openstack/keystone/commit/?id=5f1eae16509c23ec80d9cc1e3c4912dbb0b67c5b
Submitter: Jenkins
Branch: master

commit 5f1eae16509c23ec80d9cc1e3c4912dbb0b67c5b
Author: Ronald De Rose <email address hidden>
Date: Thu Jul 7 17:09:23 2016 +0000

    Move the trust abstract base class out of core

    This patch moves the trust abstract base class out of core and
    into backends/base.py

    This removes dependencies where backend code references code in the
    core. The reasoning being that the core should know about the backend
    interface, but the backends should not know anything about the core
    (separation of concerns). And part of the risk here is a potential for
    circular dependencies.

    Partial-Bug: #1563101

    Change-Id: Ibe9203635ee4ad5d1afee3ad751f04de6ef66f94

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Reviewed: https://review.openstack.org/339133
Committed: https://git.openstack.org/cgit/openstack/keystone/commit/?id=093f2c207bd3ae6d09e0cef8210a0215486a4f82
Submitter: Jenkins
Branch: master

commit 093f2c207bd3ae6d09e0cef8210a0215486a4f82
Author: Ronald De Rose <email address hidden>
Date: Thu Jul 7 16:50:15 2016 +0000

    Move the credential abstract base class out of core

    This patch moves the credential abstract base class out of core and
    into backends/base.py

    This removes dependencies where backend code references code in the
    core. The reasoning being that the core should know about the backend
    interface, but the backends should not know anything about the core
    (separation of concerns). And part of the risk here is a potential for
    circular dependencies.

    Partial-Bug: #1563101

    Change-Id: I4007a5fe05e61f08999a4b3f6801727c08aaaa14

Revision history for this message
Davanum Srinivas (DIMS) (dims-v) wrote : Fix included in openstack/keystone 10.0.0.0b2

This issue was fixed in the openstack/keystone 10.0.0.0b2 development milestone.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to keystone (master)

Fix proposed to branch: master
Review: https://review.openstack.org/386102

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to keystone (master)

Reviewed: https://review.openstack.org/386102
Committed: https://git.openstack.org/cgit/openstack/keystone/commit/?id=d49f2b1e6432ff82601822d4f9d1ae97eeca2daa
Submitter: Jenkins
Branch: master

commit d49f2b1e6432ff82601822d4f9d1ae97eeca2daa
Author: Ronald De Rose <email address hidden>
Date: Thu Oct 13 17:26:27 2016 +0000

    Move the token abstract base class out of core

    This patch moves the token abstract base class out of core and
    into providers/base.py, which is consistent with the other
    backend drivers.

    Change-Id: Icf22adb2ccfa0470bb61ceb7d6c90467f44da6c8
    Closes-Bug: #1563101

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Reviewed: https://review.openstack.org/386136
Committed: https://git.openstack.org/cgit/openstack/keystone/commit/?id=980554a8ab337c43647301a1ade7ee83472f70d7
Submitter: Jenkins
Branch: master

commit 980554a8ab337c43647301a1ade7ee83472f70d7
Author: Ronald De Rose <email address hidden>
Date: Thu Oct 13 18:34:55 2016 +0000

    Remove backend dependencies from token provider

    The token provider module (core) has a list of methods that are called
    by backend modules. This patch moves those methods to the backend and
    removes dependencies where backend code references code in the core.

    Change-Id: I59dab2efc5b743508ee9ecebcdc7c07b9f66791d
    Closes-Bug: #1563101

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/keystone 11.0.0.0b1

This issue was fixed in the openstack/keystone 11.0.0.0b1 development milestone.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.