Commit Graph

5547 Commits

Author SHA1 Message Date
Boaz Shuster de122bb44e Fix: use --all in podman stats to get all containers stats
* Set query all when options.All is true
* Update API to support the "all" option in stats

Signed-off-by: Boaz Shuster <boaz.shuster.github@gmail.com>
2023-07-26 09:41:14 +03:00
Daniel J Walsh 349d775de3
Verify authfile exists if user specifies it
Fixes: https://github.com/containers/podman/issues/18938

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-25 12:39:12 -04:00
Valentin Rothberg 0cfd12786f add "healthy" sdnotify policy
Add a new "healthy" sdnotify policy that instructs Podman to send the
READY message once the container has turned healthy.

Fixes: #6160
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-07-25 11:17:44 +02:00
OpenShift Merge Robot 22cb23b41e
Merge pull request #19297 from vrothberg/RUN-1865
add a podman-compose command
2023-07-25 03:30:38 +02:00
Daniel J Walsh 2a559dc1a1
Merge pull request #19230 from rhatdan/quadlet
Add support for ShmSize to quadlet
2023-07-24 14:11:36 -04:00
Valentin Rothberg e596b17fbe add a podman-compose command
**podman compose** is a thin wrapper around an external compose provider
such as docker-compose or podman-compose.  This means that `podman
compose` is executing another tool that implements the compose
functionality but sets up the environment in a way to let the compose
provider communicate transparently with the local Podman socket.  The
specified options as well the command and argument are passed directly
to the compose provider.

The default compose providers are `docker-compose` and `podman-compose`.
If installed, `docker-compose` takes precedence since it is the original
implementation of the Compose specification and is widely used on the
supported platforms (i.e., Linux, Mac OS, Windows).

If you want to change the default behavior or have a custom installation
path for your provider of choice, please change the `compose_provider`
field in `containers.conf(5)`.  You may also set the
`PODMAN_COMPOSE_PROVIDER` environment variable.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-07-24 19:23:04 +02:00
OpenShift Merge Robot 1da9cbe6ac
Merge pull request #19308 from ygalblum/quadlet-systest-quick-journal
Quadlet system test - force journald log driver for short lived containers
2023-07-24 13:49:23 +02:00
OpenShift Merge Robot 67f0340687
Merge pull request #18830 from harikannan512/new-18032-2
recursive call in user directories for unit files
2023-07-22 15:11:24 +02:00
Daniel J Walsh 3e534eff9d
Add support for ShmSize to quadlet
I am working on running android auto in a quadlet.

[Container]
AddDevice=/dev/dri/renderD128
AddDevice=/dev/kvm
DropCapability=all
Environment=PULSE_SERVER=$XDG_RUNTIME_DIR/pulse/native
Environment=WAYLAND_DISPLAY=wayland-0
Environment=XDG_RUNTIME_DIR
Image=quay.io/slopezpa/qemu-aaos
ContainerName=Android
PodmanArgs=--shm-size=5g
SecurityLabelDisable=true
Volume=$XDG_RUNTIME_DIR:$XDG_RUNTIME_DIR

And I need to be able to set the --shm-size option.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-22 06:41:39 -04:00
Ygal Blum 4b9f670ca2 Quadlet system test - force journald log driver for short lived containers
When the test expects the container to exit, force using journald in
order to find its startup logs

Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
2023-07-21 11:12:03 +03:00
Hari Kannan 413552e10e quadlet recursively scan for unit files
Signed-off-by: Hari Kannan <harikannan512@gmail.com>
2023-07-20 23:10:28 +01:00
Matt Heon ce736413b4 Ensure that we appropriately warn that TCP is insecure
`podman system service` + TCP is not a configuration we should be
recommending. There was already language about this in the
manpages, but it was not sufficient in explaining how bad of an
idea this is. Expand the manpage warnings, add a dedicated
heading so people notice, and add a warning every time the
service starts with a TCP URL that directs people to the manpage
to see that explanation.

Signed-off-by: Matt Heon <mheon@redhat.com>
2023-07-20 14:22:04 -04:00
OpenShift Merge Robot 6ece09fea7
Merge pull request #19276 from edsantiago/quadlet_no_journal
systests: quadlet: fixes for RHEL8
2023-07-20 11:17:47 +02:00
OpenShift Merge Robot 7974eb181b
Merge pull request #19275 from jakecorrenti/since-volume-filter-support
Add `since` as valid filter option for `volume` subcommands
2023-07-19 23:34:05 +02:00
Ed Santiago 558a70262d systests: quadlet: fixes for RHEL8
Some quadlet tests are failing on RHEL8: test code was
using journalctl to check output from containers. This
fails on RHEL8, where default log driver is k8s-file.

Solution: use 'podman logs' instead. To do so, we need to
keep the containers alive (otherwise, quadlet seems to
delete them on exit). Do so by running 'top -b' (batch);
the currently-used 'top' was failing because not-a-tty.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-07-19 09:04:21 -06:00
OpenShift Merge Robot a977c8281e
Merge pull request #19284 from ygalblum/quadlet-kube-replace-journalctl
Quadlet system test - do not rely on journalctl in kube file tests
2023-07-19 16:02:59 +02:00
OpenShift Merge Robot 99623184e0
Merge pull request #19261 from cgiradkar/podman_inspect_completion
Podman inspect completion
2023-07-19 15:06:01 +02:00
OpenShift Merge Robot d98978ae15
Merge pull request #19256 from ygalblum/quadlet-working-dir
Quadlet - Allow setting Service WorkingDirectory for Kube units
2023-07-19 13:45:42 +02:00
Ygal Blum 8d190704a6 Quadlet - Allow setting Service WorkingDirectory for Kube units
Add key for Quadlet to set WorkingDirectory to the directory of the YAML or Unit file
Add Doc
Add E2E tests
Add System test

Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
2023-07-19 11:56:38 +03:00
Ygal Blum 24bf6fc243 Quadlet system test - do not rely on journalctl in kube file tests
Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
2023-07-19 11:49:54 +03:00
Ed Santiago 1d14bb7a8a quadlet systest: fix broken tmpdir references
quadlet volume-path system test was making invalid assumptions
about $TMPDIR, causing test to fail when TMPDIR=/var/tmp or /dev/shm

Much more complicated than it should be, because we need to
find out the systemd value of %T.

Minor cleanup too.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-07-18 13:01:35 -06:00
Jake Correnti e55e128fcd Add `since` as valid filter option for `volume` subcommands
Adds support for `since` as a valid filter option for `podman volume ls`
and `podman volume prune`.

Implements: #19228
Initially suggested from: #19119

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-18 14:52:42 -04:00
OpenShift Merge Robot 7791ffd215
Merge pull request #19140 from lsm5/podmansh-followup
Podmansh: Useful timeout error, increase timeout to 30s
2023-07-18 20:50:56 +02:00
Lokesh Mandvekar 6df17332b5
Podmansh: Better error, increase timeout to 30s
Co-authored-by: Ed Santiago <santiago@redhat.com>
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-07-18 10:15:12 -04:00
Jake Correnti 96241159a8 Fix multiple filter options logic for `podman volume ls `
Fixes a bug where `podman volume ls` with multiple `label` filters would
return volumes that matched *any* of the filters, not *all* of them.

Adapts generating volume filter functions to be more in
line with how it is done for containers and pods.

Fixes: #19219

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-18 09:53:03 -04:00
Chetan Giradkar 00a5b07090 Add bash-completion for podman inspect
Signed-off-by: Chetan Giradkar <cgiradka@redhat.com>
2023-07-18 14:31:50 +01:00
Paul Holzinger 34a2a48e9c
Merge pull request #19208 from jakecorrenti/add-reserved-flag
Add missing reserved annotation support to play
2023-07-18 14:34:29 +02:00
Jake Correnti d7e25e14aa Add missing reserved annotation support to `play`
Adds any required "wiring" to ensure the reserved annotations are supported by
`podman kube play`.

Addtionally fixes a bug where, when inspected, containers created using
the `--publish-all` flag had a field `.HostConfig.PublishAllPorts` whose
value was only evaluated as `false`.

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-17 14:06:23 -04:00
Ed Santiago 8febb6aa11 Emergency gating-test fixes for RHEL8
- the "podman {run,exec} /etc" test: runc now spits out
  "is a directory" instead of "permission denied". And,
  on exec, exits 255 instead of 126. Deal with it.

- workaround for https://github.com/containers/skopeo/issues/823
  (skopeo XDG bug): always make sure XDG is defined for skopeo

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-07-17 08:35:25 -06:00
OpenShift Merge Robot 49a924cf39
Merge pull request #19211 from jakecorrenti/add-reserved-flag-generate
Add `--podman-only` flag to `podman generate kube`
2023-07-16 17:34:35 +02:00
OpenShift Merge Robot 0745fe8928
Merge pull request #19187 from rhatdan/VENDOR
Update vendor containers/(common, buildah, image, storage)
2023-07-15 13:57:14 +02:00
OpenShift Merge Robot d1ddd03a64
Merge pull request #19241 from rhatdan/bind
Use constants for mount types
2023-07-14 16:05:30 +02:00
Jake Correnti d0602e8f75 Add `--podman-only` flag to `podman generate kube`
Adds an `--podman-only` flag to `podman generate kube` to allow for
reserved annotations to be included in the generated YAML file.

Associated with: #19102

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-14 09:35:59 -04:00
OpenShift Merge Robot c9c46fdf23
Merge pull request #19234 from edsantiago/cleanup_skips
Tests: remove/update obsolete skips
2023-07-14 13:57:23 +02:00
Daniel J Walsh 13a9500166
Update vendor containers/(common, buildah, image, storage)
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-14 07:19:56 -04:00
OpenShift Merge Robot bb72016f58
Merge pull request #19066 from Luap99/ps
top: do not depend on ps(1) in container
2023-07-14 13:17:59 +02:00
Daniel J Walsh f256f4f954
Use constants for mount types
Inspired by https://github.com/containers/podman/pull/19238

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-14 07:17:21 -04:00
Ed Santiago 1e94100940 Tests: remove/update obsolete skips
To silence my find-obsolete-skips script, remove the '#'
from the following issues in skip messages:

  #11784 #15013 #15025 #17433 #17436 #17456

Also update the messages to reflect the fact that the issues
will never be fixed.

Also remove ubuntu skips: we no longer test ubuntu.

Also remove one buildah skip that is no longer applicable:

Fixes: #17520

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-07-13 15:04:07 -06:00
OpenShift Merge Robot eb2bf7a075
Merge pull request #19183 from eriksjolund/add_missing_return
Add missing return after utils.InternalServerError()
2023-07-13 15:53:48 +02:00
OpenShift Merge Robot 69f112a8bf
Merge pull request #19200 from rhatdan/secret1
Add secret support to podman login
2023-07-13 03:06:50 -04:00
Matt Heon 2b2c4453f1 Fix container errors not being sent via pod removal API
When I reworked pod removal to provide more detailed errors
(including per-container errors, not just a single multierror
with all errors squashed), I made it part of the struct returned
by the REST API and assumed that would be enough to get errors
through to clients. Unfortunately, in case of an overarching
error removing the pod (as any error with any container would
cause), we don't send the response struct that would include the
container errors - we just send a standardized REST error. We
could work around this with custom, potentially backwards
incompatible error handling for the REST pod delete endpoint, or
we could just do what was done before, and package up all the
errors in a multierror to send to the other side. Of those
options, the multierror seems far simpler.

Fixes #19159

Signed-off-by: Matt Heon <mheon@redhat.com>
2023-07-12 14:50:15 -04:00
Erik Sjölund 6ec261e7ac Add missing return after utils.InternalServerError()
Signed-off-by: Erik Sjölund <erik.sjolund@gmail.com>
2023-07-12 20:47:16 +02:00
OpenShift Merge Robot cd58306a81
Merge pull request #19207 from Luap99/mv-dns
netavark: macvlan networks keep custom nameservers
2023-07-12 14:09:51 -04:00
OpenShift Merge Robot dcf0a3cfc2
Merge pull request #19203 from sstosh/remote-play-kube-userns
remote: fix podman-remote play kube --userns
2023-07-12 14:07:14 -04:00
OpenShift Merge Robot 9d9f4aaafe
Merge pull request #19006 from deuill/quadlet-volume-network-names
Allow setting volume and network names in Quadlet
2023-07-12 08:53:38 -04:00
Daniel J Walsh d497eb369c
Add secret support to podman login
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-12 08:45:02 -04:00
Paul Holzinger 2a9b9bb53f
netavark: macvlan networks keep custom nameservers
The change to use the custom dns server in aardvark-dns caused a
regression here because macvlan networks never returned the nameservers
in netavark and it also does not make sense to do so.

Instead check here if we got any network nameservers, if not we then use
the ones from the config if set otherwise fallback to host servers.

Fixes #19169

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-07-12 14:07:34 +02:00
Toshiki Sonoda c6b5b9a02c remote: fix podman-remote play kube --userns
Fix `podman play kube --userns` to work in remote environment.

Related: #17392

Signed-off-by: Toshiki Sonoda <sonoda.toshiki@fujitsu.com>
2023-07-12 18:47:36 +09:00
Daniel J Walsh 0dcfe6e069
Run codespell on code
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-11 16:44:22 -04:00
OpenShift Merge Robot 1be2ec1d4f
Merge pull request #19193 from Luap99/hostname-alias
add hostname to network alias
2023-07-11 12:19:02 -04:00
Paul Holzinger f1c68b79eb
add hostname to network alias
We use the name as alias but using the hostname makes also sense and
this is what docker does. We have to keep the short id as well for
docker compat.

While adding some tests I removed some duplicated tests that were
executed twice for nv for no reason.

Fixes #17370

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-07-11 15:38:24 +02:00
OpenShift Merge Robot bd85be42fd
Merge pull request #19100 from edsantiago/pasta_better_cleanup
pasta tests: automatically determine test parameters
2023-07-11 09:02:47 -04:00
Toshiki Sonoda 72a1857e43 e2e: Fetch the correct user name
When fetching the user name, you need to use User.Username
instead of User.Name, as with other tests.

Signed-off-by: Toshiki Sonoda <sonoda.toshiki@fujitsu.com>
2023-07-11 13:51:47 +09:00
Jake Correnti 7b54fd84ec Add `--no-trunc` flag to maintain original annotation length
Adds a `--no-trunc` flag to `podman kube generate` preventing the
annotations from being trimmed at 63 characters. However, due to
the fact the annotations will not be trimmed, any annotation that is
longer than 63 characters means this YAML will no longer be Kubernetes
compatible. However, these YAML files can still be used with `podman
kube play` due to the addition of the new flag below.

Adds a `--no-trunc` flag to `podman kube play` supporting YAML files with
annotations that were not truncated to the Kubernetes maximum length of
63 characters.

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-10 18:02:53 -04:00
Alex Palaistras 932fae4028 Allow setting volume and network names in Quadlet
This commit extends `Volume` and `Network` unit definitions with two
additional parameters, `VolumeName` and `NetworkName`, which will,
respectively, set a user-defined name for the corresponding volume and
network. This is similar to how the `ContainerName` directive currently
works, and should allow for smoother transitions to Quadlet-managed
resources.

Closes: #19003
Signed-off-by: Alex Palaistras <alex@deuill.org>
2023-07-10 20:33:19 +01:00
Ed Santiago 427b959a1c pasta tests: automatically determine test parameters
...from the test name. Eliminates scary duplication.

Followup to #19053: instead of cross-checking pasta test args
against test name, eliminate the args entirely. Determine
them all from the @test name itself.

Example:
   "TCP translated port range forwarding, IPv4, loopback"
     |  |          |    |     |           |     +-- iftype=loopback
     |  |          |    |     |           +-------- ip_ver=4
     |  |          |    |     +-------------------- bytes=1
     |  |          |    +-------------------------- range=3
     |  |          +------------------------------- (ignored)
     |  +------------------------------------------ delta=1
     +--------------------------------------------- proto=tcp

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-07-10 13:07:15 -06:00
OpenShift Merge Robot eb9d44241e
Merge pull request #19004 from rhatdan/secret
Add --replace flag to podman secret create
2023-07-10 14:59:29 -04:00
OpenShift Merge Robot 7b08e024c1
Merge pull request #19180 from vrothberg/fix-19147
manifest inspect: support authentication
2023-07-10 14:40:29 -04:00
Paul Holzinger 97fd03ccdf
test/e2e: wait for socket
Do not use podman info/version as they are expensive and clutter the log
for no reason. Just checking if we can connect to the socket should be
good enough and much faster.

Fix the non existing error checking, so that we actually see an useful
error when this does not work.

Also change the interval, why wait 2s for a retry lets take 100ms steps
instead.

Fixes #19010

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-07-10 17:27:11 +02:00
Valentin Rothberg a69194b02f manifest inspect: support authentication
Previous tests have worked by pure chance since the client and server
ran on the same host; the server picked up the credentials created by
the client login.

Extend the gating tests and add a new integration test which is further
capable of exercising the remote code.

Note that fixing authentication support requires adding a new
`--authfile` CLi flag to `manifest inspect`.  This will at least allow
for passing an authfile to be bindings.  Username and password are not
yet supported.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-07-10 16:26:19 +02:00
Paul Holzinger 597ebeb60f
top: do not depend on ps(1) in container
This ended up more complicated then expected. Lets start first with the
problem to show why I am doing this:

Currently we simply execute ps(1) in the container. This has some
drawbacks. First, obviously you need to have ps(1) in the container
image. That is no always the case especially in small images. Second,
even if you do it will often be only busybox's ps which supports far
less options.

Now we also have psgo which is used by default but that only supports a
small subset of ps(1) options. Implementing all options there is way to
much work.

Docker on the other hand executes ps(1) directly on the host and tries
to filter pids with `-q` an option which is not supported by busybox's
ps and conflicts with other ps(1) arguments. That means they fall back
to full ps(1) on the host and then filter based on the pid in the
output. This is kinda ugly and fails short because users can modify the
ps output and it may not even include the pid in the output which causes
an error.

So every solution has a different drawback, but what if we can combine
them somehow?! This commit tries exactly that.

We use ps(1) from the host and execute that in the container's pid
namespace.
There are some security concerns that must be addressed:
- mount the executable paths for ps and podman itself readonly to
  prevent the container from overwriting it via /proc/self/exe.
- set NO_NEW_PRIVS, SET_DUMPABLE and PDEATHSIG
- close all non std fds to prevent leaking files in that the caller had
  open
- unset all environment variables to not leak any into the contianer

Technically this could be a breaking change if somebody does not
have ps on the host and only in the container but I find that very
unlikely, we still have the exec in container fallback.

Because this can be insecure when the contianer has CAP_SYS_PTRACE we
still only use the podman exec version in that case.

This updates the docs accordingly, note that podman pod top never falls
back to executing ps in the container as this makes no sense with
multiple containers so I fixed the docs there as well.

Fixes #19001
Fixes https://bugzilla.redhat.com/show_bug.cgi?id=2215572

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-07-10 13:32:55 +02:00
Daniel J Walsh efefd8cf5b
Add --replace flag to podman secret create
Users may want to replace the secret used within containers, without
destroying the secret and recreating it.

Partial fix for https://github.com/containers/podman/issues/18667

Make sure podman --remote secret inspect and podman secret inspect
return the same error message.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-09 07:26:09 -04:00
renovate[bot] 531fb21d03
fix(deps): update module golang.org/x/tools to v0.11.0
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-05 17:43:10 +00:00
Ed Santiago 99f93d55c4 e2e: fix two toolbox flakes
1. toolbox UID/GID allocation: pick numbers < 1500. Otherwise
   we run the risk of colliding with the Cirrus rootless user.

2. WaitContainerReady(): check the results of the last "podman logs"
   before timing out. Otherwise, the user will see "READY" followed
   immediately by "Container is not ready".
   (global bug, not just toolbox, but that's where I discovered it).

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-07-05 06:52:13 -06:00
OpenShift Merge Robot 93447e292d
Merge pull request #19092 from vrothberg/bz-2218315
auto update: fix usage of --authfile
2023-07-05 08:02:46 -04:00
Paul Holzinger fc5aa9c9ca
test/e2e: use GinkgoT().TempDir() over MkdirTemp()
Using GinkgoT().TempDir() will automatically result in the directy to be
cleaned up when the test is done. This should help to prevent leaking
files and we do not need to error check every time.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-07-05 10:40:26 +02:00
Paul Holzinger ea8992cb45
test/e2e: use random ImageCacheDir
Like LockTmpDir use a random tmpdir for this directory. Make sure it is
set for all parallel ginkgo processes.

Also GinkgoT().TempDir() will automatcially remove the directory at the
end so we do not need to worry about cleanup.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-07-05 10:40:24 +02:00
Paul Holzinger 17a06d3431
test/e2e: remove RHEL7 workaround
AFAIK the latest podman will not even run on RHEL 7 anymore, in any case
we do not need these tests to run there.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-07-05 10:39:57 +02:00
Paul Holzinger bc22aefce6
test/e2e: remove unnecessary code in SynchronizedAfterSuite
This code does not do anything useful beside removing the cache dir.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-07-05 10:39:46 +02:00
Paul Holzinger ff77900387
test/e2e: do not use /tmp for podman commands
Using the OS tempdir here is not good. This defaults to /tmp which means
the inital podman test setup uses these paths:
`--root /tmp/root --runroot /tmp/runroot and --tmpdir /tmp`

Thus we create many files directly under /tmp. Also they were never
removed thus leaked out. When running as root and then later as rooltess
this would fail to permission problems.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-07-05 10:39:02 +02:00
Paul Holzinger db7cb1dbfc
test/tools: vendor ginkgo v2.11
Ginkgo currently logs a warning because the cli version (defnied in
test/tools/go.mod) does not match the library version (defnied in
go.mod).

Simply fix this by updating ginkgo to the latest version.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-07-05 10:12:44 +02:00
Paul Holzinger c20612babc
test/e2e: write timings directly to file
There is no need to buffer them all into an array then write them once
at the end. Just write directly to the file.

Fixes #19104

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-07-05 10:12:43 +02:00
Valentin Rothberg d874790bc6 auto update: fix usage of --authfile
The --authfile flag has been ignored.  Fix that and add a test to make
sure we won't regress another time.  Requires a new --tls-verify flag
to actually test the code.

Also bump c/common since common/pull/1538 is required to correctly check
for updates.  Note that I had to use the go-mod-edit-replace trick on
c/common as c/buildah would otherwise be moved back to 1.30.

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2218315
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-07-05 08:30:39 +02:00
Ed Santiago ba1355b230 system tests: refactor registry code
The podman-login tests have accumulated much cruft over the
years, because that's the only place where we run a local
registry, and the process was crufty: we actually start/stopped
the registry as the first & last tests of the file. Meaning,
you couldn't do 'hack/bats 150:just-one-test' because that
would skip the registry start. And just now, a completely
unrelated test has had to be shoved into the login file.

This PR revamps the whole thing, by adding a new registry helper
module that can be used anywhere. And, once the registry is
started, it just stays running until the end of tests. (This
requires BATS 1.7 or greater).

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-07-04 15:26:55 -06:00
Black-Hole1 a16488f89d
fix(command): ignore `--format` in `podman search --list-tags`
Fix: https://github.com/containers/podman/issues/19033

Signed-off-by: Black-Hole1 <bh@bugs.cc>
2023-06-30 18:19:48 +08:00
OpenShift Merge Robot 5561390a00
Merge pull request #19053 from edsantiago/pasta_test_cleanup
pasta system tests: cleanup, fixes, sanity check
2023-06-30 05:10:21 -04:00
David Gibson 39624473b0 pasta: Create /etc/hosts entries for pods using pasta networking
For pods with bridged and slirp4netns networking we create /etc/hosts
entries to make it more convenient for the containers to address each
other.  We omitted to do this for pasta networking, however.  Add the
necessary code to do this.

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

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2023-06-30 13:04:02 +10:00
Ed Santiago 2393fe4536 pasta tests: add sanity check for test name vs function
Confirm that pasta test name agrees with the test being run.
This is a development-time-only check, it must never fail
beyond CI. The idea is to prevent something like

   @test "... Single TCP ... IPv4" {
      pasta_test_to 6 ... udp ...
   }

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-06-29 12:54:33 -06:00
Ed Santiago 4da3e47b6f pasta tests: cleanup + 1 new test
- typo fix, a misspelled variable resulting in test being NOP
- remove unnecessary variable (followup to #19044)
- add opportunistic CONTAINERS_CONF test (followup to #19032)

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-06-29 12:54:33 -06:00
OpenShift Merge Robot d09edd2820
Merge pull request #19043 from dgibson/fix19021
pasta: Remove some leftover code from pasta bats tests
2023-06-29 16:22:30 +02:00
OpenShift Merge Robot 92db6a871a
Merge pull request #19032 from Luap99/def-rootless-network
rootless: use default_rootless_network_cmd config
2023-06-29 15:27:31 +02:00
Paul Holzinger f64a1a1cc8
rootless: use default_rootless_network_cmd config
Make sure we use the config field to know if we should use pasta or
slirp4netns as default.

While at it fix broken code which sets the default at two different
places, also do not set in Validate() as this should not modify the
specgen IMO, so set it directly before that.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-06-29 09:46:25 +02:00
David Gibson e4efd709d9 Revert^3 "pasta: Use two connections instead of three in TCP range forward tests"
This reverts commit c2a24abc0d, which
itself reverted 1c08f2edac, which
reverted e33f4e0bc7.

The original e33f4e0bc7 "pasta: Use two connections instead of three
in TCP range forward tests" was a workaround to avoid intermittent
errors in CI where the pasta networking port range forwarding tests
would fail.  It was reverted and unreverted when we thought we'd fixed
the problem, but that turned out not to be the case.

We're now much more confident that we've genuinely found and fixed (or
at least, worked around) the underlying problem, so we revert it again.

Link: https://github.com/containers/podman/issues/17287

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2023-06-29 16:15:02 +10:00
David Gibson 17cd5aecbb pasta: Workaround occasional socat failures in CI
With a number of the port range forwarding tests, we've seen occasional
failures where the sending socat fails with an EINTR on connect().  This
was mitigated by e33f4e0bc7 "pasta: Use two connections instead of three
in TCP range forward tests" (which has been reverted and un-reverted
several times).  However, this did not eliminate the problem, for example
see [0].

For the failing tests we are using the socat address "EXEC:printf x" to
make socat invoke printf(1) to generate a single byte of data to transfer.
Closer analysis shows that the SIGCHLD as the printf process ends is
occasionally intersecting with the connect() call causing this failure.

This is arguably a bug in socat, to not handle this race one way or
another.  However, we can easily workaround the problem by using a
temporary file with the data to transfer, rather than invoking printf every
time.  Do this, to avoid the flakiness of these tests.

[0]
https://github.com/containers/podman/issues/17287#issuecomment-1611855165

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

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2023-06-29 15:53:13 +10:00
David Gibson 13c7d05cc1 pasta: Remove some leftover code from pasta bats tests
https://github.com/containers/podman/pull/19021 fixed bugs with the pasta
networking tests not working on hosts with multiple interfaces.  Alas, the
patch left in some stale code that generates spurious error messages for
the IPv6 case.  This is sort of harmless - later code overrides what's done
here and the tests can pass anyway.  However if a test fails for some other
reason it means we get a misleading irrelevant error message.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2023-06-29 12:51:44 +10:00
OpenShift Merge Robot 455c7c8264
Merge pull request #19011 from rhatdan/secret1
Display secret to user in inspect
2023-06-28 22:54:35 +02:00
Daniel J Walsh bf60bb0731
Display secret to user in inpspect
It is pretty complicated to display the secret on the host, but is
not really secured. This patch makes it easier to examine the secret.

Partial fix for https://github.com/containers/podman/issues/18667

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-06-28 13:14:49 -04:00
Ed Santiago 8fb719a9e8 e2e: systemd test: major fixes
[October 2022] While mucking around in this test, I noticed that
a test was being unnecessarily skipped in rootless. Reason was,
test was creating a /etc/systemd file, which it really shouldn't
have been doing anyway.

[Flash forward to June 2023] Ugh. This got complicated, so I
abandoned it. But it's flaking in CI, so one focus-push later,
here's everything that this PR fixes:

  - create systemd unit file in proper (safe) path.

  - create it *with proper podman options!!!* As in, the
    whole --this --that --root --tmpdir options! Sheesh!

  - use a pseudorandom service name, not just "redis"

  - invoke systemctl/journalctl with --system or --user
    as appropriate.

  - remove unnecessary "bash -c"

  - remove SkipIfRootless, but add SkipIfRemote

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-06-28 10:07:19 -06:00
OpenShift Merge Robot 92b2a15a27
Merge pull request #19029 from rhatdan/inspect
Remove 'inspecting object' from inspect errors
2023-06-28 17:00:10 +02:00
OpenShift Merge Robot 416b4eeac6
Merge pull request #18814 from danishprakash/kube-down-volrm
play.go: remove volumes with `kube down --force`
2023-06-28 15:31:41 +02:00
Daniel J Walsh b6e636cbe2
Remove 'inspecting object' from inspect errors
This is just useless noise and gets us closer to what
Docker returns.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-06-28 08:19:37 -04:00
OpenShift Merge Robot be49741dc7
Merge pull request #19021 from dgibson/bug19007
pasta: Fix pasta tests to work on hosts with multiple interfaces
2023-06-28 13:06:43 +02:00
David Gibson fe8355be7f pasta: Fix pasta tests to work on hosts with multiple interfaces
At various points the pasta bats tests need to know the name of the
interface that pasta will use by default, and the host addresses it will
use by default.  Currently we use the pre-existing helper functions
ether_get_name and ipv[46]_get_addr_global to retreive that.

However, those just pick the first non-loopback interface or address, which
may not be the one that pasta uses if there are multiple connected host
interfaces.

Replace those helpers with local ones which examine the routing table to
more closely match pasta's internal logic about which interface to select.
This allows the tests to run successfully on a host with multiple
interfaces.

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

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2023-06-28 13:12:33 +10:00
Daniel J Walsh bcb89fc8b2
Fix readonly=false failure
There was a huge cut and paste of mount options which were not constent
in parsing tmpfs, bind and volume mounts.  Consolidated into a single
function to guarantee all parse the same.

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-06-27 16:57:21 -04:00
OpenShift Merge Robot 089dbed498
Merge pull request #18999 from Luap99/vendor
update c/{common,image,storage,buildah} to latest
2023-06-27 21:10:58 +02:00
Ed Santiago f5cc0487e8
Fixes for vendoring Buildah
This commit was automatically cherry-picked
by buildah-vendor-treadmill v0.3
from the buildah vendor treadmill PR, #13808

Changes since 2023-05-01:
  - skip a new test, it fails in remote
  - skip encrypted-FROM test, broken by buildah PR 4746

Signed-off-by: Ed Santiago <santiago@redhat.com>
Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-06-27 18:04:42 +02:00
Paul Holzinger 6eaf8a271d
tests: fix "Storing signatures" check
After[1] c/image no longer prints "Storing signatures" so we should
not check for it.

[1] https://github.com/containers/image/pull/2001

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-06-27 18:04:42 +02:00
Daniel J Walsh eeb7aeb496
Kube quadlets can support autoupdate as well as containers
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-06-27 11:20:14 -04:00
Paul Holzinger 2160a114cc
debug tail 800 lines flake
Sometimes this tests flakes but in the CI log I see all expected lines
printed but still for some reason the matcher fails.
Right now it will truncate the array so it is not possible to verify
what the matcher sees. Change this be removing the truncate limit for
this specific test only.

see #18501

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-06-27 14:58:27 +02:00
OpenShift Merge Robot c2d46acdea
Merge pull request #18980 from vrothberg/bz-2216700
make image listing more resilient
2023-06-26 22:42:37 +02:00