Commit Graph

6961 Commits

Author SHA1 Message Date
Paul Holzinger 945aade38b
quadlet kube: correctly mark unit as failed
When no containers could be started we need to make sure the unit status
reflects this. This means we should not send the READ=1 message and not
keep the service container running when we were unable to start any
container.

There is the question what should happen when only a subset was started.
For systemd we can only be either running or failed. And as podman kube
play also just keeps the partial started pods running I opted to let
systemd keep considering this as success.

Fixes #20667
Fixes https://issues.redhat.com/browse/RHEL-80471

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2025-03-05 15:53:55 +01:00
Paul Holzinger 47a743bba2
report healthcheck start errors
When starting a container consider healthcheck errors fatal. That way
user know when systemd-run failed to setup the timer to run the
healthcheck and we don't get into a state where the container is running
but not the healthcheck.

This also fixes the broken error reporting from the systemd-run exec, if
the binary could not be run the output was just empty leaving the users
with no idea what failed.

Fixes #25034

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2025-03-04 16:48:50 +01:00
Jan Rodák 511d912685
Add stopped status for HealthCheck
If the container is stopped and the ongoing HealthCheck has no chance to complete the check is evaluated as stopped.

Fixes: https://issues.redhat.com/browse/RUN-2520
Fixes: https://github.com/containers/podman/issues/25276

Signed-off-by: Jan Rodák <hony.com@seznam.cz>
2025-03-03 17:09:30 +01:00
renovate[bot] 7bcd9c066e
chore(deps): update dependency pytest to v8.3.5
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-03 14:49:43 +00:00
openshift-merge-bot[bot] efe8e165d8
Merge pull request #25417 from mheon/fix_25368
Fix volume quota assignment
2025-03-01 15:11:06 +00:00
Jan Kaluza 20523152f8 Add "create" and "remove" events for secrets.
This commit adds the "secret" Event type and emits
"create" and "remove" events for this Event type
when Secret is created or removed.

This can be used for example by podman interfaces to
view and manage secrets.

Fixes: #24030

Signed-off-by: Jan Kaluza <jkaluza@redhat.com>
2025-02-28 16:58:06 +01:00
Matt Heon f71067d710 Create quota before _data dir for volumes
This resolves an ordering issue that prevented quotas from being
applied. XFS quotas are applied recursively, but only for
subdirectories created after the quota is applied; if we create
`_data` before the quota, and then use `_data` for all data in
the volume, the quota will never be used by the volume.

Also, add a test that volume quotas are working as designed using
an XFS formatted loop device in the system tests. This should
prevent any further regressions on basic quota functionality,
such as quotas being shared between volumes.

Fixes #25368

Signed-off-by: Matt Heon <mheon@redhat.com>
2025-02-28 09:52:55 -05:00
openshift-merge-bot[bot] e44ba88686
Merge pull request #25385 from panekj/patch-1
Fix reporting summed image size for compat endpoint
2025-02-27 14:39:49 +00:00
renovate[bot] 6796562b50
fix(deps): update module github.com/vbatts/git-validation to v1.2.2
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-26 05:43:42 +00:00
Jakub Panek 4dbbf264c7
Fix reporting summed image size for compat endpoint
Signed-off-by: Jakub Panek <me@panekj.dev>
2025-02-25 04:03:28 +00:00
Brent Baude cbc73457ab Add --all to artifact rm
Add the ability to remove all artifacts with a --all|-a option in podman
artifact rm.

Fixes: https://issues.redhat.com/browse/RUN-2512

Signed-off-by: Brent Baude <bbaude@redhat.com>
2025-02-20 09:38:50 -06:00
openshift-merge-bot[bot] ca1c029c43
Merge pull request #25366 from baude/artifacterrortypes
Define artifact error types
2025-02-20 09:47:53 +00:00
Brent Baude 7030b559fb Define artifact error types
In a different PR review, it was noted that defined error types for
artifacts was lacking.  We have these for most other commands and they
help with error differentiation. The changes here are to define the
errors, implement them in the library, and adopt test verifications to
match.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2025-02-19 13:10:47 -06:00
Brent Baude 6ad2dc0590 wire up --retry-delay for artifact pull
fixed a bug in the artifact code where --retry-delay was being
discarded.

Fixes: https://issues.redhat.com/browse/RUN-2511

Signed-off-by: Brent Baude <bbaude@redhat.com>
2025-02-19 09:09:36 -06:00
Giuseppe Scrivano 4695564730
oci: report empty exec path as ENOENT
unify the error codes returned by runc and crun.

Fix the tests to work with both runtimes, as well as the
https://github.com/containers/crun/pull/1672 changes in progress for
crun.

Follow-up for https://github.com/containers/podman/pull/25340

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2025-02-18 22:01:08 +01:00
openshift-merge-bot[bot] 4f89bbe0d8
Merge pull request #25346 from mathstuf/quadlet-container-memory
quadlet: support `Memory=` in `[Container]` sections
2025-02-17 21:09:17 +00:00
openshift-merge-bot[bot] c37787b79e
Merge pull request #25343 from Luap99/buildah-bud-ci
test/buildah-bud: run in parallel
2025-02-17 20:47:16 +00:00
openshift-merge-bot[bot] 910f9dd98e
Merge pull request #25340 from giuseppe/fix-crun-error-messages
tests: adapt e2e tests new crun error messages
2025-02-17 20:44:31 +00:00
Giuseppe Scrivano c65bb903b6
test: adapt tests new crun error messages
Needed-by: https://github.com/containers/crun/pull/1672

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2025-02-17 20:47:43 +01:00
Giuseppe Scrivano 35d2a65e3a
test: remove duplicate test
"podman run exit ExecErrorCodeCannotInvoke" does the same thing.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2025-02-17 20:47:29 +01:00
Ben Boeckel 543be25ef3 quadlet: support `Memory=` in `[Container]` sections
Maps to the `--memory=` flag.

Signed-off-by: Ben Boeckel <mathstuf@gmail.com>
2025-02-17 17:29:15 +01:00
Ed Santiago 22da944e4a
Parallelize buildah bud tests
Buildah bats tests have been made (mostly) parallel-safe
in the past few months. One test is flaking, but it's
not a test that needs to be run under podman: that
functionality is almost entirely buildah-manifest-push
so it uses the buildah binary, and doesn't exercise
anything under podman.

Therefore:

  1) run bud tests with -j$(nproc) on fastvm (was: standardvm)

  2) desperate scramble to parallelize podman system service.

May not be quite 100% perfect, but I think this is in good
enough shape for someone to adopt and push through.

Signed-off-by: Ed Santiago <santiago@redhat.com>
Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2025-02-17 14:01:21 +01:00
Paul Holzinger 3de18b537e
test/buildah-bud: run bats in parallel
Since commit 708fe0af in buildah the tests can run in parallel, let's
enable it here to get the same speed up.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2025-02-17 13:19:29 +01:00
openshift-merge-bot[bot] 7c2959e244
Merge pull request #25315 from Luap99/lint-1.64.4
update golangci-lint to v1.64.4
2025-02-14 14:27:12 +00:00
openshift-merge-bot[bot] 53c9100c72
Merge pull request #25310 from containers/renovate/docker.io-library-golang-1.x
chore(deps): update docker.io/library/golang docker tag to v1.24
2025-02-13 11:26:09 +00:00
Paul Holzinger 77737132a5
Revert "silence false positve from golangci-lint"
This reverts commit 8b6f14f95b.

https://github.com/golangci/golangci-lint/issues/5398 is fixed

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2025-02-13 12:18:53 +01:00
openshift-merge-bot[bot] 24e2e9c69b
Merge pull request #25003 from Honny1/no-db-healtcheck-exec
Run HealthCheck without saving the `ExecSession` to the database
2025-02-13 10:14:28 +00:00
renovate[bot] 5c17f7a650
chore(deps): update docker.io/library/golang docker tag to v1.24
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-12 19:40:24 +00:00
openshift-merge-bot[bot] 6521a3244a
Merge pull request #25304 from Luap99/lint-1.64.2
update golangci-lint to v1.64.2
2025-02-12 19:26:03 +00:00
Paul Holzinger 8b6f14f95b
silence false positve from golangci-lint
This is valid and the upstream linter allows it but somehow with
golangci-lint it produces an error:

Success matcher only support a single error value, or function with Gomega as its first parameter

I reported a bug upstream[1] but for now let's just ignore it so we can
update the linter.

[1] https://github.com/golangci/golangci-lint/issues/5398

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2025-02-12 14:01:10 +01:00
Jan Rodák fdd442cbdf
Create `--append` flag to add file to existing artifact
Fixes: https://issues.redhat.com/browse/RUN-2444

Signed-off-by: Jan Rodák <hony.com@seznam.cz>
2025-02-12 10:33:37 +01:00
Jan Rodák a17175eb3a
Cleanup test
Signed-off-by: Jan Rodák <hony.com@seznam.cz>
2025-02-12 10:14:47 +01:00
openshift-merge-bot[bot] 2f261d1e19
Merge pull request #25238 from Luap99/artifact-extract
add podman artifact extract
2025-02-11 18:47:23 +00:00
openshift-merge-bot[bot] 4a0b230610
Merge pull request #24775 from mheon/fix_24738
In SQLite state, use defaults for empty-string checks
2025-02-11 15:43:09 +00:00
Paul Holzinger 3925a30fa7
add podman artifact extract
Add a new command to extract the blob content of the artifact store to a
local path.

Fixes https://issues.redhat.com/browse/RUN-2445

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2025-02-11 14:36:53 +01:00
Jan Rodák ad9839ac55
Run HealthCheck without creating and removing the ExecSession in the database
Fixes: https://issues.redhat.com/browse/RHEL-69970

Signed-off-by: Jan Rodák <hony.com@seznam.cz>
2025-02-11 13:59:00 +01:00
openshift-merge-bot[bot] 2e36bc0a05
Merge pull request #25285 from containers/renovate/golang.org-x-tools-0.x
fix(deps): update module golang.org/x/tools to v0.30.0
2025-02-11 12:00:26 +00:00
renovate[bot] a2380bca1e
fix(deps): update module golang.org/x/tools to v0.30.0
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-10 22:02:40 +00:00
Paul Holzinger 7e612f6ebb
test/system: remove tar version check
All the VM images should have a new enough version.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2025-02-10 18:55:20 +01:00
Matt Heon cb53abca28 In SQLite state, use defaults for empty-string checks
As part of our database init, we perform a check of the current
values for a few fields (graph driver, graph root, static dir,
and a few more) to validate that Libpod is being started with a
sane & sensible config, and the user's containers can actually be
expected to work. Basically, we take the current runtime config
and compare against values cached in the database from the first
time Podman was run.

We've had some issues with this logic before this year around
symlink resolution, but this is a new edge case. Somehow, the
database is being loaded with the empty string for some fields
(at least graph driver) which is causing comparisons to fail
because we will never compare against "" for those fields - we
insert the default value instead, assuming we have one.

Having a value of "" in the database largely invalidates the
check so arguably we could just drop it, but what BoltDB did -
and what SQLite does after this patch - is to use the default
value for comparison instead of "". This should still catch some
edge cases, and shouldn't be too harmful.

What this does not do is identify or solve the reason that we are
seeing the empty string in the database at all. From my read on
the logic, it must mean that the graph driver is explicitly set
to "" in the c/storage config at the time Podman is first run and
I'm not precisely sure how that happens.

Fixes #24738

Signed-off-by: Matt Heon <mheon@redhat.com>
2025-02-10 12:42:11 -05:00
openshift-merge-bot[bot] a475083bff
Merge pull request #25169 from mheon/graph_stop
Add graph-based pod stop
2025-02-10 17:00:19 +00:00
Paul Holzinger 5bada90190
test/apiv2: fix registry push flake
In our CI env we use a special registries.conf file
(test/registries.conf) to redirect some parts but it also defines:
[[registry]]
location="localhost:5000"
insecure=true

That means that port 5000 is trusted by default so the
/v1.40/images/localhost:5000/myrepo/push?tag=mytag test in 12-imagesMore
fails when the test registry uses port 5000.

Example failure:
not ok 360 [12-imagesMore] POST /v1.40/images/localhost:5000/myrepo/push?tag=mytag [-d {}] : status
 #  expected: 500
 #    actual: 200
 #  response: {"status":"The push refers to repository [localhost:5000/myrepo:mytag]"}
 {"status":"mytag: digest: sha256:d40f8191d6dae366339e318d1004258022f56bd8c649720a72060fad20019c9d size: 758"}

To avoid using port 5000 simply start at 5001.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2025-02-10 13:40:29 +01:00
Matt Heon 46d874aa52 Refactor graph traversal & use for pod stop
First, refactor our existing graph traversal code to improve code
sharing. There still isn't much sharing between inward traversal
(stop, remove) and outward traversal (start) but stop and remove
are sharing most of their code, which seems a positive.

Second, add a new graph-traversal function to stop containers.
We already had start and remove; stop uses the newly-refactored
inward-traversal code which it shares with removal.

Third, rework the shared stop/removal inward-traversal code to
add locking. This allows parallel execution of stop and removal,
which should improve the performance of `podman pod rm` and
retain the performance of `podman pod stop` at about what it is
right now.

Fourth and finally, use the new graph-based stop when possible
to solve unordered stop problems with pods - specifically, the
infra container stopping before application containers, leaving
those containers without a working network.

Fixes https://issues.redhat.com/browse/RHEL-76827

Signed-off-by: Matt Heon <mheon@redhat.com>
2025-02-06 18:28:12 -05:00
Miloslav Trmač e5bcd6542e Add tests for chunked pulls
Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2025-02-06 00:39:51 +01:00
Miloslav Trmač 27ccfef3a1 Don't use all of tempdir as podman's --tmpdir
... because (podman system reset) will delete all of it,
interfering with the test storing other data in the directory.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2025-02-05 22:52:46 +01:00
openshift-merge-bot[bot] 39becc2f05
Merge pull request #24781 from ashley-cui/builtfor
Add BuildOrigin field to podman info
2025-02-04 20:13:27 +00:00
openshift-merge-bot[bot] 16a72c839d
Merge pull request #25200 from Luap99/artifact-single-manifest
artifact: only allow single manifest
2025-02-04 16:33:21 +00:00
openshift-merge-bot[bot] 538a6a3560
Merge pull request #25216 from Honny1/fix-hc-pause-flake
Fix flake test: `podman pause/unpause with HealthCheck interval`
2025-02-04 15:21:54 +00:00
Jan Rodák 52febf6a0a
Fix flake test: podman pause/unpause with HealthCheck interval
Checking of service and timer caused unexpected exit code `3` of `systemctl status`. Since the status check can be executed when HealthCheck was exited, this caused a termination error code `3` for `systemctl status`. Because service was in dead state because HealthCheck exited.

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

Signed-off-by: Jan Rodák <hony.com@seznam.cz>
2025-02-04 15:46:52 +01:00
openshift-merge-bot[bot] 1273a418b8
Merge pull request #25205 from baude/artifactnoheading
Add --noheading to artifact ls
2025-02-04 11:42:56 +00:00