Commit Graph

1499 Commits

Author SHA1 Message Date
openshift-merge-bot[bot]
d38ee1364d Merge pull request #21267 from danishprakash/new-pod-behavior
rm pod with run, create if ctr creation failed with --pod new:
2024-01-17 20:20:52 +00:00
danishprakash
1c88b12204 rm pod with podman run if ctr creation failed
Currently, if the container creation failed with
either run or create and you've used --pod with new:
the pod would be created nonetheless. This change ensures
the pod just created is also cleaned up in case
of container creation failure

Fixes #21228

Signed-off-by: danishprakash <danish.prakash@suse.com>
2024-01-17 18:59:32 +05:30
Ed Santiago
e66413b51b CI: reenable tests that are working again
- #15074 ("subtree_control" flake). The flake is NOT FIXED, I
  saw it six months ago on my (non-aarch64) laptop. However,
  it looks like the frequent-flake-on-aarch64 bug is resolved.
  I've been testing in #17831 and have not seen it. So,
  tentatively remove the skip and see what happens.

- Closes: #19407 (broken tar, "duplicates of file paths")
  All Fedoras now have a fixed tar. Debian DOES NOT, but
  we're handling that in our build-ci-vm code. I.e., the
  Debian VM we're using has a working tar even though there's
  currently a broken tar out in the wild.

  Added distro-integration tag so we can catch future problems
  like this in OpenQA.

- Closes: #19471 (brq / blkio / loopbackfs in rawhide)
  Bug appears to be fixed in rawhide, at least in the VMs we're
  using now.

  Added distro-integration tag because this test obviously
  relies on other system stuff.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-01-16 10:07:48 -07:00
Ed Santiago
0e09527bd2 systests: kube with policies test: fix race
Add a wait_for_ready() to one kube-play test, to make sure
container output has made it to the journal.

Probably does not fix #18501, but I think it might fix its
most common presentation.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-01-11 13:04:41 -07:00
openshift-merge-bot[bot]
83f89db6c8 Merge pull request #20961 from karuboniru/patch-1
fix checking of relative idmapped mount
2024-01-11 17:20:56 +00:00
openshift-merge-bot[bot]
28b5a6e5f0 Merge pull request #21201 from edsantiago/rhel8_gating
System tests: fixes for RHEL8 gating failures
2024-01-10 11:18:32 +00:00
Ming Liu
4e4c3e3dbf cmd: support --config option to locate authentication file
Let's support --config option by setting environment variable
DOCKER_CONFIG instead of ignoring it for docker compatibility, so
it could be used to locate config.json as authentication file.

Also add a test case for this change, remove the deprecated one.

Signed-off-by: Ming Liu <liu.ming50@gmail.com>
2024-01-10 09:31:43 +01:00
Ed Santiago
780733415b System tests: fixes for RHEL8 gating failures
- tmpfs + noswap test: requires noswap feature in kernel.
  Check for it, and skip if unimplemented. (Root only.
  Rootless test works regardless of kernel).

- podman generate systemd tests: always use --files option,
  because otherwise the "DEPRECATED" warning gets written
  to the systemd unit file.

- kube play tests: yikes. Fix longstanding bugs when checking
  for containers running. This revealed a longstanding bug
  in one test: multi-pod YAML never actually worked. Fixed now.

- run_podman(): that new check-for-warnings code we added
  in #19878, duh, I skipped it on Debian but should've skipped
  when *runc*. Do so now and update the comment. Requires
  minor surgery to podman_runtime() helper to avoid
  infinite recursion.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-01-09 09:30:15 -07:00
Alex Jia
260f814bd3 test/system: add test for mounting issue in the init container
Test coverage: https://issues.redhat.com/browse/RHEL-14469

Signed-off-by: Alex Jia <chuanchang.jia@gmail.com>
2024-01-05 09:57:12 +08:00
Ed Santiago
8c546cf7ee CI: bump VMs
All VMs have pasta 2023-12-04, so, remove a skip.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-01-02 16:10:35 -07:00
openshift-merge-bot[bot]
d1d38b2aa4 Merge pull request #21011 from edsantiago/wait_wait_wait
CI: safer podman-stop tests
2023-12-15 20:31:38 +00:00
Ygal Blum
d026ccf9a7 Kube Play - pass arguments to build
Create a buildah SystemContext from the existing cli arguments
Pass the SystemContext to the build
Add system test

Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
2023-12-14 16:31:09 +02:00
Ed Santiago
1c59a9ced1 CI: safer podman-stop tests
A number of tests start a container then immediately run podman stop.
This frequently flakes with:

   StopSignal SIGTERM failed to stop [...] in 10 seconds, resorting to SIGKILL

Likely reason: container is still initializing, and its process
has not yet set up its signal handlers.

Solution: if possible (containers running "top"), wait for "Mem:"
to indicate that top is running. If not possible (pods / catatonit),
sleep half a second.

Intended to fix some of the flakes cataloged in #20196 but I'm
leaving that open in case we see more. These are hard to identify
just by looking in the code.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-12-14 04:49:46 -07:00
Ed Santiago
232c32bd35 CI: systests: safer isolation in registry & tests
Our test registry (used for login & local registry tests)
was being run using the standard podman tmpdir, hence the
standard podman database, This was then getting clobbered
in the 330-corrupt-images test, which runs "system reset".
We just didn't know this was happening. Until we added
a registry test after the system reset. Oops.

Solution: new helper function podman_isolation_opts()
sets --root, --runroot, *and --tmpdir*. Refactor all
existing --root/--runroot usages. Document.

Next problem: the "network reload" test in 500-networking.bats
did not (could not) know about our registry port, so the
"iptables -F" command reverted that to DROP, so the subsequent
podman-auth in 700-play timed out.

Solution: add a podman-isolated "network reload" to start_registry().

Final problem, because, really, those weren't enough: a BATS
bug where running with --filter-tags would set IFS=',' in setup_suite
which in turn has catastrophic consequences:

    https://github.com/bats-core/bats-core/issues/812

See #20966 for details of the failure and further conversation.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-12-13 09:46:09 -07:00
openshift-merge-bot[bot]
4582b61d7c Merge pull request #20958 from rhatdan/ps
Support podman ps --format '{{ .Label label }}'
2023-12-13 14:26:17 +00:00
openshift-merge-bot[bot]
5db4224427 Merge pull request #20976 from Luap99/string-array
cli: use StringArray over StringSlice Part 2
2023-12-13 12:22:31 +00:00
Daniel J Walsh
f51ff77644 Support podman ps --format '{{ .Label label }}'
Also Support for podman pod ps  --format '{{ .Label label }}'

Finally fix support for --format '{{ .Podname }}'
   When user specifies .Podname this implies --pod was passed.

Fixes: https://github.com/containers/podman/issues/20957

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-12-13 07:09:54 -05:00
openshift-merge-bot[bot]
a52f75e20b Merge pull request #20938 from edsantiago/new_vms
CI: unskip tests on new VMs
2023-12-13 10:32:30 +00:00
Paul Holzinger
3e10a68328 cli: podman kube play --configmap use StringArray()
This option accepts a file path so we should allow commas in it.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-12-11 15:43:21 +01:00
Paul Holzinger
48ab4aec31 podman kube play: fix broken annotation parsing
If a user did not set an equal sign in the annotation that old code
would panic when accessing the second element in the slice.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-12-11 15:43:21 +01:00
Paul Holzinger
e916f49f0b cli: podman kube play --annotation use StringArray()
This option accepts arbitrary input so we should allow commas in it.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-12-11 15:43:20 +01:00
Ed Santiago
6415471dcd EMERGENCY: fix broken CI
Broken by #20827.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-12-11 06:28:21 -07:00
openshift-merge-bot[bot]
611ba2ff31 Merge pull request #20827 from kaivol/userns-auto-intermediate-id-lookup
Support lookup of intermediate ID for uidmapping and gidmapping in `--userns=auto`
2023-12-11 10:19:14 +00:00
kaivol
952c708906 added system test
Signed-off-by: kaivol <github@kavol.de>
2023-12-10 14:16:08 +01:00
Karuboniru
23f6c48515 Add test for relative idmap mount
Signed-off-by: Karuboniru <yanqiyu01@gmail.com>
2023-12-10 13:13:30 +00:00
Ed Santiago
c823d49fdc CI: unskip tests
New VMs have netavark 1.9, which fixes the "cannot talk to syslog"
warning when running containerized, so we can reenable clean-output
checks in containerized e2e tests

pasta: some new VMs have passt >= 2023-11-10, but f38 does not,
and f39 is unclear (my version extractor could not tell). So
I'm leaving the 20170 skip.

Debian runc now supports umask in *run*, but not *exec*. Even
with runc 1.1.10. And we don't even know what the situation is
on RHEL... so, run the podman-run umask tests but not exec.

Fixes: #19809

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-12-08 15:51:36 -07:00
Paul Holzinger
4590b663a7 add test for podman exec --env-file
There was no test for this option, resuse existing podman run
--env-file test for exec as well.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-12-08 15:06:24 +01:00
Paul Holzinger
833163ff3e add podman create --label-file test
There was no test for this option so I added one.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-12-08 15:06:23 +01:00
Paul Holzinger
b011aa4430 cli: podman run/create --env-file use StringArray()
This option accepts a file path so we should allow commas in it.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-12-08 12:17:01 +01:00
Paul Holzinger
12c39ffda2 cli: podman --module use StringArray()
This option accepts a file path so we should allow commas in it.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-12-08 12:17:01 +01:00
Ed Santiago
0d1b90d367 CI: systests: fix flaking --since test
Very rare flake, probably caused by my nemesis, podman run -d

Solution: keep the sleep-1 (vs using nanosecond resolution),
but make sure we first wait for the output from the container.

Also, bump down the iteration delay in wait_for_output, from 5s to 1.
Thanks to Paul for noticing that.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-12-07 09:41:07 -07:00
openshift-merge-bot[bot]
a64cc98179 Merge pull request #20912 from edsantiago/fix_some_cp_flakes
systests: cp: add wait_for_ready
2023-12-06 15:38:37 +00:00
openshift-merge-bot[bot]
67aae8e62e Merge pull request #20866 from giuseppe/add-preserve-fds-list
podman: new option --preserve-fd
2023-12-06 13:34:34 +00:00
openshift-merge-bot[bot]
6efebb35cb Merge pull request #20889 from ygalblum/quadlet-build-crash
Kube Play - set ReportWriter when building an image
2023-12-05 19:55:35 +00:00
Ed Santiago
4d2125bafb systests: cp: add wait_for_ready
Some of the tests were doing "podman run -d" without wait_for_ready.
This may be the cause of some of the CI flakes. Maybe even all?
It's not clear why the tests have been working reliably for years
under overlay, and only started failing under vfs, but shrug.

Thanks to Chris for making that astute observation.

Fixes: #20282  (I hope)

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-12-05 11:58:42 -07:00
Giuseppe Scrivano
01d397a658 podman: new option --preserve-fd
add a new option --preserve-fd that allows to specify a list of FDs to
pass down to the container.

It is similar to --preserve-fds but it allows to specify a list of FDs
instead of the maximum FD number to preserve.

--preserve-fd and --preserve-fds are mutually exclusive.

It requires crun since runc would complain if any fd below
--preserve-fds is not preserved.

Closes: https://github.com/containers/podman/issues/20844

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2023-12-05 10:16:41 +01:00
Ygal Blum
a943be7e8e Kube Play - set ReportWriter when building an image
Add test for a specific crash
Update play build test to expect message in stderr

Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
2023-12-05 09:45:21 +02:00
Ed Santiago
1f42aff933 systests: debug systemd failures
When a systemd-related system test fails, we usually get:

    systemctl start foo
    FAILED exit status 1, try 'systemctl --status' or 'journalctl -xe'

That makes it impossible to debug flakes.

Solution: new systemctl_start() [note underscore], to be used
instead of systemctl <SPACE> start. On failure, will run log
commands.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-12-04 09:28:49 -07:00
Matt Heon
f384bdf66b Handle symlinks when checking DB vs runtime configs
When Podman starts, it checks a number of critical runtime paths
against stored values in the database to make sure that existing
containers are not broken by a configuration change. We recently
made some changes to this logic to make our handling of the some
options more sane (StaticDir in particular was set based on other
passed options in a way that was not particularly sane) which has
made the logic more sensitive to paths with symlinks. As a simple
fix, handle symlinks properly in our DB vs runtime comparisons.

The BoltDB bits are uglier because very, very old Podman versions
sometimes did not stuff a proper value in the database and
instead used the empty string. SQLite is new enough that we don't
have to worry about such things.

Fixes #20872

Signed-off-by: Matt Heon <mheon@redhat.com>
2023-12-02 15:48:47 -05:00
openshift-merge-bot[bot]
3b03e85471 Merge pull request #20789 from umohnani8/healthcheck
Don't update health check status during initialDelaySeconds
2023-12-01 13:12:50 +00:00
Ed Santiago
f95dd21d5d deferred test failures: handle a corner case
Followup to #20797 (defer assertion failures). The bail-now()
helper was being defined only in setup() ... and some tests,
particularly 001-basic.bats, define their own minimalist setup().

Symptom was "bail-now: command not found", which still caused
test to fail (so no failures were hidden) but led to concern
and wasted time when analyzing failures.

Solution: add one more definition of bail-now(), in outer scope.

There is still one pathological case I'm not addressing: a
bats file that defines its own teardown() which does not invoke
basic_teardown(), then has a test that runs defer-assertion-failures
without a followup immediate-assertion-failures. This would lead
to failures that are never seen. Since teardown() without basic_teardown()
is invalid, I choose not to worry about this case.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-11-30 06:33:46 -07:00
Ed Santiago
3e70415089 Gating test fixes
Two newly-added tests, fail in gating:
 - system connection: difference in how sockets are set up
   between CI and gating
 - ulimit: gating seems to run with ulimit -c -H 0. Check, and
   skip if ulimit is less than what we need

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-11-29 07:51:43 -07:00
Urvashi Mohnani
f35d1c1c25 Don't update health check status during initialDelaySeconds
When InitialDelaySeconds in the kube yaml is set for a helthcheck,
don't update the healthcheck status till those initial delay seconds are over.
We were waiting to update for a failing healtcheck, but when the healthcheck
was successful during the initial delay time, the status was being updated as healthy
immediately.
This is misleading to the users wondering why their healthcheck takes
much longer to fail for a failing case while it is quick to succeed for
a healthy case. It also doesn't match what the k8s InitialDelaySeconds
does. This change is only for kube play, podman healthcheck run is
unaffected.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-11-29 08:37:39 -05:00
openshift-merge-bot[bot]
21951e2376 Merge pull request #20799 from edsantiago/symlink-mounts
[systests] podman mount no-dereference: complete rewrite
2023-11-29 01:14:48 +00:00
openshift-merge-bot[bot]
545daed1e4 Merge pull request #20762 from ygalblum/quadlet-pod
Quadlet - Add support for .pod units
2023-11-28 14:44:00 +00:00
Ygal Blum
6b2f48129e Quadlet - Add support for .pod units
Add support for .pod unit files with only PodmanArgs, GlobalArgs, ContainersConfModule and PodName
Add support for linking .container units with .pod ones
Add e2e and system tests
Add to man page

Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
2023-11-28 14:31:53 +02:00
Ed Santiago
c664cfe886 [systests] podman mount no-dereference: complete rewrite
Existing test was very good, but as a multidimensional table it
was unmaintainable... and actually missed one corner case.

This version isn't much better. It's far longer, codewise. It
is a little harder to understand at first glance. It has three
uncomfortable magic conditionals. But I believe it is more
long-term maintainable: beyond the first glance, it is possible
for a human to check it for correctness. It is also extensible,
as proved by the new test cases I added.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-11-28 04:45:51 -07:00
Ed Santiago
29d18079cb [systests] new defer-assertion-failure
Some system tests run deep loops:

  for x in a b c; do
    for y in d e f; do
        .... check condition $x + $y

Normally, if one of these fails, game over. This can be frustrating
to a developer looking for failure patterns.

Here we introduce a new defer-assertion-failure function, meant
to be called before loops like these. Everything is the same,
except that tests will continue running even after failure.

When test finishes, or if test runs immediate-assertion-failure,
a new message indicates that multiple tests failed:

  FAIL: X test assertions failed. Search for 'FAIL': above this line.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-11-27 11:31:29 -07:00
Daniel J Walsh
ddd6cdfd77 Ignore SELinux relabel on unsupported file systems
We were ignoreing relabel requests on certain unsupported
file systems and not on others, this changes to consistently
logrus.Debug ENOTSUP file systems.

Fixes: https://github.com/containers/podman/discussions/20745

Still needs some work on the Buildah side.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-11-22 09:25:38 -05:00
Valentin Rothberg
e40d70cecc new 'no-dereference' mount option
Add a new `no-dereference` mount option supported by crun 1.11+ to
re-create/copy a symlink if it's the source of a mount.  By default the
kernel will resolve the symlink on the host and mount the target.
As reported in #20098, there are use cases where the symlink structure
must be preserved by all means.

Fixes: #20098
Fixes: issues.redhat.com/browse/RUN-1935
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-11-21 13:17:58 +01:00