[openstack-dev] [Keystone] Domain and Project naming
Adam Young
ayoung at redhat.com
Fri Jun 5 23:20:28 UTC 2015
On 06/04/2015 10:49 PM, Dolph Mathews wrote:
>
>
> On Wed, Jun 3, 2015 at 11:25 PM, Adam Young <ayoung at redhat.com
> <mailto:ayoung at redhat.com>> wrote:
>
> With Hierarchical Multitenantcy, we have the issue that a project
> is currentl restricted in its naming further than it should be.
> The domain entity enforces that all project namess under the
> domain domain be unique, but really what we should say is that all
> projects under a single parent project be unique. However, we
> have, at present, an API which allows a user to specify the domain
> either name or id and project again, either by name or ID, but
> here we care only about the name. This can be used either in
> specifying the token, or in operations ion the project API.
>
> We should change projec naming to be nestable, and since we don't
> have a delimiter set, we should expect the names to be an array,
> where today we might have:
>
> "project": {
> "domain": {
> "id": "1789d1",
> "name": "example.com <http://example.com>"
> },
> "id": "263fd9",
> "name": "project-x"
> }
>
> we should allow and expect:
>
> "project": {
> "domain": {
> "id": "1789d1",
> "name": "example.com <http://example.com>"
> },
> "id": "263fd9",
> "name": [ "grandpa", "dad", "daughter"]
> }
>
>
> What is the actual project name here,
In Python and JSON it is
[ "grandpa", "dad", "daughter"]
> and how do I specify it using my existing OS_PROJECT_NAME environment
> variable?
Probalby the simplest would be to quote it, and use single quotes for
the inner strings like this:
"[ 'grandpa', 'dad', 'daughter']"
for person in "[ 'grandpa', 'dad', 'daughter']" ; do echo $person; done
[ 'grandpa', 'dad', 'daughter']
For the CLI, it might be possible to specify multiple values such as
--os-project-name= "grandpa" "dad" "daughter"
or
--os-project-name= "grandpa" --os-project-name="dad"
--os-project-name="daughter"
>
> This will, of course, break Horizon and lots of other things,
> which means we need a reasonable way to display these paths. The
> typical UI approach is a breadcrumb trail, and I think something
> where we put the segments of the path in the UI, each clickable,
> should be understandable: I'll defer to the UX experts if this is
> reasonable or not.
>
> The alternative is that we attempt to parse the project names.
> Since we have not reserved a delimeter, we will break someone
> somewhere if we force one on people.
>
>
> As an alternative, we should start looking in to following DNS
> standards for naming projects and hosts. While a domain should
> not be required to be a DNS registred domain name, we should allow
> for the case where a user wants that to be the case, and to
> synchronize nam,ing across multiple clouds. In order to enforce
> this, we would have to have an indicator on a domain name that it
> has been checked with DNS; ideally, the user would add a special
> SRV or Text record or something that Keystone could use to confirm
> that the user has oked this domain name being used by this
> cloud...or something perhaps with DNSSEC, checking that auser has
> permission to assign a specific domain name to a set of resources
> in the cloud. If we do that, the projects under that domain
> should also be valid DNS subzones, and the hosts either FQDNs or
> some alternate record...this would tie in Well with Designate.
>
> Note that I am not saying "force this" but rather "allow this" as
> it will simplify the naming when bursting from cloud to cloud:
> the Domain and project names would then be synchronized via DNS
> regardless of hosting provider.
>
> As an added benefit, we could provide a SRV or TEXT record (or
> some new URL type..I heard one is coming) that describes where to
> find the home Keystone server for a specified domain...it would
> work nicely with the K2K strategy.
>
> If we go with DNS project naming, we can leave all project names
> in a flat string.
>
>
> Note that the DNS approach can work even if the user does not wish
> to register their own DNS. A hosting provider (I'll pick
> dreamhost, cuz I know they are listening) could say the each of
> their tenants picks a user name...say that mine i admiyo, they
> would then create a subdomain of admiyo.dreamcompute.dreamhost.com
> <http://admiyo.dreamcompute.dreamhost.com>. All of my subprojects
> would then get additional zones under that. If I were then to
> burst from there to Bluebox, the Keystone domain name would be the
> one that I was assigned back at Dreamhost.
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe:
> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> <http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe>
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
>
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> 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/20150605/0d2b382c/attachment.html>
More information about the OpenStack-dev
mailing list