Sunday, 2020-05-10

*** swest has quit IRC01:50
*** swest has joined #zuul02:04
*** evrardjp has quit IRC04:36
*** evrardjp has joined #zuul04:36
*** etp has quit IRC06:46
*** dpawlik has joined #zuul06:50
*** etp has joined #zuul07:26
*** dpawlik has quit IRC07:33
openstackgerritAlbin Vass proposed zuul/zuul master: Update to create-react-app 3.4.1  https://review.opendev.org/71630507:33
*** avass has joined #zuul07:34
*** tosky has joined #zuul08:43
avassmordred: ooh, the error only occurs if you build it. I'm able to reproduce it locally now08:53
zbrclarkb: mordred: any chance to finally get https://review.opendev.org/#/c/690057/ in?11:06
zbri rebased that change for more than 6mo, every time other changes where more important :p11:07
avasszbr: right, I was supposed to take another look at that11:43
zbravass: thanks. also, please ping me when you think that the react-app bumping is ready.11:46
avasszbr: sure, I've tracked it down to the NotificationDrawer.Toggle returning undefined so far11:48
avassI think that's it at least11:49
*** tumble has joined #zuul12:50
mordredavass: ooh! so a difference between prod and debug builds perhaps13:33
openstackgerritMonty Taylor proposed zuul/zuul-jobs master: Add new non-npm specific javascript jobs  https://review.opendev.org/72654713:53
avassmordred: yeah must be, fixing peer dependencies doesn't seem to solve it either13:56
mordredavass: I wonder if somehow it's optimizing something out that it thinks is unused, and then when there is an error it's trying to use it without initializing it *waves hands wildly*13:59
avassmordred: I'm trying to see if it's something like that by comparing to master14:01
avassmordred: looks like it's missing some components from patternfly14:14
avassmordred: I think that's it, NotificationDrawerToggle.js is served on master and when running a debug build but must be optimized away when building14:22
mordredavass: aha!14:24
mordredavass: I'm readig through webpack stuff to see what we can do about it14:31
*** tumble has quit IRC14:35
mordredavass: what about doing this: http://paste.openstack.org/show/793359/14:42
avassmordred: tried it, didn't seem to change anything14:44
avassmordred: oh, except for NotificationDrawer.Toggle -> NotificationDrawerToggle, I'll try that14:44
mordredhah: Attempted import error: 'NotificationDrawerToggle' is not exported from 'patternfly-react'.14:45
avassmordred: interesting, looks like anything to do with NotificationDrawer crashes the webapp14:51
avassmordred: this also works with a debug build but crashes a production build: http://paste.openstack.org/show/793360/14:53
avassmordred: since all of those files, Panel, Toggle etc are missing14:54
avassmordred: and this works: http://paste.openstack.org/show/793361/ :)14:55
openstackgerritMerged zuul/zuul master: Don't reconfigure the tenant on tag creation  https://review.opendev.org/72621315:05
avassmordred: I wonder if we should be using StatefulToggleNotificationDrawerWrapper or something like that instead15:25
*** evrardjp has quit IRC16:36
*** evrardjp has joined #zuul16:36
*** tumble has joined #zuul17:00
openstackgerritMerged zuul/zuul master: executor: Catch error when reading cpu_times  https://review.opendev.org/72654517:17
tumbleI don't understand how to prepare an image for nodepool. I currently just configure a naked debian image in the provider section's cloud-images attribute. But how do I know what needs to be installed in such image before and where does the nodepool-builder come into play? Or is it optional?17:29
*** armstrongs has joined #zuul17:32
funginodepool's builder daemon creates disk images and then uploads them to providers17:36
fungiit uses software called diskimage-builder to create the images17:36
fungidiskimage-builder is configured with a set of "elements" which consist of arbitrary scripts/executables run either inside or outside chroot trees in various phases and a defined priority order17:37
fungidib can do something as simple as consume a distro's published cloud image and add some custom configuration or copy some cached files into it17:38
fungiand also convert to image formats specific to different providers, in case your providers have different image format requirements17:38
fungithe builder recreates and uploads new images at a configurable frequency (daily, weekly, whatever you like) to keep them fresh17:39
tumblety, it sounds like it's just a useful helper and I could just as well provide some image within my cloud for nodepool to use, right? But I would need to know what tools zuul expects to find in it, like ansible probably?17:40
fungiansible is "agentless" so you just need to be able to ssh into the server once booted from the image17:41
*** armstrongs has quit IRC17:41
fungioh, you do need a python interpreter in the image, i guess17:41
tumbleI thought the zuul-executor sshs into such node and executes ansible there, running playbooks etc.17:41
fungiansible actually builds ephemeral python modules at the initiating end, copies them over an ssh connection and executes them in-place on the remote side17:42
tumbleah okay so the executor is the host running the plays and the nodepool nodes are just the target hosts17:42
fungiso you don't need ansible installed on a remote system, the ansible run by the executor is installed on the executor17:43
fungiyep17:43
fungithe nodepool nodes are your ansible "inventory"17:43
tumbleokay, cool. I'm still struggling because I don't really see why my zuul builds are failing. No log output whatsoever. Was just my wild theory that the node images lack some tooling, but sounds like that shouldn't be the case.17:44
fungithe zuul scheduler figures out from your job's specified nodeset how many of what types of nodes to request from the nodepool launchers, and then when they return that set of node ids zuul creates an ansible inventory on the executor for that job17:45
fungiso check that the ssh bootstrapping key zuul is using on your executor(s) can successfully log into the configured account name on one of your nodepool nodes17:45
tumbleok, good point, will check that once more.17:46
fungialso the executor log should contain output from any attempted ansible invocations17:48
fungiyou can set debugging on if you want verbose ansible output too17:48
fungiand you can even set the executor to not clean up the workspaces it creates, in case you want to inspect one17:48
fungihowever, be careful to turn it back off again, it can quickly eat a lot of disk on an active deployment17:49
tumbleguess I'll look for the verbose option then, because no errors appear in the executor and ssh into the nodes works17:51
tumbleit just recreates the nodes a few times until the retry limit is reached17:51
fungido you see evidence of any builds getting initiated at all?17:51
fungiif not, may be better to start with the scheduler's logs to see if it's not assigning any work to the executors17:52
tumblehttp://dpaste.com/0F29FZJ <- this is what the executor says and it looks like it's running jobs to me17:53
tumblehttp://dpaste.com/295HV8Z <- and that's the scheduler. Also looks "okay" apart from some warnings which seem to be expected17:56
fungibased on the executor log, it looks like it thinks the job simply isn't configured to do anything18:03
tumbleoh, well, that's possible since all it does using the debug module to say hi18:04
tumblemaybe I should try to do more than that. But why would it report back to gerrit as FAILURE then? :/18:05
fungiprobably the next thing to work on is log collection18:05
tumbleyeah I saw the upload-logs thingy. I hope the job run gets far enough to reach that18:05
fungiwell, the executor seems to indicate the job completed18:06
fungibut also, turning on debug logging for both the executor and scheduler might help in working out what it's doing exactly18:07
fungifiguring out why zuul isn't doing something is a lot harder than figuring out why it is doing something18:07
tumble:D18:07
tumbleI also prefer big stack traces yelling at me that stuff is broken18:07
fungi(since there's an essentially infinite number of possible things it *could* do)18:07
fungibut yeah, from the log snippets you pasted, it looks like it believes it's doing whatever you asked of it18:08
fungidebug level logs will provide some additional detail as to what it reports, why it reported it, et cetera18:09
fungialso it records the entire decision-making process about why it did or didn't run a particular job18:12
fungithough in this case it seems to be running a job, you presumably just want to know why it reports a failure for builds of that job18:13
fungidebug logging on the executor will get you all the ansible stdout/stderr too18:14
tumbleactivated that now, indeed very talkative. Is there a smarter way of retriggering a build from a gerrit review than changing something, amending and using git review again?18:14
fungiin opendev we configure our check pipeline to additionally trigger on any review comment starting with the word "recheck"18:15
fungibut zuul also comes with a zuul-enqueue utility which can enqueue a change via its rcp interface18:15
fungis/rcp/rpc/18:15
tumblesince I followed the tutorial with that, I just rememberd it's indeed configured to react on comments18:15
tumblelet's see18:15
fungier, i guess it's actually the "enqueue" subcommand of the "zuul" rpc client utility18:16
fungi`zuul enqueue --help` to get context help and find out the parameters it needs18:16
tumbleAnsible output: b"bwrap: No permissions to creating new namespace, likely because the kernel does not allow non-privileged user namespaces. On e.g. debian this can be enabled with 'sysctl kernel.unprivileged_userns_clone=1'."18:23
tumblethis looks like it could be the culprit18:23
tumbleis it trying to wrap the execution in a kind of container?18:24
fungiyes, the executor sandboxes ansible invocations with a tool called bubblewrap, which is like a lightweight container essentially18:25
fungithis is an added layer of protection against jobs coercing ansible into doing something untoward on the executor and being able to influence or compromise other builds18:26
tumbleso nodes are recycled for several builds? I thought it would create a fresh one for each job18:27
tumbles/job/pipeline/18:27
fungijob nodes are recreated not recycled (unless you're using the static provider driver)18:27
tumbleusing the openstack driver18:28
fungibut jobs can also run playbooks locally on the executor by specifying "localhost" as the host18:28
fungihowever with very limited constraints18:28
fungiplaybooks run on the executor are generally things like copying git repositories to remote nodes, collecting logs from remote nodes for publication, and sometimes lightweight actions like hitting a rest api somewhere18:29
tumbleit looks like I won't be able to avoid reading about the diskimage builder ';D18:30
fungitumble: well, the error you mentioned is specific to the server where the zuul-executor service is running, and has nothing to do with nodepool or diskimage-builder18:42
fungiit's saying your executor's server needs kernel.unprivileged_userns_clone enabled in the kernel, or possibly that you're trying to run the executor service itself in an unprivileged container18:43
fungii think also the bubblewrap tool may expect to be setuid 0 if it's going to be run by unprivileged users18:48
tumbleoh, good point, I didn't realize it's failing on the executor. Well, I'm using the "official" (but undocumented) containers. That might be the reason18:50
fungithe executor container may need to be run privileged18:51
tumblewill try that18:51
fungiour deployment (opendev) us running the scehduler, web and merger services in regular containers but still running the executor service outside containers18:51
fungiin part because of the complexity of essentially having to do nested containers18:52
tumbleI could do the same when scaling out, but since it's an all-in-one deployment yet and I'm still playing around with all the different pieces, it was very inviting to go with the containers that don't pollute the VM18:53
tumbleprivileged did the trick18:56
tumble"everything" seems to be working now18:56
tumblethank you very much. Would have taken me forever to figure it out alone. :)18:57
*** avass has quit IRC18:59
fungiyou're welcome! sounds like we could stand to improve those parts of the documentation19:06
AJaegermordred, ianw, so https://review.opendev.org/726413 passes now in opendev but still fails in Vexxhost CI19:06
AJaegermordred: https://review.opendev.org/#/c/726413/7/roles/ensure-pip/tasks/workarounds.yaml : the probe for venv says it exists - but that looks wrong..19:06
openstackgerritAndreas Jaeger proposed zuul/zuul-jobs master: Revert "Revert "ensure-tox: use venv to install""  https://review.opendev.org/72641319:08
AJaegermordred: let's enable logs to see why Vexxhost CI thinks venv is installed in the test but complains later about it missing ^19:09
mnasersorry for inflicting that much work :) but uh yeah, nothing 'fancy' about those images19:11
mnaserthey're dib built and i think i posted the config19:11
mnaseryikes https://www.irccloud.com/pastebin/6xgxu5BG/19:12
mnaserAJaeger: ^19:13
AJaegermnaser: thanks. Let's see what the logs show from this run.19:15
AJaegermnaser: btw. could you help https://review.opendev.org/#/c/725898 merged so that https://review.opendev.org/#/c/724067/2 can merge, please? (that's ansible-hardening)19:16
AJaegermnaser: is VEXXHOST CI down? I'm used to quick reports but haven't see anything on 726413  yet...19:22
mnaserAJaeger: 3 jobs x 3 retry_limit :)19:23
mnaserAJaeger: https://zuul.vexxhost.dev/t/opendev/status :)19:23
mnaserit just reported19:23
AJaegermnaser: ah, great - thanks19:23
mnaser(that issue we're troubleshooting fails in pre so it retries it 3 times)19:23
AJaegersorry for ma impatience19:23
AJaegerAh!19:23
AJaegermordred, mnaser, ianw, I'm puzzled https://zuul.vexxhost.dev/t/opendev/build/d3320ba9ce4f461ba6c420674e908d66/console shows that python3 -m venv --help works and venv is installed (ensure-pip: Probe for venv) and then fails with venv not installed19:25
mnaserAJaeger: maybe we need to look into how debian does its "replacement" of venv19:32
mnasermaybe it replaces it by a stripped down module and not remove --help and stuff like that19:33
AJaegeryeah, might be needed19:35
mnaserAJaeger: oh...19:36
mnaserAJaeger: we're trying to create a venv using py3 in the tox-py27 job?19:36
mnaserhttps://packages.debian.org/buster/amd64/python3-venv/filelist19:41
mnasermaybe we can check for pyenv ?19:41
mnaserpyvenv*19:41
ianw... this was supposed to be simple! :)22:35
ianwAJaeger/mnaser: the other thing about that message is i think it's something that's thrown on any exception, maybe it's not actually related to python3-venv22:38
openstackgerritIan Wienand proposed zuul/zuul-jobs master: [wip] Revert "Revert "ensure-tox: use venv to install""  https://review.opendev.org/72641322:44
openstackgerritIan Wienand proposed zuul/zuul-jobs master: [wip] Revert "Revert "ensure-tox: use venv to install""  https://review.opendev.org/72641322:49
openstackgerritIan Wienand proposed zuul/zuul-jobs master: [wip] Revert "Revert "ensure-tox: use venv to install""  https://review.opendev.org/72641322:53
openstackgerritIan Wienand proposed zuul/zuul-jobs master: [wip] Revert "Revert "ensure-tox: use venv to install""  https://review.opendev.org/72641322:59
*** tumble has quit IRC23:10
*** tosky has quit IRC23:13
openstackgerritIan Wienand proposed zuul/zuul-jobs master: [wip] Revert "Revert "ensure-tox: use venv to install""  https://review.opendev.org/72641323:17
openstackgerritIan Wienand proposed zuul/zuul-jobs master: [wip] Revert "Revert "ensure-tox: use venv to install""  https://review.opendev.org/72641323:22
openstackgerritIan Wienand proposed zuul/zuul-jobs master: [wip] Revert "Revert "ensure-tox: use venv to install""  https://review.opendev.org/72641323:27
openstackgerritIan Wienand proposed zuul/zuul-jobs master: [wip] Revert "Revert "ensure-tox: use venv to install""  https://review.opendev.org/72641323:30
ianw^ /bin/sh: 4: /usr/local/bin/python3: not found ... so there is *no* python in /usr/local/bin on these images23:32
ianwbut there *is* a pip installation there it seems23:33
fungiif python3 is installed from distro packages but ensurepip is used to bootstrap pip, i believe you'll get that combination23:37
ianwyeah, basically the problem here is that we have assumed "if pip3 command exists, then python -m venv must work"23:47
ianwi think this is true if you install python3-pip package, which (again i think) will bring in python3-venv on debuntu23:48

Generated by irclog2html.py 2.17.2 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!