> On 14 Jun 2016, at 07:34, Morgan Fainberg <morgan.fainb...@gmail.com> wrote: > > > > On Mon, Jun 13, 2016 at 3:30 PM, Henry Nash <henryna...@mac.com > <mailto:henryna...@mac.com>> wrote: > So, I think it depends what level of compatibility we are aiming at. Let me > articulate them, and we can agree which we want: > > C1) In all version of the our APIs today (v2 and v3.0 to v3.6), you have been > able to issue an auth request which used project/tenant name as the scoping > directive (with v3 you need a domain component as well, but that’s not > relevant for this discussion). In these APIs, we absolutely expect that if > you could issue an auth request to. say project “test”, in, say, v3.X, then > you could absolutely issue the exact same command at V3.(X+1). This has > remained true, even when we introduced project hierarchies, i.e.: if I create: > > /development/myproject/test > > ...then I can still scope directly to the test project by simply specifying > “test” as the project name (since, of course, all project names must still be > unique in the domain). We never want to break this for so long as we formally > support any APIs that once allowed this. > > C2) To aid you issuing an auth request scoped by project (either name or id), > we support a special API as part of the auth url (GET/auth/projects) that > lists the projects the caller *could* scope to (i.e. those they have any kind > of role on). You can take the “name” or “id” returned by this API and plug it > directly into the auth request. Again for any API we currently support, we > can’t break this. > > C3) The name attribute of a project is its node-name in the hierarchy. If we > decide to change this in a future API, we would not want a client using the > existing API to get surprised and suddenly receive a path instead of the just > the node-name (e.g. what if this was a UI of some type). > > Given all the above, there is no solution that can keep the above all true > and allow more than one project of the same name in, say, v3.7 of the API. > Even if we relaxed C2 and C2 - C1 can never be guaranteed to be still > supported. Neither of the original proposed solutions can address this (since > it is a data modelling problem, not an API problem). > > However, given that we will have, for the first time, the ability to > microversion the Identity API starting with 3.7, there are things we can do > to start us down this path. Let me re-articulate the options I am proposing: > > Option 1A) In v3.7 we add a ‘path_name' attribute to a project entity, which > is hence returned by any API that returns a project entity. The ‘path_name' > attribute will contain the full path name, including the project itself. > (Note that clients speaking 3.6 and earlier will not see this new attribute). > Further, for clients speaking 3.7 and later, we add support to allow a > ‘path_name' (as an alternative to ‘name' or ‘id') to be used in auth scoping. > We do not (yet) relax any uniqueness constraints, but mark API 3.6 and > earlier as deprecated, as well as using the ‘name’ attribute in the auth > request. (we still support all these, we just mark them as deprecated). At > some time in the future (e.g. 3.8), we remove support for using ‘name’ for > auth, insisting on the use of ‘path_name’ instead. Sometime later (e.g. 3.10) > we remove support for 3.8 and earlier. Then and only then, do we relax the > uniqueness constraint allowing projects with duplicate node-names (but with > different parents). > > Option 1B) The same as 1A, but we insist on path_name use in auth in v3.7 > (i.e. no grace-period for still using just ’name', instead relying on the > fact that 3.6 clients will still work just fine). Then later (e.g. perhaps > v3.9), we remove support for v3.6 and before…and relax the uniqueness > constraint. > > > Let say the assumption that we are "removing" 3.6 should be stopped right > now. I don't want to embark on the "when we remove this" as an option or > discuss how we remove previous versions. Please lets assume for the sake of > this conversation unless we have a major API version increase (API v4 and do > not expose v4 projects via v3 API) this is unlikely happen. Deprecated or > not, planning the removal of current supported API auth functionality is not > on the table. In v3 we are not going to "relax" the uniqueness constraint in > the foreseeable future. Just assume v3.6 is going to live forever for now and > we can revisit when/if limits on microversion lower bounds is addressed in > OpenStack with TC direction/guidance.
Why should we not be able to remove a microversion (once keystone properly supports microversioning, as we will in 3.7)? The cross project guidelines (see: https://specs.openstack.org/openstack/api-wg/guidelines/microversion_specification.html <https://specs.openstack.org/openstack/api-wg/guidelines/microversion_specification.html>), clearly gives example of how we would support the dropping of support for earlier microversions. If there is a TC resolution that has changed this, then disregard this comment - but it’s not something I’ve been aware of (and we should probably change the documentation on microversions if that’s the case) > > Option 2A) In 3.7 the meaning of the ‘name' attribute of project entity is > redefined to be the full path name (note that clients speaking 3.6 will > continue to see ’name’ just be the node-name without a path). We do not (yet) > relax any uniqueness constraints. For clients speaking 3.7 and later, we > return the full path name where the project entity ‘name’ attribute is > returned. For auth, we allow a full path name to specified in the ‘name’ > scope attribute - but we also still support just a name without a path (which > we can guarantee to honour, since, so far, we haven’t relaxed the uniqueness > constraint - however we mark that support as deprecated). At some time in the > future (e.g. 3.8), we remove support for using an un-pathed ‘name’ for auth. > Sometime later (e..g. 3.10) we remove support for 3.8 and earlier. Then and > only then, do we relax the uniqueness constraint allowing projects with > duplicate node-names (but with different parents). > > Option 2B) The same as 2A, but we insist on using ‘name’ with a full path use > in auth in v3.7 (i.e. no grace-period for still using an un-pathed ’name', > instead relying on the fact that 3.6 clients will still work just fine). Then > later (e.g. perhaps v3.9), we remove support for v3.6 and before…and relax > the uniqueness constraint. > > The downside for option 2A and 2B is that a client must do work to not be > “surprised” by 3.7 (since the ‘name’ attribute of a project entity may not > contain what they expect). For 1A no changes are required at all for a client > to work with 3.7 and maintain the current experience, although changes ARE of > course required to start moving away from using the non-pathed ‘name’ > attribute, but that doesn’t have to be done straight away, we give them a > grace cycle. For 1B, you need to make changes to support 3.7 (since a path is > required for auth). > > As I have said before, my preference is Option 1, since I think it results in > a more logical end position, and neither 1 or 2 get us there any more > quickly. For option 1, I prefer the more gradual approach of 1A, just so that > we give clients a grace period. Given we need multiple cycles to achieve any > of the options, let’s decide the final conceptual model we want - and then > move towards it. Options 1's conceptual mode is that ‘name’ remains the same, > and we add separate ‘path’ attribute, Option 2’s other redefines ‘name’ to > always be a full path. > > Henry > > > > I gave an alternative to this whole mess that would work and get the > non-unique requirements for a specific project. I'll go over the only viable > option (see my comment above, uniqueness constraint cannot go away in the > forseeable future; not in v3.10, not in v3.11, etc). > > * For all projects created in v3.7 or later, the "name" is explicitly the > full path. This keeps compatibility with v3.6 (you can auth, use the > project's "name" which is now the full path). My problem with your suggestion is, that I couldn’t see how this satisfies compatibility requirement C1 in my email. In 3.6 I could issue auth request to project “test”. The server I am talking to is now upgraded to Newton and a second project called “test” is created somewhere in the hierarchy. Using my (unmodified) client, I then re-issue my auth request to “test”….we can no longer satisfy this request. I am not talking about client code that pulls the name of the project from GET /auth/projects and plugs it into auth, rather a user sitting at a UI (that uses 3.6) and types in the project they want in their auth scope. However, maybe what you suggesting is that we use the fact that we can know that a project was created in 3.7 or later (rather than 3.6) to differentiate? If so, would that mean that you wouldn’t actually return projects created in 3.7 to a client 3.6 at all? I.e. if you do a list projects in a 3.6 client, would you only see projects that were created prior to 3.7? (since, presumably you would want to not show path names to a 3.6 client, and hence would show projects that they could not auth to). > > * All projects get a way to map the full path (full_path attr, as you said > for option 2[A/B]). We can support authentication with *either* full path or > name, the advantage of full_path is you never need to supply domain > identification for the "user friendly" name -- keep in mind, this also will > need to explore (at least documentation around) what occurs if a project name > is "changed" as project names are mutable, it would change the path; should > project names become immutable? > > All of this means that current auth workflows *and* new "full_path" workflows > play nicely and no compatibility is broken. We aren't re-defining anything > here as redefining things will break current workflows. Well, clients that display something to the user may need to change (e.g. I’m displaying a hierarchy of projects, suddenly all my project names become full paths and my display looks really silly). > > In short, do not expect an api break/compat break is going to be possible in > v3 for older API versions. > > --Morgan >> On 10 Jun 2016, at 18:48, Morgan Fainberg <morgan.fainb...@gmail.com >> <mailto:morgan.fainb...@gmail.com>> wrote: >> >> >> >> On Fri, Jun 10, 2016 at 6:37 AM, Henry Nash <henryna...@mac.com >> <mailto:henryna...@mac.com>> wrote: >> On further reflection, it seems to me that we can never simply enable either >> of these approaches in a single release. Even a v4.0 version of the API >> doesn’t help - since presumably a sever supporting v4 would want to be able >> to support v3.x for a signification time; and, already discussed, as soon as >> you allow multiple none-names to have the same name, you can no longer >> guarantee to support the current API. >> >> Hence the only thing I think we can do (if we really do want to change the >> current functionality) is to do this over several releases with a typical >> deprecation cycle, e.g. >> >> 1) At release 3.7 we allow you to (optionally) specify path names for >> auth….but make no changes to the uniqueness constraints. We also change the >> GET /auth/projects to return a path name. However, you can still auth >> exactly the way we do today (since there will always only be a single >> project of a given node-name). If however, you do auth without a path (to a >> project that isn’t a top level project), we log a warning to say this is >> deprecated (2 cycles, 4 cycles?) >> 2) If you connect with a 3.6 client, then you get the same as today for GET >> /auth/projects and cannot use a path name to auth. >> 3) At sometime in the future, we deprecate the “auth without a path” >> capability. We can debate as to whether this has to be a major release. >> >> If we take this gradual approach, I would be pushing for the “relax project >> name constraints” approach…since I believe this leads to a cleaner eventual >> solution (and there is no particular advantage with the hierarchical naming >> approach) - and (until the end of the deprecation) there is no break to the >> existing API. >> >> Henry >> >> >> How do you handle relaxed project name constraints without completely >> breaking 3.6 auth - regardless of future microversion that requires the full >> path. This is a major api change and will result in very complex matrix of >> project name mapping (old projects that can be accessed without the full >> path, new that must always have the path)? >> >> Simply put, I do not see relaxing project name constraints as viable without >> a major API change and projects that simply are unavailable for scoping a >> token to under the base api version (pre-microversions) of 3.6 >> >> I am certain that if all projects post API version 3.6 are created with the >> full-path name only and that is how they are represented to the user for >> auth, we get both things for free. Old projects pre-full-path would need >> optional compatibility for deconstructing a full-path for them. Basically >> you end up with "path" and "name", in old projects these differ, in new >> projects they are the same. No conflicts, not breaking "currently working >> auth", no "major API version" needed. >> >> --Morgan >> >>> On 7 Jun 2016, at 09:47, Henry Nash <henryna...@mac.com >>> <mailto:henryna...@mac.com>> wrote: >>> >>> OK, so thanks for the feedback - understand the message. >>> >>> However, in terms of compatibility, the one thing that concerns me about >>> the hierarchical naming approach is that even with microversioing, we might >>> still surprise a client. An unmodified client (i.e. doesn’t understand 3.7) >>> would still see a change in the data being returned (the project names have >>> suddenly become full path names). We have to return this even if they don’t >>> ask for 3.7, since otherwise there is no difference between this approach >>> and relaxing the project naming in terms of trying to prevent auth >>> breakages. >>> >>> In more detail: >>> >>> 1) Both approaches were planned to return the path name (instead of the >>> node name) in GET /auth/projects - i.e. the API you are meant to use to >>> find out what you can scope to >>> 2) Both approaches were planned to accept the path name in the auth request >>> block >>> 3) The difference in hierarchical naming is the if I do a regular GET >>> /project(s) I also see the full path name as the “project name” >>> >>> if we don’t do 3), then code that somehow authenticates, and then uses the >>> regular GET /project(s) calls to find a project name and then re-scopes (or >>> re-auths) to that name, will fail if the project they want is not a top >>> level project. However, the flip side is that if there is code that uses >>> these same calls to, say, display projects to the user (e.g. a home grown >>> UI) - then it might get confused until it supports 3.7 (i.e. asking for the >>> old microversion won’t help it) since all the names include the >>> hierarchical path. >>> >>> Just want to make sure we understand the implications…. >>> >>> Henry >>> >>>> On 4 Jun 2016, at 08:34, Monty Taylor <mord...@inaugust.com >>>> <mailto:mord...@inaugust.com>> wrote: >>>> >>>> On 06/04/2016 01:53 AM, Morgan Fainberg wrote: >>>>> >>>>> On Jun 3, 2016 12:42, "Lance Bragstad" <lbrags...@gmail.com >>>>> <mailto:lbrags...@gmail.com> >>>>> <mailto:lbrags...@gmail.com <mailto:lbrags...@gmail.com>>> wrote: >>>>>> >>>>>> >>>>>> >>>>>> On Fri, Jun 3, 2016 at 11:20 AM, Henry Nash <henryna...@mac.com >>>>>> <mailto:henryna...@mac.com> >>>>> <mailto:henryna...@mac.com <mailto:henryna...@mac.com>>> wrote: >>>>>>> >>>>>>> >>>>>>>> On 3 Jun 2016, at 16:38, Lance Bragstad <lbrags...@gmail.com >>>>>>>> <mailto:lbrags...@gmail.com> >>>>> <mailto:lbrags...@gmail.com <mailto:lbrags...@gmail.com>>> wrote: >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Fri, Jun 3, 2016 at 3:20 AM, Henry Nash <henryna...@mac.com >>>>>>>> <mailto:henryna...@mac.com> >>>>> <mailto:henryna...@mac.com <mailto:henryna...@mac.com>>> wrote: >>>>>>>>> >>>>>>>>> >>>>>>>>>> On 3 Jun 2016, at 01:22, Adam Young <ayo...@redhat.com >>>>>>>>>> <mailto:ayo...@redhat.com> >>>>> <mailto:ayo...@redhat.com <mailto:ayo...@redhat.com>>> wrote: >>>>>>>>>> >>>>>>>>>> On 06/02/2016 07:22 PM, Henry Nash wrote: >>>>>>>>>>> >>>>>>>>>>> Hi >>>>>>>>>>> >>>>>>>>>>> As you know, I have been working on specs that change the way we >>>>> handle the uniqueness of project names in Newton. The goal of this is to >>>>> better support project hierarchies, which as they stand today are >>>>> restrictive in that all project names within a domain must be unique, >>>>> irrespective of where in the hierarchy that projects sits (unlike, say, >>>>> the unix directory structure where a node name only has to be unique >>>>> within its parent). Such a restriction is particularly problematic when >>>>> enterprise start modelling things like test, QA and production as >>>>> branches of a project hierarchy, e.g.: >>>>>>>>>>> >>>>>>>>>>> /mydivsion/projectA/dev >>>>>>>>>>> /mydivsion/projectA/QA >>>>>>>>>>> /mydivsion/projectA/prod >>>>>>>>>>> /mydivsion/projectB/dev >>>>>>>>>>> /mydivsion/projectB/QA >>>>>>>>>>> /mydivsion/projectB/prod >>>>>>>>>>> >>>>>>>>>>> Obviously the idea of a project name (née tenant) being unique >>>>> has been around since near the beginning of (OpenStack) time, so we must >>>>> be cautions. There are two alternative specs proposed: >>>>>>>>>>> >>>>>>>>>>> 1) Relax project name >>>>> constraints: https://review.openstack.org/#/c/310048/ >>>>> <https://review.openstack.org/#/c/310048/> >>>>>>>>>>> 2) Hierarchical project >>>>> naming: https://review.openstack.org/#/c/318605/ >>>>> <https://review.openstack.org/#/c/318605/> >>>>>>>>>>> >>>>>>>>>>> First, here’s what they have in common: >>>>>>>>>>> >>>>>>>>>>> a) They both solve the above problem >>>>>>>>>>> b) They both allow an authorization scope to use a path rather >>>>> than just a simple name, hence allowing you to address a project >>>>> anywhere in the hierarchy >>>>>>>>>>> c) Neither have any impact if you are NOT using a hierarchy - >>>>> i.e. if you just have a flat layer of projects in a domain, then they >>>>> have no API or semantic impact (since both ensure that a project’s name >>>>> must still be unique within a parent) >>>>>>>>>>> >>>>>>>>>>> Here’s how the differ: >>>>>>>>>>> >>>>>>>>>>> - Relax project name constraints (1), keeps the meaning of the >>>>> ‘name’ attribute of a project to be its node-name in the hierarchy, but >>>>> formally relaxes the uniqueness constraint to say that it only has to be >>>>> unique within its parent. In other words, let’s really model this a bit >>>>> like a unix directory tree. >>>>>>>> >>>>>>>> I think I lean towards relaxing the project name constraint. The >>>>> reason is because we already expose `domain_id`, `parent_id`, and `name` >>>>> of a project. By relaxing the constraint we can give the user everything >>>>> the need to know about a project without really changing any of these. >>>>> When using 3.7, you know what domain your project is in, you know the >>>>> identifier of the parent project, and you know that your project name is >>>>> unique within the parent. >>>>>>>>>>> >>>>>>>>>>> - Hierarchical project naming (2), formally changes the meaning >>>>> of the ‘name’ attribute to include the path to the node as well as the >>>>> node name, and hence ensures that the (new) value of the name attribute >>>>> remains unique. >>>>>>>> >>>>>>>> Do we intend to *store* the full path as the name, or just build it >>>>> out on demand? If we do store the full path, we will have to think about >>>>> our current data model since the depth of the organization or domain >>>>> would be limited by the max possible name length. Will performance be >>>>> something to think about building the full path on every request? >>>>>>> >>>>>>> I now mention this issue in the spec for hierarchical project naming >>>>> (the relax naming approach does not suffer this issue). As you say, >>>>> we’ll have to change the DB (today it is only 64 chars) if we do store >>>>> the full path . This is slightly problematic since the maximum depth of >>>>> hierarchy is controlled by a config option, and hence could be changed. >>>>> We will absolutely have be able to build the path on-the-fly in order to >>>>> support legacy drivers (who won’t be able to store more than 64 chars). >>>>> We may need to do some performance tests to ascertain if we can get away >>>>> with building the path on-the-fly in all cases and avoid changing the >>>>> table. One additional point is that, of course, the API will return >>>>> this path whenever it returns a project - so clients will need to be >>>>> aware of this increase in size. >>>>>> >>>>>> >>>>>> These are all good points that continue to push me towards relaxing >>>>> the project naming constraint :) >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> While whichever approach we chose would only be included in a new >>>>> microversion (3.7) of the Identity API, although some relevant APIs can >>>>> remain unaffected for a client talking 3.6 to a Newton server, not all >>>>> can be. As pointed out be jamielennox, this is a data modelling problem >>>>> - if a Newton server has created multiple projects called “dev” in the >>>>> hierarchy, a 3.6 client trying to scope a token simply to “dev” cannot >>>>> be answered correctly (and it is proposed we would have to return an >>>>> HTTP 409 Conflict error if multiple nodes with the same name were >>>>> detected). This is true for both approaches. >>>>>>>>>>> >>>>>>>>>>> Other comments on the approaches: >>>>>>>>>>> >>>>>>>>>>> - Having a full path as the name seems duplicative with the >>>>> current project entity - since we already return the parent_id (hence >>>>> parent_id + name is, today, sufficient to place a project in the >>>>> hierarchy). >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> The one thing I like is the ability to specify just the full path >>>>> for the OS_PROJECT_NAME env var, but we could make that a separate >>>>> variable. Just as DOMAIN_ID + PROJECT_NAME is unique today, >>>>> OS_PROJECT_PATH should be able to fully specify a project >>>>> unambiguously. I'm not sure which would have a larger impact on users. >>>>>>>>>> >>>>>>>>> Agreed - and this could be done for both approaches (since this is >>>>> all part of the “auth data flow"). >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> - In the past, we have been concerned about the issue of what we >>>>> do if there is a project further up the tree that we do not have any >>>>> roles on. In such cases, APIs like list project parents will not display >>>>> anything other than the project ID for such projects. In the case of >>>>> making the name the full path, we would be effectively exposing the name >>>>> of all projects above us, irrespective of whether we had roles on them. >>>>> Maybe this is OK, maybe it isn’t. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I think it is OK. If this info needs to be hidden from a user, >>>>> the project should probably be in a different domain. >>>>>>>>>> >>>>>>>>>>> - While making the name the path keeps it unique, this is fine if >>>>> clients blindly use this attribute to plug back into another API to >>>>> call. However if, for example, you are Horizon and are displaying them >>>>> in a UI then you need to start breaking down the path into its >>>>> components, where you don’t today. >>>>>>>>>>> - One area where names as the hierarchical path DOES look right >>>>> is calling the /auth/projects API - where what the caller wants is a >>>>> list of projects they can scope to - so you WANT this to be the path you >>>>> can put in an auth request. >>>>>>>>>>> >>>>>>>>>>> Given that neither can fully protect a 3.6 client, my personal >>>>> preference is to go with the cleaner logical approach which I believe is >>>>> the Relax project name constraints (1), with the addition of changing >>>>> GET /auth/projects to return the path (since this is a specialised API >>>>> that happens before authentication) - but I am open to persuasion (as >>>>> the song goes). >>>>>>>>>>> >>>>>>>>>>> There are those that might say that perhaps we just can’t change >>>>> this. I would argue that since this ONLY affects people who actually >>>>> create hierarchies and that today such hierarchical use is in its >>>>> infancy, then now IS the time to change this. If we leave it too long, >>>>> then it will become really hard to change what will by then have become >>>>> a tough restriction. >>>>>>>>>>> >>>>>>>>>>> Henry >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>> __________________________________________________________________________ >>>>>>>>>>> OpenStack Development Mailing List (not for usage questions) >>>>>>>>>>> Unsubscribe: >>>>> openstack-dev-requ...@lists.openstack.org >>>>> <mailto:openstack-dev-requ...@lists.openstack.org>?subject:unsubscribe >>>>> <http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe >>>>> <http://openstack-dev-requ...@lists.openstack.org/?subject:unsubscribe>> >>>>>>>>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>>>>>>>>>> <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>> __________________________________________________________________________ >>>>>>>>>> OpenStack Development Mailing List (not for usage questions) >>>>>>>>>> >>>>> Unsubscribe: openstack-dev-requ...@lists.openstack.org >>>>> <mailto:openstack-dev-requ...@lists.openstack.org>?subject:unsubscribe >>>>> <http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe >>>>> <http://openstack-dev-requ...@lists.openstack.org/?subject:unsubscribe>> >>>>>>>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>>>>>>>>> <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>> __________________________________________________________________________ >>>>>>>>> OpenStack Development Mailing List (not for usage questions) >>>>>>>>> >>>>> Unsubscribe: openstack-dev-requ...@lists.openstack.org >>>>> <mailto:openstack-dev-requ...@lists.openstack.org>?subject:unsubscribe >>>>> <http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe >>>>> <http://openstack-dev-requ...@lists.openstack.org/?subject:unsubscribe>> >>>>>>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>>>>>>>> <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>> __________________________________________________________________________ >>>>>>>> OpenStack Development Mailing List (not for usage questions) >>>>>>>> >>>>> Unsubscribe: openstack-dev-requ...@lists.openstack.org >>>>> <mailto:openstack-dev-requ...@lists.openstack.org>?subject:unsubscribe >>>>> <http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe >>>>> <http://openstack-dev-requ...@lists.openstack.org/?subject:unsubscribe>> >>>>>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>>>>>>> <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>> __________________________________________________________________________ >>>>>>> OpenStack Development Mailing List (not for usage questions) >>>>>>> Unsubscribe: >>>>> openstack-dev-requ...@lists.openstack.org >>>>> <mailto:openstack-dev-requ...@lists.openstack.org>?subject:unsubscribe >>>>> <http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe >>>>> <http://openstack-dev-requ...@lists.openstack.org/?subject:unsubscribe>> >>>>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>>>>>> <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev> >>>>>>> >>>>>> >>>>>> >>>>>> __________________________________________________________________________ >>>>>> OpenStack Development Mailing List (not for usage questions) >>>>>> Unsubscribe: >>>>> openstack-dev-requ...@lists.openstack.org >>>>> <mailto:openstack-dev-requ...@lists.openstack.org>?subject:unsubscribe >>>>> <http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe >>>>> <http://openstack-dev-requ...@lists.openstack.org/?subject:unsubscribe>> >>>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>>>>> <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev> >>>>>> >>>>> >>>>> My main concern with relaxing the uniqueness is you now have a >>>>> significant issue with auth changing. Fundamentally you cannot scope to >>>>> a project under a domain by name and domain name alone. This will break >>>>> current auth paths and auth mechanisms. >>>>> >>>>> I personally think we are a bit wedged even with microversions without >>>>> providing the full path as a name for projects created as such (and >>>>> current projects retaining the uniqueness or if created via the old api >>>>> maintaining the uniqueness constraint and new api projects not being >>>>> represented at all). >>>>> >>>>> So in short, I am strongly against relaxing uniqueness. >>>> >>>> I agree. >>>> >>>> This would break code that exists currently. A microversion is fine for >>>> creating a new api call. A microversion is not ok for fundamentally >>>> breaking the semantics of an existing API. This would be a major API >>>> version bump. It would break existing users with existing code, and >>>> since there _is_ another option on the table that does not break >>>> existing users with existing code, I believe that it is imperative to >>>> select the non-breaking option. >>>> >>>>> New (microversion) would make projects that are only represented by full >>>>> path. Old projects could be represented either way. (For auth/crud that >>>>> uses project names). >>>>> >>>>> Old microversion api (today) would require uniqueness constraint and not >>>>> show/allow full pathname projects. >>>>> >>>>> This way we do not break auth that works today. >>>>> >>>>> Most everyone consumes and stores by id (nova, cinder, etc) so we likely >>>>> won't break much with extended project names. >>>> >>>> End users work by name - but yes, I agree the impact cross-openstack is >>>> unlikely. >>>> >>>> >>>> __________________________________________________________________________ >>>> OpenStack Development Mailing List (not for usage questions) >>>> Unsubscribe: openstack-dev-requ...@lists.openstack.org >>>> <mailto:openstack-dev-requ...@lists.openstack.org>?subject:unsubscribe >>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>>> <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev> >>> __________________________________________________________________________ >>> OpenStack Development Mailing List (not for usage questions) >>> Unsubscribe: openstack-dev-requ...@lists.openstack.org >>> <mailto:openstack-dev-requ...@lists.openstack.org>?subject:unsubscribe >>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>> <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev> >> >> >> __________________________________________________________________________ >> OpenStack Development Mailing List (not for usage questions) >> Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe >> <http://openstack-dev-requ...@lists.openstack.org/?subject:unsubscribe> >> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >> <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev> >> >> >> __________________________________________________________________________ >> OpenStack Development Mailing List (not for usage questions) >> Unsubscribe: openstack-dev-requ...@lists.openstack.org >> <mailto:openstack-dev-requ...@lists.openstack.org>?subject:unsubscribe >> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >> <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev> > > __________________________________________________________________________ > OpenStack Development Mailing List (not for usage questions) > Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe > <http://openstack-dev-requ...@lists.openstack.org/?subject:unsubscribe> > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev > <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev> > > > __________________________________________________________________________ > OpenStack Development Mailing List (not for usage questions) > Unsubscribe: openstack-dev-requ...@lists.openstack.org > <mailto:openstack-dev-requ...@lists.openstack.org>?subject:unsubscribe > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev > <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev>
__________________________________________________________________________ OpenStack Development Mailing List (not for usage questions) Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev