[openstack-dev] [Keystone] Domains, Projects, and Groups are all collections

Dolph Mathews dolph.mathews at gmail.com
Wed Jan 23 19:50:29 UTC 2013


Yes, they're all similar concepts, but I don't think its necessary to
denormalize their persistence. There are better opportunities for code
reuse within the SQL driver.


-Dolph


On Wed, Jan 23, 2013 at 1:31 PM, Adam Young <ayoung at redhat.com> wrote:

> As I try and rework "roles mean membership" https://review.openstack.org/#
> **/c/20278/ <https://review.openstack.org/#/c/20278/>  I am struct by the
> fact that the grants calls all are common regardless of whether they are
> group to user, group to domain, or what not.
>
> It seems to me that we could take this abstraction further, and make
> groups, domains, and projects all a single SQL entity called a collection,
> and put it into a single table.  Then, role assignments are associations
> between collections.  Each user would get an entry in the collections table
> as well.
>
> The table would basically be the projects table outline:
>
>     __tablename__ = 'collection'
>     id = sql.Column(sql.String(64), primary_key=True)
>     parent_id = sql.Column(sql.String(64), sql.ForeignKey('collection.id'*
> *), nullable=False )
>     name = sql.Column(sql.String(64), unique=True, nullable=False)
>     description = sql.Column(sql.Text())
>     enabled = sql.Column(sql.Boolean)
>     power_type = sql.Column(sql.Int)  #use ENUM type if all RDBMS support
> it
>
> power_type would be 0=user, 1=project,2=domain,3=group
>
> The user  table will still remain.  Think of the groups of type = 0 as
> groups as done in /etc/groups.
>
> I would actually prefer to call this the 'group' table instead of the
> collection table, if we can somehow deconflict the term with the way that
> keystone is presently using group.  I think  "rolegroup" is a better term.
>
> This will allow us to come up with other collection types in the future
> without having to write a whole new set of tables. It should reduce
> duplicated code.
>
> Domains will have a null parent_id. Users,  (role)groups, and projects
> will have a domain as their parent.
>
> I don't think this will impact the LDAP backend, except to reinforce that
> the groupings should all be done as groupOfNames.
>
>
> I think this work can be done under the umbrella of 20278
>
>
>
> ______________________________**_________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.**org <OpenStack-dev at lists.openstack.org>
> http://lists.openstack.org/**cgi-bin/mailman/listinfo/**openstack-dev<http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20130123/c0a19064/attachment.html>


More information about the OpenStack-dev mailing list