On 01/18/2012 06:12 AM, Dan Wendlandt wrote: > Thanks Monty! Inline > > Dan > > On Mon, Jan 16, 2012 at 4:35 PM, Monty Taylor <mord...@inaugust.com > <mailto:mord...@inaugust.com>> wrote: > > Hey guys - > > Quick status update from me here: > > First of all, Jim's patch is win: > > https://review.openstack.org/#change,3072 > > > yup, this one is in. > > > > > I've got a python-quantumclient repo made and pushed to > https://github.com/emonty/python-quantumclient > > > Huh, this is a bit different than I was expecting.... I would have > expected that the 'quantum' cli utility would be part of the client > repo. It looks like your patch keeps this in the server code, and makes > the server code depend on the client code. I was under the impression > that with nova the 'nova' utility was actually packaged with the client > code, or is that not the case? I'm sure you have a reason for doing > this, but I'd be curious to know what it was :)
It is part of the client repo - it's just done via setup.py. (The old bin/quantum was simply a wrapper which called quantum.client.cli.main() ... setuptools console_scripts do that for us. > > I moved a good portion of quantum.common in to python-quantumclient > because both quantum and quantum.client need it, but since quantum will > depend on quantum.client, it means that it'll be available to both > things. I don't think this is a great solution long term, but it kinda > of physically works at the moment. Some of quantum.common can get moved > to openstack.common - the main thing that'll be odd long term will be > Exceptions ... but I'm going to suggest we try this for a moment, see > how much we hate it and then try to solve that. :) > > > Ok, that makes sense. > > > > I've also got python-quantumclient set up initially to use tox... so > just grabbing the repo and running "tox" should work and should do > virtualenv based tests in both python2.6 and python2.7. > > > Looks like both client and server now can run "tox". cool. > > > > I've got a patch up for quantum: > > https://review.openstack.org/3084 > > Which makes quantum a namespace package so that things can be installed > over top of things (which then allows the python-quantumclient repo > to work) > > After that, I've got this: > > https://github.com/emonty/quantum/tree/remove-client > > Which removes quantum.client and quantum.common as well as making > Which I can submit for review > > > Sure, submit for review if you think its ready. Probably better to get > detailed comments on gerrit than on the ML. I shall - we'll need python-quantumclient to exist first. I'll get python-quantumclient up so that we've got a good way to review the quantum patch. > > I think we should chat about how plugins all fit in to this picture, > > > In general, the client lib accesses only the API (which should be plugin > agnostic). There are definitely API extensions that are plugin specific > though. Is that what you are referring to, or something else? I context switched there - not related to client split and not relevant for now. :) > because I think we're on the verge of having some really kickass stuff > going on here. > > > indeed. thanks again for your help with this! > My pleasure! Glad I can be helpful! Monty > > Anyway - poke at stuff, play around with it - tell me if you think I'm > nuts or not. > > Monty > > On 01/12/2012 08:08 AM, Dan Wendlandt wrote: > > > > > > On Tue, Jan 10, 2012 at 5:32 PM, Monty Taylor > <mord...@inaugust.com <mailto:mord...@inaugust.com> > > <mailto:mord...@inaugust.com <mailto:mord...@inaugust.com>>> wrote: > > > > So, while looking at this, I discovered the file you guys have, > > version.py. I've been working on a standalone library, vcsversion > > (https://github.com/emonty/vcsversion) which does some similar > things > > and which encapsulates some of the logic that's current in the > > build_tarball.sh script. I'd love to (doesn't need to happen > to today) > > port any missing functionality that's in version.py into > vcsversion and > > get quantum et al using it. > > > > > > great. the more common code we can rip out of quantum proper and > put in > > a shared lib the better in my opinion. > > > > dan > > > > > > > > Great minds think alike, right? :) > > > > Monty > > > > On 01/10/2012 02:48 PM, Dan Wendlandt wrote: > > > Ok, based on the meeting today we are going ahead with this. > > > > > > Blueprint created and assigned to > > > monty: > > > https://blueprints.launchpad.net/quantum/+spec/separate-client-repo > > > > > > Monty, I assume that you will setup the infrastructure, then > at some > > > point need to hand off to a quantum dev (or not). Please > ping the > > list > > > when you get to that point. > > > > > > And as cdub mentioned at the end of the meeting, the sooner > we can do > > > this, the better in terms of distros that will need to > change their > > > packaging in time for essex. > > > > > > thanks for driving this. > > > > > > Dan > > > > > > > > > On Tue, Jan 3, 2012 at 1:00 PM, Monty Taylor > <mord...@inaugust.com <mailto:mord...@inaugust.com> > > <mailto:mord...@inaugust.com <mailto:mord...@inaugust.com>> > > > <mailto:mord...@inaugust.com <mailto:mord...@inaugust.com> > <mailto:mord...@inaugust.com <mailto:mord...@inaugust.com>>>> wrote: > > > > > > ++ > > > > > > I think as a parallel thing, some of the things that are in > > > quantum.common _might_ want to live in openstack.common. > > > > > > On 01/03/2012 12:55 PM, Brad Hall wrote: > > > > I still vote for #2. I don't think there will be a ton of > > > duplication so we're probably ok in that regard. Also, > it sounds > > > like following suit will make life easier for the ci > folks. I > > think > > > #3 will be painful (both in initial work and maintenance). > > > > > > > > If we do #2 then we could put quantum-client in > > tools/pip-requires > > > and there wouldn't be much of any additional burden on the > > developer > > > unless they were also going to work on the client -- in > which case > > > pull a separate repo. > > > > > > > > Thanks, > > > > Brad > > > > > > > > On Jan 3, 2012, at 12:47 AM, Dan Wendlandt wrote: > > > > > > > >> Hi folks, > > > >> > > > >> tl;dr we need to decide on splitting client repo out > of main > > > repo, per monty's comments. Because this is what all other > > > openstack projects are doing, bias is to move in that > > direction, but > > > benefits are not clear. If we do split, my suggestion is to > > create > > > two repos (client/server), not three repos > (client/server/common) > > > >> > > > >> longer version: > > > >> > > > >> At the 11/29 netstack meeting, one of the topics > discussed was > > > how to handle monty's suggestion that we split out the > client into > > > another repo. > > > >> > > > >> From the 11/29 meeting, here's some background: > > > >> > > > >> 22:12:59 <mtaylor> danwent: > > > >> the problem is that we've got projects that need to > depend on > > > this stuff (horizon being a good example) > > > >> > > > >> 22:13:17 <mtaylor> > > > >> so we need to be able to reference the actual thing > that's > > > needed, wihtout pulling in the entire server > > > >> > > > >> 22:13:31 <danwent> mtaylor: > > > >> definitely understand that.. we want to be able to > package > > > things separately, definitely > > > >> > > > >> 22:13:40 <cdub> > > > >> sounds more like packagin then repo mgmt > > > >> > > > >> 22:13:51 <danwent> > > > >> I think the question is why packaging needs to be > tied to repo > > > so tightly. > > > >> > > > >> 22:13:58 <cdub> > > > >> e.g. simple to build multpile packages from a single > repo > > > >> > > > >> 22:13:59 <danwent> > > > >> i definitely understand that you have a lot of > experience > > here… :) > > > >> > > > >> 22:14:17 <danwent> cdub: > > > >> yes, in fact that is what we do already. > > > >> > > > >> 22:14:23 <cdub> > > > >> right > > > >> > > > >> 22:14:25 <mtaylor> > > > >> it's for a few reasons > > > >> > > > >> 22:14:42 <mtaylor> > > > >> pip requires git lines can't reference sub directories > > > >> > > > >> 22:15:01 <mtaylor> > > > >> so you wind up with venv installs that require > actual releases > > > to pypi to be consumable > > > >> > > > >> 22:15:36 <mtaylor> > > > >> additionally, once you start having submodules in tree, > > standard > > > tooling winds up being difficult to apply - knowing to > > interact with > > > a setup.py in trunk is straight forward > > > >> > > > >> 22:15:50 <mtaylor> > > > >> knowing that there are 4 setup.py files spread > throughout the > > > tree is less obviouos > > > >> > > > >> 22:16:05 <bhall> > > > >> as of yesterday all setup.py's are in the root :) > > > >> > > > >> 22:16:24 <danwent> > > > >> ok, so the trade-off here is if we want the pip > files of other > > > projects to automatically pull "trunk", we need separate > repos? > > > >> > > > >> 22:16:41 <mtaylor> > > > >> yes > > > >> > > > >> 22:17:21 <mtaylor> > > > >> also, it's the model we're using for the other > projects, > > so in > > > keeping with a consistent project-wide approach, I'd kind of > > want to > > > hear a really good reason that it can't work > > > >> > > > >> 22:17:28 <bhall> > > > >> how many repos are we talking about? client, common, > server, > > > plugins? > > > >> > > > >> 22:18:16 <danwent> > > > >> I'm also worried about trying to keep quantum simple > > enough that > > > its easy for new people to join and hack on the project > > > >> > > > >> 22:18:25 <mtaylor> > > > >> I don't think, as of yet, that we need separate ones for > > plugins > > > >> > > > >> 22:18:55 <mtaylor> > > > >> the most important one in my brain in client - as we > have a > > > python-*client project either in existence or coming in to > > existence > > > for every openstack project > > > >> > > > >> 22:19:08 <bhall> > > > >> could we go with two repos? client, > common/server/plugins > > > >> > > > >> 22:19:11 <mtaylor> > > > >> the common one is just because that's how you've > organized > > your > > > code - and i believe client depends on it, yeah/ > > > >> > > > >> 22:19:18 <mtaylor> > > > >> does client depend on common? > > > >> > > > >> 22:19:25 <danwent> > > > >> I believe that was the original goal > > > >> > > > >> 22:19:50 <danwent> > > > >> but perhaps we should revisit that… I'm not sure how > much is > > > currently shared. > > > >> > > > >> 22:19:58 <bhall> > > > >> I think it does currently > > > >> > > > >> 22:20:06 <bhall> > > > >> yeah, I don't think there is a lot of code that it > depends on > > > >> > > > >> 22:20:17 <danwent> mtaylor: > > > >> so the main goal here is pip install, which are mainly > > targetted > > > at developers right? > > > >> > > > >> 22:21:05 <danwent> > > > >> (I assume non-developers will get everything via > packages, > > which > > > should have dependencies described in terms of packages) > > > >> > > > >> 22:21:43 <mtaylor> danwent: > > > >> yes > > > >> > > > >> 22:22:12 <danwent> > > > >> ok, thanks for the explanations… I think I > understand this > > > better now, but still need to noodle on whether there > are ways we > > > can both be happy :) > > > >> > > > >> 22:22:18 <mtaylor> danwent: > > > >> there is no thought that people will be doing production > > > releases from pip :) > > > >> > > > >> 22:22:23 <mtaylor> danwent: awesome > > > >> > > > >> An here's some more follow-up from the 12/6 meeting: > > > >> > > > >> 22:18:55 <danwent> > > > >> first, as discussed last week with mtaylor, we need > to figure > > > out our strategy for whether we are going to split > quantum into > > > multiple repos. > > > >> > > > >> 22:19:49 <salv> > > > >> before deciding on a strategy let's decide whether > we want to > > > split the repos or not! :) > > > >> > > > >> 22:20:02 <mtaylor> danwent: > > > >> re that: we've got openstack.common going now - so > perhaps > > > quantum.common can live there? > > > >> > > > >> 22:20:03 <danwent> > > > >> we can have the detailed discussion on the ML, but the > > > high-level options seem to be (1) keep as is, all one > repo (2) > > split > > > into two repos, client and server, but potentially > duplicate the > > > little bits of shared code and (3) split into three > repos, client, > > > server, and common > > > >> > > > >> 22:20:09 <salv> > > > >> Splitting in which way exactly? client and server > components? > > > >> > > > >> 22:20:30 <danwent> mtaylor: > > > >> I was thinking something very similar myself, if we > decide > > to go > > > with #2 > > > >> > > > >> 22:20:57 <danwent> salv: > > > >> up for discussion > > > >> > > > >> 22:21:14 <danwent> #TODO: #danwent, start ML thread for > > splitting > > > repos, include #mtaylor as well > > > >> 22:21:17 <bhall> > > > >> my vote is for #2 (client and "the rest") > > > >> > > > >> 22:21:19 <mtaylor> #2 with some elements in > openstack.common > > > would be the thing that matches the other projects more > closely > > > >> 22:21:55 <danwent> if anyone else wants to comment > now, go > > ahead, > > > otherwise i'll forward this content to start a thead on > the ML > > > >> > > > >> It seems like we have three primary options (feel free to > > suggest > > > others). > > > >> > > > >> #1: do nothing, keep every in single repo > > > >> #2: split into two repos: client + server, but > potentially > > > duplicate some of the shared code currently in "common" > > > >> #3: split into three repos, client, server and common.. > > > >> > > > >> A couple thoughts: > > > >> > > > >> I'm still not totally clear on the value of splitting the > > repos. > > > Multiple repos are not required for anyone installing > > openstack via > > > packages, as we can easily generate separate client/server > > packages > > > when using a single repo (in fact, we already do).. My > > understanding > > > is that splitting the repos aims to help developers in > the case > > > where a project like horizon specifies a dependency on > quantum by > > > adding a direct reference to the quantum git repo in > pip-requires. > > > So one thing I'd like to better understand is the cost of > > > specifying a quantum git repo that includes client + > server, as > > > opposed to one that just includes the client. If its just a > > matter > > > of pulling down some more bytes, that doesn't seem that > > painful (the > > > quantum source is tiny anyway). Is there some greater > benefit to > > > splitting repos that I am missing? > > > >> > > > >> I think the cost of splitting repos is non-trivial, > as it makes > > > it harder for developers to get things running from > source tree, > > > (again, I'm assuming this is mainly a developer issue, > as users > > > should mainly install from packages). It may also mean > we need to > > > duplicate some common code, though the need for that may go > > down if > > > we can get both client + server code bases to have > common code in > > > openstack-common. > > > >> > > > >> Another important consideration is that it seems that all > > of the > > > other openstack projects are moving to a model with the > client > > in a > > > separate repo from the service itself. There would > definitely a > > > cost both in terms of developer confusion and pain to the > > > infrastructure team to Quantum being an oddball in that > > department. > > > This alone may be reason enough to follow suit, but I'd > love if > > > there was a clear cut reason other than "everyone else is > > doing it". > > > >> > > > >> If we do decide to split repos, my bias would be for > #2, which > > > avoid the even more significant complexity of having > three repos. > > > While some code in common may need to be duplicated, it may > > be the > > > case that such code is duplicated because it really > belongs in > > > something like openstack-common, which could be a > dependency of > > > both. A lof of the code in quantum.common seems to be > of that > > > variety (I suspect much of this code is actually only > used by the > > > server at this point). The two chunks of common code > used by the > > > main client library are: > > > >> > > > >> from quantum.common import exceptions > > > >> from quantum.common.serializer import Serializer > > > >> > > > >> Serializer seems to be pretty much all stock code that > > should be > > > in openstack-common. > > > >> > > > >> The quantum client only uses a few of the Exceptions > classes in > > > common/exeptions.py. A few of these may need to be > duplicated in > > > both the client/server code. Though if we make the changes > > > suggested by Aaron to use only standard HTTP error > codes, the > > > applicability of this code to the client decreases to > the point of > > > almost no overlap, I suspect. > > > >> > > > >> Please chime in with your thoughts. Right now I'm > not sure who > > > would work on this, so if you think you have some > cycles, please > > > speak up. > > > >> > > > >> Dan > > > >> > > > >> > > > >> -- > > > >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > >> Dan Wendlandt > > > >> Nicira Networks: www.nicira.com > <http://www.nicira.com> <http://www.nicira.com> > > <http://www.nicira.com> > > > >> twitter: danwendlandt > > > >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > >> > > > >> -- > > > >> Mailing list: https://launchpad.net/~netstack > > > >> Post to : netstack@lists.launchpad.net > <mailto:netstack@lists.launchpad.net> > > <mailto:netstack@lists.launchpad.net > <mailto:netstack@lists.launchpad.net>> > > > <mailto:netstack@lists.launchpad.net > <mailto:netstack@lists.launchpad.net> > > <mailto:netstack@lists.launchpad.net > <mailto:netstack@lists.launchpad.net>>> > > > >> Unsubscribe : https://launchpad.net/~netstack > > > >> More help : https://help.launchpad.net/ListHelp > > > > > > > > > > > > > > > > > > > > > > > -- > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > Dan Wendlandt > > > Nicira Networks: www.nicira.com <http://www.nicira.com> > <http://www.nicira.com> > > <http://www.nicira.com> > > > twitter: danwendlandt > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > > > > > > > > > > > -- > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > Dan Wendlandt > > Nicira Networks: www.nicira.com <http://www.nicira.com> > <http://www.nicira.com> > > twitter: danwendlandt > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > > > > > -- > ~~~~~~~~~~~~~~~~~~~~~~~~~~~ > Dan Wendlandt > Nicira Networks: www.nicira.com <http://www.nicira.com> > twitter: danwendlandt > ~~~~~~~~~~~~~~~~~~~~~~~~~~~ > -- Mailing list: https://launchpad.net/~netstack Post to : netstack@lists.launchpad.net Unsubscribe : https://launchpad.net/~netstack More help : https://help.launchpad.net/ListHelp