Tuesday, 2016-12-13

*** rcarrillocruz has joined #zuul00:05
jamielennoxmordred: i'm not sure what channel this belongs in any more but in os_server_volume device: may not be respected?00:30
mordredjamielennox: well that doesn't seem great :)00:32
mordredjamielennox: #openstack-shade is as good a place as any for stuff like that -- but we should dig in and figure out why not00:33
openstackgerritPaul Belanger proposed openstack-infra/nodepool: Make diskimage-builder command configurable for testing  https://review.openstack.org/40497600:40
openstackgerritPaul Belanger proposed openstack-infra/nodepool: Properly cleanup failed diskimage builds  https://review.openstack.org/40932700:40
*** Shuo has quit IRC01:18
openstackgerritJames E. Blair proposed openstack-infra/zuul: WIP triggers  https://review.openstack.org/40884801:31
openstackgerritJames E. Blair proposed openstack-infra/zuul: WIP organize connections into drivers  https://review.openstack.org/40884901:31
*** harlowja has quit IRC03:43
openstackgerritJerry Zhao proposed openstack-infra/zuul: add check if an event matches the connection which triggered it.  https://review.openstack.org/40939704:03
*** bhavik1 has joined #zuul04:18
*** harlowja has joined #zuul04:21
*** bhavik1 has quit IRC04:55
*** harlowja has quit IRC05:08
*** harlowja has joined #zuul05:56
*** bhavik1 has joined #zuul05:58
*** bhavik1 has joined #zuul06:32
*** abregman has joined #zuul06:52
*** saneax-_-|AFK is now known as saneax07:02
*** harlowja has quit IRC07:25
*** bhavik1 has quit IRC07:56
*** hashar has joined #zuul08:30
*** hashar has quit IRC09:20
*** hashar has joined #zuul09:24
*** willthames has quit IRC09:31
*** hashar is now known as hasharLunch11:21
*** hasharLunch is now known as hashar12:39
*** dmsimard has joined #zuul14:18
dmsimardhey zuulers o/ unless mistaken, you can merge this if you want, it's not a POC/WIP or anything: https://review.openstack.org/#/c/405613/14:18
dmsimardrcarrillocruz, jeblair ^14:18
dmsimardclarkb: ^14:18
*** dmsimard has quit IRC14:21
*** dmsimard has joined #zuul14:21
*** dmsimard has quit IRC14:28
*** saneax is now known as saneax-_-|AFK14:29
*** dmsimard has joined #zuul14:30
mordreddmsimard: neat!14:47
dmsimardif you have any feedback regarding ara, do let me know .. most of the stuff that has gone in is driven directly out of user feedback15:01
dmsimarddoesn't mean I'll be able to do it (quickly or at all) but writing it down in a story that can eventually be picked up (by me or someone else) is always useful15:01
mordred++15:05
mordreddmsimard: I love how simple it is15:05
mordred(like, the d-g patch is tiny :) )15:05
dmsimardsimplicity is one of the core concepts of it, it was designed from the ground up to be that simple15:06
dmsimardi.e, Tower gets in the way of your workflow and wants to control everything15:06
dmsimardthis is the extreme opposite15:06
pabelangermordred: Shrews: jeblair: mind reviewing https://review.openstack.org/#/c/404976 need to land our failed dib cleanup patch15:17
* Shrews reviewed 4 days ago :-P15:19
pabelangerShrews: Ah, yes. lack of coffee, danke15:19
mordredjeblair: ^^ the patch linked there is good by me - but you had concerns originally, so I'd prefer if you pulled the trigger15:22
pabelangerthink today I'm going to poke at statsd stuff for builder.py, see how we can better trace diskimage success and failures.  I know we have (had?) something15:25
phschwartzmordred: I should have called you when I was in dallas Friday night but was short on time. Next time I am out there we will have to get together for drinks15:26
mordredphschwartz: ++15:26
phschwartzI flew in around 10pm to help a friend clean out his apartment and drive to south FL. So it was leaving early the next morning for the 23 hour drive15:27
mordredoh lovely15:28
mordredphschwartz: you got to enjoy the lovely cold spell!15:28
phschwartzIt was 38 when I landed and 43 when we left in the morning. Crazy thing was it was 29 when we stopped for the night in pensacola and then 25 when we woke up and got on the road at 7am15:29
*** saneax-_-|AFK is now known as saneax15:48
*** abregman has quit IRC16:04
openstackgerritMerged openstack-infra/nodepool: Make diskimage-builder command configurable for testing  https://review.openstack.org/40497616:48
openstackgerritMerged openstack-infra/nodepool: Properly cleanup failed diskimage builds  https://review.openstack.org/40932716:49
*** hashar has quit IRC16:54
pabelangermordred: jeblair: https://review.openstack.org/#/c/408324/ should fix a race in our nodepool testing too17:21
openstackgerritMerged openstack-infra/nodepool: Update waitForBuildDeletion() to protect against delete race  https://review.openstack.org/40832417:30
rcarrillocruzback18:31
rcarrillocruzglad it got merged the ara change18:31
rcarrillocruzclarkb , mordred : https://review.openstack.org/#/c/401975/ , are we good now? jlk  also +1'd now18:33
jeblairShrews: did you get anywhere with the 'only use one zk client' in nodepool-builder idea?18:46
Shrewsjeblair: i experimented with it a bit (thinking it might be easy to just create singletons), but run into the "everyone shares the same chroot so breaks tests" issue, then didn't think too much more about it18:48
Shrewswe'd have to change it to pass connection info in, then hash to a singleton based on that info18:49
jeblairShrews: how about an approach where the builder holds a single client and the workers share it?  (the the builder for each test gets its own)18:49
openstackgerritJames E. Blair proposed openstack-infra/nodepool: Merge feature/zuulv3 into master  https://review.openstack.org/41035718:50
Shrewsjeblair: maybe? but thinking about it, if we really only have 5 ZK connections now (1 build worker, 4 upload workers), then we could really only reduce it to 2. Are 3 less connections going to really buy us a lot here? (maybe it will, just thinking out loud)18:52
Shrewswell, i guess we *could* reduce to 1 if both builders and uploaders share, too18:53
clarkbrcarrillocruz: ya I will try taking a look at that stack today18:53
clarkbprobably after meeting and lunch18:53
Shrewsi'm very surprised 5 connections cause so much cpu churn18:54
jeblairShrews: yes, i was imagining they all share.  each connection has 3 threads, so we currently have 18 threads dedicated to talking to zk.18:54
jeblairwe should only need 1 connection/3 threads so i think it's worth looking into18:54
Shrewsjeblair: i can take another stab at it18:56
jeblairShrews: cool, thanks18:56
openstackgerritClint 'SpamapS' Byrum proposed openstack-infra/zuul: WIP: Enable test_swift_instructions  https://review.openstack.org/41036319:05
ShrewsFor the PTG, do we intend to have coordinated things beyond the Mon-Tue session?19:08
Shrewsb/c 2 days of Atlanta would be about all I could stand19:08
Shrews:)19:08
Shrewsjeblair: hrm, the config reload aspect of this makes things difficult. In order to prevent stepping on a thread's toes, we need a lock around the client calls so it can be re-established if the ZK config values change19:16
SpamapSShrews: you just need moar bitchface19:16
ShrewsSpamapS: ugh19:16
ShrewsSpamapS: that's why i want to leave early... less chance of you corrupting me19:18
SpamapSthe deed is done19:18
SpamapSI can feel it growing inside you19:18
dmsimardAs someone who doesn't follow zuul/nodepool development too much19:18
SpamapSUSE your bitchface, Luke19:18
dmsimardcan someone give me a tl;dr of why zookeeper is now a thing ?19:18
dmsimarddid we miss java because we took jenkins out of the picture? :)19:18
SpamapSdmsimard: There is a need to coordinate and order things. Gearman doesn't allow for that.19:19
SpamapSZookeeper is the most well behaved java app I've ever worked with.19:19
jeblairdmsimard: see http://specs.openstack.org/openstack-infra/infra-specs/specs/nodepool-zookeeper-workers.html19:19
Shrewsdmsimard: http://specs.openstack.org/openstack-infra/infra-specs/specs/nodepool-zookeeper-workers.html#problem-description  (First section)19:19
jeblairShrews: for the provider managers, we took an approach where if a thread used an "old" provider manager, we threw an error.  so if a provider changed and was replaced, threads would error out at random places, but the whole system is designed for that anyway, so it's okay.19:20
dmsimardok, thanks. Personal curiosity :)19:21
Shrewsjeblair: I'm not comfortable with that. Not to mention that if a thread currently has a lock, and another thread resets that connection, then we lose that lock. I have no idea how the current code is going to react to that19:25
jeblairShrews: well, regardless of whether you want to use that approach for solving this problem, we absolutely have to handle an error from any place at any time.  because we get them.19:26
jeblairShrews: if the locking is an issue, perhaps we should rework that a bit and not have the client object hold locks19:27
jlkjeblair: thanks for the comment on the etc_hosts PR. I was reading the old code, I just mentally lost the nuance that you only wanted to add a new line if the hostname didn't appear at all in the existing file. I kind of glossed over that.19:27
jeblairShrews: we can also revisit how we handle configuration changes -- we don't have to keep the current approach19:29
SpamapSThe one thing I've seen trip up ZK users in the two times I've used it, was that there has to be a thread that is responding to the server all the time and mutating state in the program for it to be really effective at "liveness".19:31
SpamapSok hrm.. this is weird19:32
SpamapSclint@clint-ThinkPad-X250:/tmp/tmp4CzbkW/zuul-test/upstream/org/nonvoting-project$ git show-ref19:32
SpamapS2d66fdbddcbc6fd5d5a103d893ae664577074739 refs/heads/master19:32
SpamapSclint@clint-ThinkPad-X250:/tmp/tmp4CzbkW/zuul-test/upstream/org/nonvoting-project$19:32
SpamapSno refs/tags/init19:32
SpamapSclint@clint-ThinkPad-X250:/tmp/tmp4CzbkW/zuul-test/upstream/org/project1$ git show-ref19:33
SpamapSbb57c1731db46115a19d77e3aea36c28a652af9e refs/heads/master19:33
SpamapSbb57c1731db46115a19d77e3aea36c28a652af9e refs/tags/init19:33
SpamapSah, only project1 has that.19:36
jeblairShrews: (keep in mind, a zk connection change will almost never happen, which is why i'm okay with it being slightly disruptive (even to the point of aborting an image build) but i agree if there's another approach that isn't disruptive, that would be better)19:36
SpamapShm no.. project1 and project2 have it.19:37
* SpamapS is so confused :-P19:37
* SpamapS finds it19:40
openstackgerritClint 'SpamapS' Byrum proposed openstack-infra/zuul: Re-enable test_nonvoting_job  https://review.openstack.org/41037619:44
openstackgerritClint 'SpamapS' Byrum proposed openstack-infra/zuul: Re-enable test_no_job_project  https://review.openstack.org/41037819:55
SpamapSI've been workin on the test.. mine... all the live long day...19:56
* SpamapS swings pick axe to chip another test away19:56
openstackgerritClint 'SpamapS' Byrum proposed openstack-infra/zuul: Re-enable test_no_job_project  https://review.openstack.org/41037820:08
jlkHi all, I have a 2.5 question (yes, 2.5, I know). It seems to me that "get the source in place on the nodepool node" is not a baked in functionality, and implementers of zuul must write their own job/builder to get the source in place before trying to do anything.20:15
jlkCan somebody confirm this observation?20:15
jlk(I'm looking at things in infra like gerrit-git-prep)20:15
pabelangerright, we use things like gerrit-git-prep or zuul-cloner in 2.5 to get the git repo onto the node.20:17
jlkIt looks like it's implemented as a job execution, like in the pipeline, rather than say a builder step, right?20:17
pabelangerlet me double check20:18
jlkIt seems that way from reading the jenkins job macros20:18
pabelangerfor example: http://logs.openstack.org/18/406118/4/gate/gate-nova-python27-db-ubuntu-xenial/52b969d/_zuul_ansible/scripts/02-46ea63ccc8384e2d8de3141ed3d2f98a.sh20:20
pabelangeris the bash script used to clone20:20
pabelangerusing: builder: http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/jobs/python-jobs.yaml#n18120:20
pabelangerdefined: http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/jobs/macros.yaml#n5620:21
jlksorry I was holding the wrong mental map of what a builder step was20:22
pabelangerzuul-git-prep-upper-constraints is more complex, but would suggest having zuul-git-prep for your setup.20:24
jlkyeah, something like that20:24
jlkIs that how v3 is set up as well, getting source onto the builder is up to the implementer?20:27
mordrednope20:27
mordredin v3, zuul pushes the prepared git repos directly onto the build node20:27
jesusauroh, cool20:28
jlkoh good!20:28
jlkthat feels much more reasonable :)20:28
mordredwhich also helps with a thing that was jesusaur's past hell20:28
mordredwhich is build nodes being somewhere that don't have a network path back to the central service20:28
pabelangerInterested to see how our zuul-launchers handle the extra IO and HDD requirements :)20:29
mordredso in v3 we require that the central service be able to have in-bound access to build nodes (which it needs to have anyway) - but we do not require a path from build node to central service20:29
mordredpabelanger: yah. otoh - they're a nice scale-out piece of the architecture - so "just add more nodes" :)20:29
jesusauryeah, that means in v3 we'll no longer require routes from all the slaves to all the mergers20:29
mordred++20:29
jlkoh yeah that'll be nice20:30
jlkso, trigger comes in, merger merges the things and serves it up via http, launcher pops a node, clones from merger repo, pushes into node?20:31
mordredhand-wavey yes20:31
jlkI'm so good at the hand-wavey20:31
mordredit's also possible that leaving mergers and launchers separate turns out to be not worth it20:32
mordredand we end up with mergerlaunchers20:32
jlkyeah, that was a thought I had20:32
mordredbut good arguments can be made in both directions20:32
mordredso we may just have to see how it goes one we start load testing20:32
pabelangermordred: something I was thinking about today, anything stopping me in zuulv3 from randomly rebooting a node during a test run? assuming my playbook had the wait_for logic?20:32
mordredpabelanger: nope20:33
jlkseems /slightly/ inefficient to clone to push, but it also feels weird to put push to node capability on all the mergers20:33
pabelangermordred: k, didn't think so20:33
mordredjlk: yah - especially when the launchers all have to be able to ansible to the nodes anyway20:33
jlkyeah.20:33
jlkwhen scaling out mergers, does each merger then get it's own http url, and it's unique to that merger, different from another merger?20:34
pabelangermordred: maybe this week, I can bend your ear about the append hostname to git clones logic for zuul.  So we don't have namespace issues if 2 gerrits have foobar20:35
mordredjlk: yes - and part of the payload to a job executor is the location of the merger to clone from20:35
mordredpabelanger: yes!20:35
mordredpabelanger: I just wrote a mention of that in an email list thing about go20:35
mordredpabelanger: I've been promising to write a spec about that for a while haven't I?20:36
jlkmordred: okay. That would mean if launcher/merger was all one thing, the launcher task would _have_ to go to the same host that did the merging20:36
jlkunless you collapse that into one functionality, merge+launch20:36
pabelangermordred: neat, I was just reminded about it since RDO has the issue today. They're going to do a out-of-tree patch until we get it working properly20:36
mordredpabelanger: tl;dr from me : clone to $BASE/src/$git_host/$repo instead of $BASE/$repo20:37
pabelangernods20:37
mordredpabelanger: and we need to make sure that, in a case like openstack where we have review.o.o and git.o.o we wind up with $BASE/src/git.openstack.org/openstack/nova20:37
mordredjlk: yah - or you could pass localhost to the launcher and a file:/// url perhaps and have it have short-circuit logic ... but yeah20:38
jesusaurjlk: the launcher would have to go to the same host that did the merging to push the refs to the slave anyway, since that constructed git tree ould only exist on the one merger that took the merge job20:38
jlkmordred: yeah.20:38
jlkjesusaur: unless the launcher did "clone from zuul merger + push to node"20:39
jlkinstead of expecting it to exist somewhere on the local filesystem20:39
jesusauroh, i see what you mean20:39
jlkLooking at zuul-git-prep, and thinking about what zuul merger does, don't I need a zuul ref to check out? I wouldn't guess that $ZUUL_PROJECT has the complete ref to clone, or does it?20:47
jlkoh maybe that gets set in the environment20:48
jlkand zuul-cloner pulls it from that20:48
pabelangerright20:49
pabelangerhttp://logs.openstack.org/18/406118/4/gate/gate-nova-python27-db-ubuntu-xenial/52b969d/_zuul_ansible/vars.yaml20:49
pabelangerwould be the env vars we'd use for that job20:50
jesusaurjlk: in a typical check/gate pipeline there will also be a $ZUUL_REF var20:51
jlkalright20:51
jesusaurpabelanger: ah, that's super useful20:51
jlkpabelanger: do you have to configure all of those to be pushed into the env, or does that just automatically happen by way of ansiblelauncher?20:52
jesusaurbut post and periodic pipelines look a little different20:52
pabelangerjlk: ya, in 2.5 we hardcode them in ansiblelauncher.py20:52
pabelangerjlk: http://git.openstack.org/cgit/openstack-infra/zuul/tree/zuul/launcher/ansiblelaunchserver.py#n126720:54
jlkDo any of you happen to know where you make zuul-cloner available in your dib images for nodepool?21:00
jlk(in infra)21:00
jlkis it in puppet somewhere?21:01
jeblairjesusaur, jlk: in v3 the merger that produces the code that gets used by a node is integrated into the launcher (it does not consult a remote launcher; standalone launchers are (if anything) only used for speculative merges for configuration changes, however, the merger-launchers can do that too)21:02
jlkjeblair: I see, so it's more of a scheduler -> $ONEBOXTHATMERGESANDLAUCNHES21:03
jeblairjlk: yep, for the easy case.21:03
jeblair(there is a scheduler -> merger -> scheduler -> merger-launcher path for live configuration changes)21:03
pabelangerjlk: we use puppet today (slave_common.pp)21:04
jeblairalso, the nodepool 'pop' happens in the scheduler, so: scheduler [-> merger -> scheduler] -> nodepool -> scheduler -> merger-launcher21:05
pabelangerjlk: you could quick and dirty it with a in job builder, until you roll new images21:07
openstackgerritMerged openstack-infra/nodepool: Merge feature/zuulv3 into master  https://review.openstack.org/41035721:39
jlkwoo ^^21:42
jlkQuestion on zuul-cloner21:46
pabelangerjeblair: clarkb: mordred: re: 410357 we still need to merged to master right?21:47
jlkIt looks like it requires a git_base_url to clone from, which I would think would be the place zuul-merger makes available, since that's where the zuul-ref exists. (also why doesn't cloner get that from ENV vars?).21:47
pabelangermerge*21:47
jlkIn infra's case, is git.openstack.org where zuul-merger puts it's merged refs?21:47
jlkand we'd need to use a url that's appropriate for our merger's published git repos?21:47
mordredjlk: each of the mergers runs their own git repo that they serve from direcly - so if you see the ZUUL_URL: http://zm07.openstack.org/p in the vars above21:48
mordredjlk: that's where zuul tells the job to clone from21:49
jlkhrm.21:49
jlkwhat does the base url passed to zuul-cloner come into play then?21:49
mordredone sec - lemme read something and make sure I'm not lying :)21:49
jlkreading http://docs.openstack.org/infra/zuul/cloner.html21:49
clarkbpabelanger: that is the merge to master21:50
clarkbpabelanger: we will need to tell puppet to go back to using master21:50
pabelangerclarkb: really? I read that as merge to feature/zuulv321:51
mordredjlk: oh. duh. sorry ECONTEXT_SWITCH ... git_base_url is where to clone from if it needs to clone from scratch. it can then do a git fetch from the ZUUL_URL provided to get the latest refs21:52
clarkbpabelanger: oh indeed21:52
clarkbpabelanger: the first parent is master though...21:52
clarkbthis is what I get for reviewing locally rather than reading what gerrit is telling me21:53
jlkmordred: oh interesting. Well that kind of stinks, as we'll have to figure out a way to push through the base url for each of our github sites21:53
pabelangerclarkb: ya, I'm slightly confused :)21:53
clarkbpabelanger: its possible it was a mispush to the wrong dest branch21:54
clarkband now that same change can be pushed to master21:54
clarkbjlk: why can't you use the merger?21:54
clarkbmerger fetches from github or gerrit or wherever, makes ref, job fetches from merger21:54
jlkclarkb: set the base url to the merger?21:55
jlkisn't the future where you have multiple mergers, and eachmerger might have the ref and might not?21:55
jlk(or even the base repo)21:55
clarkbyes, maybe I misunderstand what the problem is21:56
jlkis the ZUUL_URL supposed to be the URL to the merger?21:56
jlkclarkb: zuul-cloner expects a git_base_url passed in as a cli argument. It does not fetch it out of env variables21:56
clarkbjlk: yes iirc ZUUL_URL will be url to one of the mergers21:56
jlkso in my builder, I have to specify one, or use a variable.21:56
jlksince we may be talking to multiple githubs, and we may have multiple builders, I need some way to pas sin one that we know the ref will be at21:57
clarkbyou should only ever get the merger that knows what your refs are in zuul_url21:57
clarkbso you can do something like git fetch $ZUUL_URL/$ZUUL_PROJECT $ZUUL_REF && git checkout FETCH_HEAD21:58
jlkI shouldn't have to do that, isn't that what zuul-cloner does?21:58
clarkbyes under the hood21:58
clarkbits an illustration21:58
jlklike I want to maybe do zuul-cloner $ZUUL_URL $ZUUL_PROJECT21:58
jlkand I assume that $ZUUL_URL would be an appropriate place to construct the url21:59
jlkof $ZUUL_URL/$ZUUL_PROJECT21:59
jlkI see in one log from earlier on infra a setting of: ZUUL_URL: http://zm07.openstack.org/p21:59
clarkbas long as the project is part of zuul then I think that should work21:59
SpamapSMy experience with zuul-cloner was that $ZUUL_URL was set to the merger and it worked fine.21:59
jlkhttp://logs.openstack.org/18/406118/4/gate/gate-nova-python27-db-ubuntu-xenial/52b969d/_zuul_ansible/vars.yaml21:59
SpamapSnever had to pass in the url via CLI21:59
jlkSo presumably http://zm07.openstack.org/p/openstack/nova  is a valid URL22:00
jlkSpamapS: well the docs say it expects something22:00
jlkand upstream infra just toss git.openstack.org in there22:00
clarkbwe don't just toss git.openstack.org in there22:02
clarkbits a complete mirror of all the repos we host22:02
jlksorry, that's not what I meant.22:02
jlk"just toss" was poorly phrased.22:02
jeblairclarkb, pabelanger: yep, i neglected to account for the .gitreview, sorry.22:03
jlkinfra uses git.openstack.org in there, because presumably everything zuul will be cloning is available from there. However we can't rely on a single base url to cover all our potential sources22:03
pabelangerjeblair: thanks, that explains it22:03
pabelangerjlk: should be able to it (git.o.o) an $UPSTREAM_GIT variable, then pass it the properly location.  IIRC, that is what RDO did with 2 different gerrit servers22:05
jeblairpabelanger, clarkb: so i guess i'll push a version of that to master, but amend it to not touch .gitreview22:06
clarkbjeblair: sounds good22:06
pabelanger++22:06
openstackgerritJames E. Blair proposed openstack-infra/nodepool: Merge feature/zuulv3 into master  https://review.openstack.org/41042622:08
jeblairclarkb, pabelanger: ^22:09
clarkb+222:09
pabelanger+222:09
jeblairnote, it has lots of conflicts... that probably should have been a red flag for the other one :)22:09
jeblairbut it's hard to see the absence of a red flag22:10
clarkbindeed22:11
clarkbfwiw I did submit a feature request against the new gerrit UI to better render the subway graph of proposed changes22:12
pabelanger273 changes, nice22:12
clarkbwhich I think would make this much easier to understand22:12
mordredjeblair: I left if without a +A so you could do the honors22:19
jeblairmordred: thx, i'll let the devstack job run again and +322:20
openstackgerritJames E. Blair proposed openstack-infra/zuul: WIP triggers  https://review.openstack.org/40884822:24
clarkbjlk: thinking about that situation more you may consider a central repo mirror like ours (reliabilty reasons if nothing else), another option may be to update the z-c map file contents to includeabsolute paths per repo and ignore the base in that case22:26
jlkclarkb: a central repo where every repo you care about gets mirrored to?22:27
jlk(if it doesn't originate from there)22:27
clarkbyes (tahts basically what git.openstack.org is for us)22:27
jlkthat makes some sense, but if the "upstream" of a repo goes offline, we won't be able to accurately test anyway22:28
jlkthe merger might not be able to reach the repo to create the zuul ref22:28
clarkbcorrect22:28
jlkWe're going to toy with setting the base_url to ZUUL_URL22:28
jlkwhich should be the merger that made the ref22:29
clarkbat least for us I think we regularly push half a gigabit through git.o.o and so keeping the majority of that trffic off of gerrit means gerrit tiself is happier22:29
jeblairyou will get *a* repo, you will not get a *correct* repo22:29
clarkbmaking it more reliable to serve the smaller set of refs that the zuul mergers need22:29
jeblair(it may not have all the branches/tags, etc needed)22:29
jeblairi should say you *may* not get a *correct* repo22:30
jeblairyou might happen to get a correct one :)22:30
jlkyeah it seems the zuul mergers need to always be able to go out to the canonical upstream22:30
jlkbut hopefully keep a cache.22:30
jlkso first time a merger works on a repo it may be a bunch of traffic, but the next time it'd be relatively little traffic22:30
jlkand the testers in turn fetch it from the merger22:30
jeblaira merger is only guaranteed to have a correct repo if it's involved in the change being tested22:34
jeblairand it's worth re-iterating none of this applies to v322:34
jlkyeah I know it's not in v322:34
jlkbut what sets ZUUL_URL? Is it not the merger who merged the change?22:34
jesusauralso, the slaves have semi-recent clones baked into /opt/git iirc, so that they aren't pulling the full git tree from the mergers22:34
jlke.g.     ZUUL_URL: http://zm07.openstack.org/p22:34
jlkjesusaur: the slaves...22:35
jlkhow does /opt/git get put in place though? That feels like an infra customization, not a zuul built in22:35
jeblairjlk: yeah, that's the merger that merged the repo(s) for that change22:35
jesusaurso that when the slave fetches the ZUUL_REF from ZUUL_URL it isn't pulling the entire git tree22:35
mordredjesusaur: jlk has an interal zuul - some of the infra optimizations don't apply to him directly22:35
jesusaurjlk: correct, that's going to be in the nodepool dib somewhere22:35
jlkjeblair: since the base url is per-job run defined, it seems safe to rely on $ZUUL_URL when the job runs22:35
jeblairjlk: we use nodepool and a diskimage builder element that caches repos (it's not actually a zuul-specific thing, but it tilts somewhat that way)22:36
jeblairjlk: unless you need a repo not being tested22:36
jeblairer, not in the change series being tested22:36
mordredjlk: problem is - if there are any git repos needed for the job and the zuul merger did not have to merge any changes for any of them, the merger may not have up to date copies of those repos22:36
mordredgah22:36
mordredI said it in more words than jeblair  - but jeblair said it better22:36
jlkbut that would be a different builder22:36
jlkand can use something else for that value22:37
jeblairmordred: i was about to say you said it better :)22:37
mordredjlk: imagine a devstack job - needs like 40 different repos to run - but there is only currently a proposed change to nova22:37
jlkI can see in that case, having a mirror could reduce traffic, at the expense of cache issues22:37
mordredjlk: the merger will only have nova22:37
mordredjlk: it will not have the other 39 repos22:37
jlkmordred: sure.22:37
jlkmordred: that feels like a different builder element though22:38
jlkit's not just "prep the source of this repo", it's "prep all the deps of this repo"22:38
mordredbut you need to use zuul-cloner to clone all 40 repos because the job has no way of knowing if it will have a change from them22:38
jlkI don't see it being used that way in infra's zuul-git-prep22:39
jlkmaybe that all still lives in gerrit-git-prep22:39
jlkand for v3 it'll be even weirder. What will launcher/merger push into the node?22:39
jlkjust nova, or nova+deps?22:39
mordredjeblair: ^^ excellent question22:40
jeblairthat macro only handles the single repo case; integration jobs use something else (either a different invocation of zuul-cloner, or its antecedent code in devstack-gate)22:40
jeblairmordred, jlk: it will push all the repos22:40
jesusauroh, huh, yeah, if v3 is pushing the refs, do we lose the ability to configure custom clone paths with a clonemap?22:40
jlkjeblair: that was my point, we'll use a different macro for the dependent repos case22:41
jlkbut first I need to solve the single repo case22:41
mordredGOTCHA - sorry - I was going too complex on you22:41
jlkwe're crawling, and trying to walk22:41
jlksomeday we'll run22:41
mordredfor the single repo case, cloning from the merger should be fine - since the merger by definition would have merged the change you're testing to the single repo you are working with22:42
mordredjesusaur: I need to write up a spec - but I'm proposing that we follow go get semantics and clone everything to $BASE/src/${git_host}/${repo} - and if you need more complex layouts, you should be able to do symlinks or something22:44
mordredjesusaur: is there a use case I'm not thinking of that that would mess up?22:44
* mordred thinks he should actually write up the spec so that people can tear it apart22:44
* jesusaur thinks that was for jeblair22:45
* jeblair thinks it was for jesusaur :)22:45
clarkbmordred: one thing to be wary of doing that is the exec shebang limit in linux we hit with virtualenvs22:45
jlkthat was an answer for the custom paths with the mapping22:45
jesusauroh, so it was :)22:46
mordredjesusaur: it was for you ... in response to "do we lose the ability to configure custom clone paths with a clonemap?"22:46
clarkbmordred: adding morestuff topaths potentially makes exec unhappy22:46
jlkhrm, why would there be more stuff to path?22:46
mordredclarkb: it does- but for supporting multi-source (or supporting go at all) putting the host in the path winds up being essential22:46
jlkwouldn't they all get tossed into the same venv?22:46
jlklike, the source is in once place, but the venv you build is... combined?22:47
jeblairclarkb: we are dropping the job name, so i expect that path to be "/opt/workspace/git.openstack.org/openstack-infra/really-long-project-name"22:47
mordred++22:47
jesusaurmordred: oh i guess the symlinks work. the main case i was thinking of was cloning puppet modules into /etc/puppet/modules22:47
mordredyah - I think symlinks are going to be the friend there - might want something like clonemap that can declare a set of repos and symlink locations that can be added into the ansible of a job22:48
jlkFeels right to have a standard path that zuul exposes the sources, and then the jobs after that deal with pathing22:49
jlkinstead of letting a job inform zuul how to expose the source on the node22:49
SpamapSso.........22:49
SpamapSforgive me if I missed backscroll about this22:49
* mordred hands SpamapS a pie to distract him22:50
SpamapSbut the v3 future is a pushed-into-the-node future, not a zuul-cloner future...22:50
mordredyup22:50
jlkthat's my understanding22:50
SpamapSok now I"m backscrolled enough to see that was where we were already at22:50
clarkbjeblair: mordred ah ok no job name helps a ton22:50
SpamapSok n/m I have nothing to add22:51
* SpamapS should read forward instead of backwards22:51
jlkclarkb: how does the path of the source checkout impact the shabang of a venv?22:51
jeblairremote:   https://review.openstack.org/410442 Update zuulv3 spec to include job repo information22:51
jeblairi just realized that while the job-repos thing was in the pencil sketches, i could not find it in the spec itself; there's an update22:52
clarkbjlk: because tox for example is run relative to the repo22:52
jlkooh right, to22:52
jlkx22:52
clarkbjlk so with tox you have $repopath/.tox/venv/bin/foo22:52
clarkbfoo's shebang is what we are concerned about22:53
jlkyeah.22:53
jesusauroh, and that can reach the max path length for a shebang22:53
jlkYou can specify a path for tox to make the venv though right? .tox/venv/ is just the defualt?22:53
clarkbjlk: yes but that generally unfriendly to devs22:54
clarkband assumes they want stuff in /tmp and know to look there for their install etc22:54
jlkfair enough22:54
clarkbjesusaur: yes 127 bytes is limit22:54
*** willthames has joined #zuul23:10
openstackgerritJames E. Blair proposed openstack-infra/zuul: Re-enable zuultrigger test  https://review.openstack.org/40884823:25
openstackgerritJames E. Blair proposed openstack-infra/zuul: Reorganize connections into drivers  https://review.openstack.org/40884923:25
jeblairjhesketh: would you please take a look at 408849 and let me know what you think?  i like the structure of it, but think that we will probably want to polish it up a bit before we declare it a public api.23:27
jheskethjeblair: yes, I was excited by that change but haven't had a chance yet23:29
jheskethwill hopefully take a look today :-)23:29
jeblairjhesketh: cool, it's ready for actual review now :)23:29
jheskethwoo :-)23:30
openstackgerritMerged openstack-infra/nodepool: Merge feature/zuulv3 into master  https://review.openstack.org/41042623:34
mordred\o/23:34
pabelangerwee23:39
jeblairfor realz this time23:40
jheskethnice!23:41

Generated by irclog2html.py 2.14.0 by Marius Gedminas - find it at mg.pov.lt!