[openstack-dev] [Neutron] Rename tenant to project: discussion
Smigiel, Dariusz
dariusz.smigiel at intel.com
Mon Dec 7 06:26:28 UTC 2015
Thanks guys for all the feedback.
I'm happy we elaborated some plan for this topic.
--
Dariusz Smigiel
Intel Technology Poland
> On 12/04/2015 04:26 PM, Armando M. wrote:
> >
> >
> > On 4 December 2015 at 10:02, Kevin Benton <blak111 at gmail.com
> > <mailto:blak111 at gmail.com>> wrote:
> >
> > So obviously the stuff in the client can be updated since most of
> > that is user-facing. However, on the server side maybe we can start
> > out by keeping all of the internal code and DB tables the same. Then
> > all we need to worry about is the API translation code to start.
> >
> > Once our public-facing stuff is done, we can just start the
> > transition to project_id internally at our own pace and in much less
> > invasive chunks.
> >
> >
> > This plan is sensible, and kudos to Dariusz to take it on...this is no
> > small feat of engineering and it won't be the effort of a
> > single...we're all here to help. Let me state the obvious and remind
> > that this is not a mechanical search and replace effort. We gotta be
> > extra careful to support both terms in the process.
> >
> > To sum it up I see the following steps:
> >
> > 1) Make or figure out how the server can talk to the v3 API - which is
> > bug 1503428. If Monty is unable to tackle it soon, I am sure he'll be
> > happy to hand it back and Darius, perhaps, can take over
>
> I will hack on this next week - sorry for the delay so far. I'd love to do a first
> rough pass and then get Darius to look at it and tell me where I'm insane.
>
> > This will ensure that if for whatever reason v2 gets pulled out
> > tomorrow (not gonna happen, but still), we're not left high and dry.
> > To achieve this, I think we don't invasively need to change tenant id
> > with project id, but only where it's key to get/validate a token.
>
> ++
>
> > 2) Start from the client to allow to handle both project_id and tenant_id.
> >
> > The server must be enhanced to be able to convert project_id to
> > tenant_id on the fly. The change should be relatively limited in a few
> > places, like where the request come in. At this time nothing else is
> > required to change in the server.
>
> From an auth perspective, keystoneauth will handle both tenant and project
> as auth parameters (and I've got a patch coming to neutronclient to help get
> that all fleshed out too)
>
> From the server/api side and client lib side where people are passing in
> tenant_ids to neutron resources because it's important to associate a
> resource with a tenant/project - I think this is a GREAT plan, and thank you
> for doing it this way. As a consumer of your API, I neither want to have to
> change my code to the new version, or write new code using the old version
> (thus perpetuating the move in history)
>
> I would suggest/request if there is a way (and this might be _terrible_ to
> mark tenant_id in the _docs_ as either hidden or deprecated, so that new
> users don't write new code using it - but of course we should continue to
> accept tenant_id until the end of time because of how much we love our
> users.
>
> > 3) Tackle the data model.
> >
> > I wonder if we could leverage some sqlalchemy magic to support both
> > project_id and tenant_id in the db logic, seamlessly....something
> > worth investigating (zzzeek may be of help here). The sooner we start
> > here, the sooner we catch and fix breakages
> >
> > 4) Tackle the codebase sweep.
> >
> > As for projects that use neutron and use the internal APIs, I can't
> > see a clean way of handling the bw compat if not by sprinkling
> > decorators that will take the signature of all the affected methods
> > and convert the tenant_id, but we could definitely explore how this would
> look like.
>
> Yah. That one is going to be yuck. I'm happy to hand people beer ... :)
> >
> > On Thu, Dec 3, 2015 at 10:25 AM, Smigiel, Dariusz
> > <dariusz.smigiel at intel.com <mailto:dariusz.smigiel at intel.com>> wrote:
> >
> > Hey Neutrinos (thanks armax for this word :),
> > Keystone is planning to deprecate V2 API (again :). This time in
> > Mitaka [6], and probably forever. It will stay at least four
> > releases, but we need to decide, how to conquer problem of
> > renaming...
> > And more important: consider if it's a problem for Neutron?
> >
> > I'm looking at blueprint [1] about renaming all occurrences of
> > 'tenant' to 'project', and trying to find out all the details.
> > First attempt to solve this problem was raised in November 2013
> > [4][5] but unfortunately, no one finished it. Although Keystone
> > V3 API is already supported in Neutron client [2], there are
> > still some unknowns about Neutron server side. Monty Taylor is
> > trying to address necessary (if any) changes [3].
> >
> > Findings:
> > I've focused on two projects: python-neutronclient and neutron.
> > grep found 429 occurrences of 'tenant' in Client while Server
> > has 3021 of it. Some of them are just documentation and
> > docstrings, but there are a lot of places, where variables are
> > tangled: defined in DB, used in server, accessed by client. Most
> > of places are just internal usages. The only thing where I've
> > found 'public' information about tenants is 'help' command in
> > neutron client.
> >
> > Suggested plan for conquer:
> > 1. First step would be to deal with neutronclient. It's much
> > smaller amount of code to look through, update all places and be
> > successful :)
> > 2. Bigger challenge will be to change server side code. I'd
> > suggest to start with renaming db columns. It affects a lot of
> > places, so when finished should significantly lower number of
> > remained "tenants".
> > 3. Deal with all other places.
> >
> > Pros:
> > - variable names unification in OpenStack code base. Someone
> > needs to start this job.
> > - one way to describe the same thing, instead of:
> > tenant/account/project. Helpful, especially for newcomers.
> > - alignment with Keystone V3 API
> >
> > Cons:
> > - A. Lot. Of. Work.
> > - dealing with DB migrations
> > - about 2-4 weeks of work for every part of code. Additional, a
> > lot of patchsets to be reviewed.
> >
> > What do you think about this? About proposed way of dealing with
> > all changes?
> > Is this change necessary?
> > Did I forget about something?
> >
> > I'll be grateful for any kind of feedback.
> >
> > Thanks,
> > Dariusz Smigiel (dasm)
> > Intel Technology Poland
> >
> > [1]
> > https://blueprints.launchpad.net/neutron/+spec/rename-tenant-to-
> project
> > [2]
> > https://blueprints.launchpad.net/python-
> neutronclient/+spec/keystone-api-v3-support
> > [3] https://bugs.launchpad.net/neutron/+bug/1503428
> > [4]
> > http://lists.openstack.org/pipermail/openstack-dev/2013-
> November/020457.html
> > [5]
> > http://lists.openstack.org/pipermail/openstack-dev/2013-
> December/021083.html
> > [6]
> >
> > http://lists.openstack.org/pipermail/openstack-dev/2015-
> November/08081
> > 6.htm
> >
> >
More information about the OpenStack-dev
mailing list