Commit Graph

7017 Commits

Author SHA1 Message Date
renovate[bot]
18abb18c9a chore(deps): update dependency setuptools to ~=75.9.1
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-12 19:03:18 +00:00
Paul Holzinger
9e94dc53b2 add new artifact mount type
Add a new option to allow for mounting artifacts in the container, the
syntax is added to the existing --mount option:
type=artifact,src=$artifactName,dest=/path[,digest=x][,title=x]

This works very similar to image mounts. The name is passed down into
the container config and then on each start we lookup the artifact and
the figure out which blobs to mount. There is no protaction against a
user removing the artifact while still being used in a container. When
the container is running the bind mounted files will stay there (as the
kernel keeps the mounts active even if the bind source was deleted).
On the next start it will fail to start as if it does not find the
artifact. The good thing is that this technically allows someone to
update the artifact with the new file by creating a new artifact with
the same name.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2025-03-12 19:42:14 +01:00
Paul Holzinger
f6e2d94409 test/e2e: improve createArtifactFile()
There is no need whatsoever to run container to populate a random file,
this is just much slower than just writing some random bytes directly
without having to run a container and run dd in it.

Also the function accepted the number of bytes, however because dd uses
a minimum block size of 512 bytes it was actually numBytes * 1024 which
where written. That makes no sense so fix the two tests that depended on
the wrong number.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2025-03-12 19:42:14 +01:00
openshift-merge-bot[bot]
9573519cca Merge pull request #25452 from ygalblum/quadlet-warning-messages
Quadlet warning messages
2025-03-12 17:35:29 +00:00
Giuseppe Scrivano
c9c44d400c libpod: do not cover idmapped mountpoint
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2025-03-11 11:03:41 +01:00
Ygal Blum
02658bc4cc Quadlet - Propagate warnings and print errors and warnings as they occur
Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
2025-03-10 11:51:32 -04:00
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