Commit Graph

5218 Commits

Author SHA1 Message Date
OpenShift Merge Robot 20b15f07ed
Merge pull request #18538 from ygalblum/play-multiple-configmaps
Kube Play - Support multi-doc YAML files for configmap argument
2023-05-11 08:25:37 -04:00
Ygal Blum 26f1e95ab4 Kube Play - Support multi-doc YAML files for configmap argument
Read the entire YAML file in case of a multi-doc file
Adjust the unit test
Add a system test
Add comment in the man page

Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
2023-05-11 13:13:08 +03:00
Ed Santiago c33ba70f95 system tests: instrument, to try to catch unlinkat-ebusy
Several tweaks to see if we can track down #17216, the unlinkat-ebusy
flake:

 - teardown(): if a cleanup command fails, display it and its
   output to the debug channel. This should never happen, but
   it can and does (see #18180, dependent containers). We
   need to know about it.

 - selinux tests: use unique pod names. This should help when
   scanning journal logs.

 - many tests: add "-f -t0" to "pod rm"

And, several unrelated changes caught by accident:
 - images-commit-with-comment test: was leaving a stray image
   behind. Clean it up, and make a few more readability tweaks

 - podman-remote-group-add test: add an explicit skip()
   when not remote. (Otherwise, test passes cleanly on
   podman local, which is misleading)

 - lots of container cleanup and/or adding "--rm" to run commands,
   to avoid leaving stray containers

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-05-10 14:53:11 -06:00
OpenShift Merge Robot 5bf82d6ece
Merge pull request #18518 from Luap99/e2e
[CI:DOCS] test: update README for integration tests
2023-05-10 09:34:40 -04:00
Ed Santiago 14001ad48a e2e: logs test: fix flakes
Yet another case of missing podman-wait. In these two, I see
no reason to run containers detached, so I just removed "-d"

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-05-10 04:53:44 -06:00
OpenShift Merge Robot c307aeba37
Merge pull request #18506 from nalind/so-much-diffsize
libpod/Container.rootFsSize(): use recorded image sizes
2023-05-10 06:08:12 -04:00
OpenShift Merge Robot 3c781c4cda
Merge pull request #18517 from edsantiago/quadlet_timeout
system tests: timeoutize quadlet, systemd
2023-05-10 06:03:03 -04:00
OpenShift Merge Robot 7a5daa0df3
Merge pull request #18492 from daw1012345/main
Ensure the consistent setting of the HOME env variable on container start
2023-05-10 05:34:02 -04:00
OpenShift Merge Robot f8da6f0599
Merge pull request #18527 from edsantiago/wait_for_systemd_activate
e2e: stop podman.service test: wait for server
2023-05-10 04:09:20 -04:00
Ed Santiago ff37615bfd e2e: stop podman.service test: wait for server
Another low-hanging fruit: test flake because podman-remote
trying to contact a server that hadn't come up.

Fixes: #17940

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-05-09 14:34:47 -06:00
renovate[bot] 58fd879596
fix(deps): update module golang.org/x/tools to v0.9.1
Signed-off-by: Renovate Bot <bot@renovateapp.com>
2023-05-09 16:56:11 +00:00
OpenShift Merge Robot 287a4193e7
Merge pull request #18520 from ygalblum/quadlet-test-notify
Quadlet system tests - fix socket notification
2023-05-09 12:09:14 -04:00
OpenShift Merge Robot dc01ce8768
Merge pull request #18515 from vrothberg/fix-18486
quadlet: support `HostName`
2023-05-09 11:21:28 -04:00
Dawid Kulikowski 01e20818cc
Ensure the consistent setting of the HOME env variable on container start
Signed-off-by: Dawid Kulikowski <git@dawidkulikowski.pl>
2023-05-09 16:34:28 +02:00
Ygal Blum 8aaa13accb Quadlet system tests - fix socket notification
In some tests use Notify=yes while in others remove the notification

Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
2023-05-09 17:27:47 +03:00
Ed Santiago d24bec0d03 system tests: timeoutize quadlet, systemd
Run $QUADLET and all systemctl/journalctl commands using 'timeout'.
Nothing should ever, ever take more than the default 2 minutes.

Followup to #18514, in which quadlet tests are found to be
taking 9-10 minutes.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-05-09 07:46:12 -06:00
Paul Holzinger 3d6894426c
test: update README for integration tests
- document env vars that can be used
- list up to date dependencies
- remove unnecessary GOPATH mention, no longer needed with gomodules
- use make targets to tests everything (much faster due `-p` option)
- remove tests in container section as make shell is not a valid target

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-05-09 15:45:43 +02:00
Nalin Dahyabhai c400cc7ead libpod/Container.rootFsSize(): use recorded image sizes
In rootFsSize(), instead of calculating the size of the diff for every
layer of the container's base image, ask the storage library for the sum
of the values it recorded when it first wrote those layers.

In a similar fashion, teach rwSize() to use the library's
ContainerSize() method instead of trying to roll its own.

Replace calls to pkg/util.SizeOfPath() with calls to
github.com/containers/storage/pkg/directory.Size(), which does the same
thing.

Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>
2023-05-09 09:33:37 -04:00
Valentin Rothberg b97be3406b quadlet: support `HostName`
Add a new `HostName` field to Quadlet `.container` files.

Fixes: #18486
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-05-09 13:35:54 +02:00
Ed Santiago 9dc107e749 e2e: fix race in a play-kube test
Yet another case where tests expect play-kube to be synchronous.
There are probably dozens more of these.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-05-09 05:19:05 -06:00
OpenShift Merge Robot edcb29b19f
Merge pull request #18511 from containers/renovate/golang.org-x-tools-0.x
fix(deps): update module golang.org/x/tools to v0.9.0
2023-05-09 05:03:56 -04:00
renovate[bot] 40b21fa7d5
fix(deps): update module golang.org/x/tools to v0.9.0
Signed-off-by: Renovate Bot <bot@renovateapp.com>
2023-05-09 06:13:19 +00:00
Daniel J Walsh 332b47fefb
Check on client side for Containerfile, if none specified
Fixes: https://github.com/containers/podman/issues/16354

Currently we check on the server side, which ends up generating a bad
error message.

$ podman --remote build foo/
ERRO[0000] While reading directory /home/dwalsh/go/src/github.com/containers/podman/foo: EOF
Error: stat /var/tmp/libpod_builder1249622306/build/Dockerfile: no such file or directory

With this change you will get

./bin/podman --remote build foo/
Error: Containerfile not specified and no Containerfile or Dockerfile found in context directory, /home/dwalsh/podman/foo

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-05-08 13:58:37 -04:00
Ed Santiago 9ec630f305 Buildah treadmill: several fixes
- treadmill script: run root & rootless in parallel, not
  sequentially. It's only four jobs, and it seems dumb
  to fix root tests, repush, then discover a rootless failure.

- apply-podman-deltas: implement skip_if_rootless(), and
  use it to skip a nasty longstanding flake

- bud-tests-in-podman diffs: ugly code to fix a rootless hang.
   background: rootless remote tests hang
   cause: stray podman server process
   root cause: no idea. No clue at all. I just gave up
   workaround: seek out and kill stray server processes

  Rootless buildah-bud tests are not run in regular CI,
  only in the buildah treadmill.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-05-08 05:28:11 -06:00
renovate[bot] 1bf057e8cf
chore(deps): update dependency docker to ~=6.1.0
Signed-off-by: Renovate Bot <bot@renovateapp.com>
2023-05-05 19:24:45 +00:00
renovate[bot] 773b457048
chore(deps): update dependency requests to ~=2.30.0
Signed-off-by: Renovate Bot <bot@renovateapp.com>
2023-05-04 16:51:16 +00:00
OpenShift Merge Robot d1a696acb7
Merge pull request #18385 from dcermak/setup-env-in-init-containers
Run generate.CompleteSpec() for initContainers as well
2023-05-04 10:12:40 -04:00
OpenShift Merge Robot 8bfb27a3ce
Merge pull request #18462 from Luap99/no-cleanup-twice
libpod: do not Cleanup() more than once
2023-05-04 09:55:06 -04:00
Paul Holzinger 95557a532e
libpod: do not Cleanup() more than once
If the container was already cleaned up we should not try to do it
again. Podman stop will always try to call Cleanup() if you look at the
podman event log and just keep calling podman stop --all you see a
cleanup event every time. This is not wanted. Also in case of the host
pidns we report a error every single time, see the linked issue.

Fixes #18460

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-05-04 13:53:40 +02:00
Paul Holzinger df9344ac4b
compat container create: match duplicate mounts correctly
The logic which checks for duplicated volumes here did not work
correctly because it used filepath.Clean(). However the writes to the
volDestinations map did not thus the string no longer matched when you
included a final slash for example.

So we can either call Clean() on all or no paths. I decided to call it
on no path because this is what we do right now. Just the check did it.

Fixed #18454

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-05-04 11:57:02 +02:00
Dan Čermák 75d92f41d8
Run generate.CompleteSpec() for initContainers as well
initContainers in kubernetes deployments had no call to CompleteSpec in the
generation, which means that the default environment is not configured for
these. This causes issues with missing default environment variables like $HOME
or $PÄTH.

Also, switch to using logrus.Warn() instead of fmt.Fprintf(os.Stderr)

This fixes https://github.com/containers/podman/issues/18384

Co-authored-by: Ed Santiago <santiago@redhat.com>
Signed-off-by: Dan Čermák <dcermak@suse.com>
2023-05-04 08:21:57 +02:00
renovate[bot] d25356c303
fix(deps): update module github.com/onsi/ginkgo/v2 to v2.9.4
Signed-off-by: Renovate Bot <bot@renovateapp.com>
2023-05-03 22:33:15 +00:00
Ed Santiago f877d7dcd0 Replace egrep/fgrep with grep -E/-F
There are days when I really, really, really hate GNU. Remember
when someone decided that 'head -1' would no longer work, and
that it was OK to break an infinite number of legacy production
scripts? Someone now decided that egrep/fgrep are deprecated,
and our CI logs (especially pr-should-include-tests) are now
filled with hundreds of warning lines, making it difficult
to find actual errors.

I expect that those warnings will be removed quickly after
furious community backlash, just like the 'head -1' fiasco
was quietly reverted, but ITM the warnings are annoying
so I capitulate.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-05-03 07:32:42 -06:00
renovate[bot] 1b2b0d0315
fix(deps): update module github.com/onsi/ginkgo/v2 to v2.9.3
Signed-off-by: Renovate Bot <bot@renovateapp.com>
2023-05-03 05:35:43 +00:00
OpenShift Merge Robot 0851d6475d
Merge pull request #18345 from vrothberg/fix-18092
api: fix parsing filters
2023-05-02 17:09:53 -04:00
OpenShift Merge Robot 09c11a8d95
Merge pull request #17627 from umohnani8/pod-restart
Add --restart flag to pod create
2023-05-02 16:46:52 -04:00
OpenShift Merge Robot 6577e3f297
Merge pull request #18409 from Luap99/e2e-cni
test/e2e: do not remove CNI directory
2023-05-02 15:29:54 -04:00
OpenShift Merge Robot 28573fa9d2
Merge pull request #18255 from edsantiago/cleanup
e2e test cleanup
2023-05-02 12:15:49 -04:00
OpenShift Merge Robot d494af9647
Merge pull request #18414 from vrothberg/fix-17763
history: correctly set tags
2023-05-02 11:57:23 -04:00
Ed Santiago fbe62f329a More cleanup: volumes: do not export to stdout
This one got complicated, and deserves its own commit.

Problem: ginkgo logs have a lot of NUL characters, making them
difficult for logformatter to process and for humans to read.

Cause: Paul tracked it down to "podman volume export" without "-o"
(hence spitting out tar data to stdout).

Solution: add "-o tmpfile" to named podman-volume-export. In
the process, fix all sorts of other problems with that test.
And, since the e2e test no longer tests "volume export" by
itself, add a system test that does.

It is possible that there are other places that emit NULs.
One step at a time.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-05-02 08:36:26 -06:00
Ed Santiago 3050a64373 e2e test cleanup
- fix a typo that was resulting in a test being a NOP, and
   add actual testing to it.

 - fix two Expects() with incorrectly-ordered actual/expects

 - remove leading whitespace from an It() test name

 - To(BeTrue()) is evil. Wherever possible, replace it with
   useful string or field checks. When not possible, use
   the annotation field to indicate what failed. I got
   carried away here, #sorrynotsorry

 - remove unused system-test code

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-05-02 08:36:26 -06:00
Urvashi Mohnani fa1ba17bc1 Update kube gen & play to use pod restart policy
Podman kube generate now uses the pod's restart policy
when generating the kube yaml. If generating from containers
only, use the restart policy of the first non-init container.
Podman kube play applies the pod restart policy from the yaml
file to the pod. The containers within a pod inherit this restart
policy.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-05-02 10:30:07 -04:00
Urvashi Mohnani edbeee5238 Add --restart flag to pod create
Add --restart flag to pod create to allow users to set the
restart policy for the pod, which applies to all the containers
in the pod. This reuses the restart policy already there for
containers and has the same restart policy options.
Add "never" to the restart policy options to match k8s syntax.
It is a synonym for "no" and does the exact same thing where the
containers are not restarted once exited.
Only the containers that have exited will be restarted based on the
restart policy, running containers will not be restarted when an exited
container is restarted in the same pod (same as is done in k8s).

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-05-02 10:29:58 -04:00
Valentin Rothberg 9e9bcec9ec history: correctly set tags
Requires vendoring fixes from c/common and to update the transformation
code.  Also add a test to avoid future regressions.

Fixes: #17763
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-05-02 16:21:09 +02:00
Valentin Rothberg 1720042d04 api: fix parsing filters
Podman and Docker clients split the filter map slightly different, so
account for that when parsing the filters in the image-listing endpoint.

Fixes: #18092
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-05-02 11:45:36 +02:00
Paul Holzinger c4b9f4b34e
ginkgo-v2 cleanup workaround for #18180
Add a workaround for #18180 so the ginkgo work can be merged without
being blocked by the issue. Please revert this commit when the issue
is fixed.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-05-02 11:27:40 +02:00
Paul Holzinger 5eb99a0ac8
test/e2e: fix custom timing reporting
This never worked when ginkgo runs with more than one thread, we use 3
in CI. The problem is that the SynchronizedAfterSuite() function accepts
two functions. The first one is run for each ginkgo node while the
second one is only run once for the whole suite.

Because the timings are stored as slice thus in memory we loose all
timings from the other nodes as they were only reported on node 1.
Moving the printing in the first function solves this but causes the
problem that the result is now no longer sorted. To fix this we let
each node write the result to a tmp file and only then let the final
after suite function collect the timings from all these files, then
sort them and print the output like we did before.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-05-02 11:27:40 +02:00
Paul Holzinger b3424f3708
test/e2e: unshare --rootless-netns cleanup slirp4netns
podman unshare --rootless-netns leaks the namespace and slirp4netns by
design as there is no safe way to remove it without any races.

To trigger a cleanup we can spin up a container and it will
automaticallt teardown the netns for us.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-05-02 11:27:39 +02:00
Paul Holzinger 054154c77d
test/e2e: run system reset test serial
USe the new ginkgo `Serial` decorator to make sure system reset is
never executed in parallel. system reset stops teh rootless pause
process which causes major issues when other process in parallel still
use this old namesapce.

Fixes #17903

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-05-02 11:27:39 +02:00
Paul Holzinger c5922cc6f0
test/e2e: fix CleanupVolume/Secrets()
Just like Cleanup() they should check the error codes.
While doing this it was clear that some volume tests were calling
Cleanup() twice so remove this.

Instead make sure they call Cleanup() themselves so callers only need to
do one call. This is required because we cannot use Expect().To() before
doing all the cleanup. An error causes panic does results in an early
return thus missing potentially important cleanup.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-05-02 11:27:39 +02:00