Commit Graph

5615 Commits

Author SHA1 Message Date
Urvashi Mohnani
310f971fcf Add tests for podman farm
Add tests for podman farm create, remove, and update.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-08-09 13:37:37 -04:00
Ed Santiago
23d5b5008c CI: e2e: add delay before podman logs or journalctl
...to reduce flakes.

Reason: journald makes no guarantees. Just because a systemd job
has finished, or podman has written+flushed log entries, doesn't
mean that journald will actually know about them:

   https://github.com/systemd/systemd/issues/28650

Workaround: wrap some podman-logs tests inside Eventually()
so they will be retried when log == journald

This addresses, but does not close, #18501. That's a firehose,
with many more failures than I can possibly cross-reference.
I will leave it open, then keep monitoring missing-logs flakes
over time, and pick those off as they occur.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-08-09 09:29:11 -06:00
Paul Holzinger
a55c2636de file logger: fix podman logs --tail with partial lines
There is a problem where our tail code does not handles correctly
partial log lines. This makes podman logs --tail output possibly
incorrect lines when k8s-file is used.

This manifests as flake in CI because partial lines are only sometimes
written, basically always when the output is flushed before writing a
newline.

For our code we must not count partial lines which was already done but
the important thing we must keep reading backwards until the next full
(F) line. This is because all partial (P) lines still must be added to
the full line. See the added tests for details on how the log file looks
like.

While fixing this, I rework the tail logic a bit, there is absolutely no
reason to read the lines in a separate goroutine just to pass the lines
back via channel. We can do this in the same routine.
The logic is very simple, read the lines backwards, append lines to
result and then at the end invert the result slice as tail must return
the lines in the correct order. This more efficient then having to
allocate two different slices or to prepend the line as this would
require a new allocation for each line.

Lastly the readFromLogFile() function wrote the lines back to the log
line channel in the same routine as the log lines we read, this was bad
and causes a deadlock when the returned lines are bigger than the
channel size. There is no reason to allocate a big channel size we can
just write the log lines in a different goroutine, in this case the main
routine were read the logs anyway.

A new system test and unit tests have been added to check corner cases.

Fixes #19545

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-08-09 14:48:01 +02:00
OpenShift Merge Robot
eb465b40c8 Merge pull request #19549 from rhatdan/quadlet
podman stop --cidfile missing --ignore
2023-08-09 07:50:19 -04:00
renovate[bot]
4c4bc09227 Update docker.io/library/golang Docker tag to v1.21
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-09 01:03:32 +00:00
OpenShift Merge Robot
d4f967c19e Merge pull request #19541 from containers/renovate/major-ci-vm-image
Update dependency containers/automation_images to v20230807
2023-08-08 17:11:22 -04:00
OpenShift Merge Robot
195f1be89a Merge pull request #19371 from danishprakash/daemonset-support
kube: add DaemonSet support
2023-08-08 17:05:09 -04:00
Daniel J Walsh
f55c48ad3a podman stop --cidfile missing --ignore
Podman should ignore failures to find a cidfile when stoping the
container if the user specified --ignore

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-08-08 17:03:15 -04:00
Chris Evich
7ef03517f9 Skip podman exec cannot be invoked on Debian
Ref: https://github.com/containers/podman/issues/19552

Signed-off-by: Chris Evich <cevich@redhat.com>
2023-08-08 14:34:25 -04:00
Chris Evich
95ceacefbf Re-enable checkpoint test on Debian SID
An unhelpful comment doesn't give any clues why this test was originally
skipped on Ubuntu.  In any case, now that CI uses Debian SID, re-enable
the test hoping that it now functions.

Signed-off-by: Chris Evich <cevich@redhat.com>
2023-08-08 14:34:25 -04:00
Chris Evich
c193dbd942 Require a non-generic reason for non-Fedora skip
Signed-off-by: Chris Evich <cevich@redhat.com>
2023-08-08 14:34:24 -04:00
OpenShift Merge Robot
cc31ac4b0e Merge pull request #19530 from mheon/fix_19529
Ensure volumes-from mounts override image volumes
2023-08-08 04:55:11 -04:00
OpenShift Merge Robot
2f50d8e579 Merge pull request #19425 from rhatdan/service
Add support for passing container stop timeout as -1 (infinite)
2023-08-08 04:52:33 -04:00
Matthew Heon
2de22ebf0d Ensure volumes-from mounts override image volumes
We do not allow volumes and mounts to be placed at the same
location in the container, with create-time checks to ensure this
does not happen. User-added conflicts cannot be resolved (if the
user adds two separate mounts to, say, /myapp, we can't resolve
that contradiction and error), but for many other volume sources,
we can solve the contradiction ourselves via a priority
hierarchy. Image volumes come first, and are overridden by the
`--volumes-from` flag, which are overridden by user-added mounts,
etc, etc. The problem here is that we were not properly handling
volumes-from overriding image volumes. An inherited volume from
--volumes-from would supercede an image volume, but an inherited
mount would not. Solution is fortunately simple - just clear out
the map entry for the other type when adding volumes-from
volumes.

Makes me wish for Rust sum types - conflict resolution would be a
lot simpler if we could use a sum type for volumes and bind
mounts and thus have a single map instead of two maps, one for
each type.

Fixes #19529

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2023-08-07 15:04:33 -04:00
OpenShift Merge Robot
eceae9da57 Merge pull request #19478 from dcermak/show-socket-exists
Always show RemoteSocket.Exists in json
2023-08-05 12:37:52 +02:00
OpenShift Merge Robot
9e18e9fafd Merge pull request #19414 from rhatdan/systemd
Deprecate podman generate systemd
2023-08-04 20:06:41 +02:00
Dan Čermák
dd4f47dd98 Always show RemoteSocket.Exists in json
The `Exists` field of the `RemoteSocket` struct is marshaled to json with the
`omitempty` setting. This has the disadvantage that by default `podman info`
shows a `remotePath` entry (the remote path is set in
`pkg/domain/infra/abi/systems.go`: `(*ContainerEngine).Info`) but not that this
path does not exist:
```
❯ podman info --format json | jq .host.remoteSocket
{
  "path": "/run/user/1000/podman/podman.sock"
}
```

By removing the `omitempty`, we ensure that the existence is always shown:
```
❯ bin/podman info --format json | jq .host.remoteSocket
{
  "path": "/run/user/1000/podman/podman.sock",
  "exists": false
}
```

Signed-off-by: Dan Čermák <dcermak@suse.com>
2023-08-04 16:24:58 +02:00
Daniel J Walsh
1e54539432 Add support for passing container stop timeout as -1 (infinite)
Compat api for containers/stop should take -1 value

Add support for `podman stop --time -1`
Add support for `podman restart --time -1`
Add support for `podman rm --time -1`
Add support for `podman pod stop --time -1`
Add support for `podman pod rm --time -1`
Add support for `podman volume rm --time -1`
Add support for `podman network rm --time -1`

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-08-04 08:36:45 -04:00
OpenShift Merge Robot
84dec22349 Merge pull request #19494 from rhatdan/codespell
Run codespell on code
2023-08-03 19:32:27 +02:00
OpenShift Merge Robot
92090d6acc Merge pull request #19310 from cgiradkar/fix_dash_t_flag
Check tty flag to set default terminal in Env
2023-08-03 18:49:51 +02:00
Ed Santiago
a8974d4a3e CI: e2e: remove useless test
Remove "HTTP if one registry" test. It is a NOP, has been skipped
for two months, and nobody knows what its original purpose was.

Closes: #18768

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-08-03 06:16:25 -06:00
Chetan Giradkar
53d44a65e5 Check tty flag to set default terminal in Env
First, all the defaults for TERM=xterm were removed from c/common, then accordingly the same will be added if encountered a set tty flag.

Signed-off-by: Chetan Giradkar <cgiradka@redhat.com>
2023-08-03 12:29:21 +01:00
OpenShift Merge Robot
bde942e216 Merge pull request #19468 from flouthoc/manifest-add-compression
manifest, push: implement `--add-compression` to push with compressed variants.
2023-08-03 13:15:34 +02:00
Daniel J Walsh
62a22c5d60 Run codespell on code
Also cleanup --rm=true to be just --rm

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-08-03 07:00:30 -04:00
Daniel J Walsh
44f159ed31 Deprecate podman generate systemd
Now that Quadlets are fully supported, it is time to Depracate
podman generate systemd command.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-08-03 06:58:53 -04:00
OpenShift Merge Robot
b8c9ad8982 Merge pull request #19482 from rhatdan/rmi
Make podman run --rmi automatically set --rm
2023-08-03 10:55:00 +02:00
Aditya R
346f9cb4ed manifest/push: add support for --add-compression
Adds support for --add-compression which accepts multiple compression
formats and when used it will add all instances in a manifest list with
requested compression formats.

Signed-off-by: Aditya R <arajan@redhat.com>
2023-08-03 14:20:38 +05:30
OpenShift Merge Robot
3b7ad61f6b Merge pull request #19488 from edsantiago/journald_race
CI: sys: quadlet %T test: do not rely on journal
2023-08-03 09:46:15 +02:00
OpenShift Merge Robot
da8e29b043 Merge pull request #18612 from containers/renovate/major-ci-vm-image
chore(deps): update dependency containers/automation_images to v20230726
2023-08-03 09:30:42 +02:00
Ed Santiago
b91599742c CI: sys: quadlet %T test: do not rely on journal
Some people might expect this to work:

    systemctl --wait start foo
    journalctl -u foo  ---> displays output from foo

Well, it does not. Not reliably, anyway:

   https://github.com/systemd/systemd/issues/28650

Shrug, okay, deal with it: write value of %T to a tmpfile
instead of relying on journal. I tested with TMPDIR=<many values>
on an SELinux system and, by golly, it works fine.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-08-02 15:24:48 -06:00
Daniel J Walsh
f3ebd798c6 Make podman run --rmi automatically set --rm
Forcing users to set --rm when setting --rmi is just bad UI.
If I want the image to be removed, it implies that I want the
container removed that I am creating.

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-08-02 08:33:06 -04:00
OpenShift Merge Robot
cd5ce63724 Merge pull request #19406 from rhatdan/volumes
Fix up man page and add test on globs
2023-08-02 13:44:34 +02:00
OpenShift Merge Robot
73df21bd93 Merge pull request #18982 from danishprakash/secret-rm-ignore
secret: add support for `--ignore` with rm
2023-08-02 10:48:06 +02:00
danishprakash
bfd2a8cad3 secret: add support for --ignore with rm
Signed-off-by: danishprakash <danish.prakash@suse.com>
2023-08-02 11:13:08 +05:30
Chris Evich
27d79e1fca Skip pasta local forwarder test on debian SID
Requires currently unavailable 0.0~git20230625.32660ce-1 or later.

Signed-off-by: Chris Evich <cevich@redhat.com>
2023-08-01 15:27:03 -04:00
Chris Evich
b69cd8d84c Skip broken/flaky blkio-weight test
Ref: https://github.com/containers/podman/issues/19471

Signed-off-by: Chris Evich <cevich@redhat.com>
2023-08-01 15:26:20 -04:00
Chris Evich
822f2f4952 Skip tarball re-inport test in rawhide for CI
Ref: #19407

Signed-off-by: Chris Evich <cevich@redhat.com>
2023-08-01 15:26:20 -04:00
Ed Santiago
a237c3f461 CI: e2e: remove workaround for missing login file
As of #19391, REGISTRY_AUTH_FILE=/nonexistent no longer
causes 'podman run' to die.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-08-01 12:10:20 -06:00
Daniel J Walsh
5b7dce8a3d Add support for confined users
The original SELinux support in Docker and Podman does not follow the
default SELinux rules for how label transitions are supposed to be
handled. Containers always switch their user and role to
system_u:system_r, rather then maintain the collers user and role.
For example
unconfined_u:unconfined_r:container_t:s0:c1,c2

Advanced SELinux administrators want to confine users but still allow
them to create containers from their role, but not allow them to launch
a privileged container like spc_t.

This means if a user running as
container_user_u:container_user_r:container_user_t:s0

Ran a container they would get

container_user_u:container_user_r:container_t:s0:c1,c2

If they run a privileged container they would run it with:

container_user_u:container_user_r:container_user_t:s0

If they want to force the label they would get an error

podman run --security-opt label=type:spc_t ...

Should fail. Because the container_user_r can not run with the spc_t.

SELinux rules would also prevent the user from forcing system_u user and
the sytem_r role.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
Signed-off-by: Chris Evich <cevich@redhat.com>
2023-08-01 11:25:00 -04:00
Daniel J Walsh
33b8c451e5 Fix up man page and add test on globs
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-08-01 10:28:00 -04:00
OpenShift Merge Robot
57aa4850fc Merge pull request #19434 from rhatdan/userns
Set default userns from containers.conf file
2023-08-01 12:00:57 +02:00
OpenShift Merge Robot
0d21f8986b Merge pull request #19419 from Romain-Geissler-1A/remove-EOF-error-empty-context-with-podman-remote
Don't log EOF error when using podman --remote build with an empty context directory.
2023-07-31 21:43:36 +02:00
OpenShift Merge Robot
3ddde2023a Merge pull request #19413 from vrothberg/fix-19368
API: kill: return 409 on invalid state
2023-07-31 21:37:21 +02:00
OpenShift Merge Robot
30ad23e559 Merge pull request #19444 from Luap99/net-none-netns-path
inspect with network=none show SandboxKey netns path
2023-07-31 21:34:22 +02:00
OpenShift Merge Robot
6b404759f2 Merge pull request #19422 from rhatdan/read-only
make /dev & /dev/shm read/only when --read-only --read-only-tmpfs=false
2023-07-31 20:24:16 +02:00
Daniel J Walsh
39341f283c Set default userns from containers.conf file
Fixed: https://github.com/containers/podman/issues/19432

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-31 14:21:06 -04:00
OpenShift Merge Robot
9e91873c26 Merge pull request #19435 from rhatdan/codespell
Codespell fixups
2023-07-31 17:50:00 +02:00
Paul Holzinger
ada71889c7 inspect with network=none show SandboxKey netns path
We do not use any special netns path for the netns=none case, however
callers that inspect that may still wish to join the netns path directly
without extra work to figure out /proc/$pid/ns/net.

Fixes #16716

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-07-31 17:40:41 +02:00
Daniel J Walsh
64873e322c Codespell fixups
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-31 09:38:46 -04:00
Ed Santiago
0b7157e3b3 CI: e2e: reenable containerized checkpoint tests
And lo, a miracle occurred. Containerized checkpoint tests are
no longer hanging. Reenable them.

(Followup miracle: tests are still passing, after a year of not
running!)

Closes: #15015

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-07-31 06:58:09 -06:00