Commit graph

12929 commits

Author SHA1 Message Date
Matthew Heon
f05e206bd3 Fix test failures from backports
Timeouts for `podman rm` aren't in until 4.0, so we need to
remove them.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2021-10-19 17:14:42 -04:00
Ed Santiago
437ec951d9 system tests: socket activation: clean up
Multiarch folks are seeing flakes in this test. I can't reproduce
them, but I did notice that the test isn't doing the best possible
job of reporting failures nor of confirming what it purports to test.

Major fix here is to check the exit status of each curl: if we
see the flake again, that will help us track down the failure.

Other fixes are just refactoring, cleanup, and disambiguation
(using the random service name consistently)

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-10-19 15:56:35 -04:00
Adrian Reber
5aa89c88f9 Checkpoint/Restore test fixes
Moving to Fedora 35 showed test failures (time outs) in the test

"podman checkpoint and restore container with different port mappings"

The test starts a container and maps the internal port 6379 to the local
port 1234 ('-p 1234:6379') and then tries to connect to localhost:1234

On Fedora 35 this failed and blocked the test because the container was
not yet ready. The test was trying to connect to localhost:1234 but
nothing was running there. So the error was not checkpointing related.

Before trying to connect to the container the test is now waiting for
the container to be ready.

Another problem with this test and running ginkgo in parallel was that
it was possible that the port was already in use. Now for each run a
random port is selected to decrease the chance of collisions.

Signed-off-by: Adrian Reber <areber@redhat.com>
2021-10-19 15:56:35 -04:00
Urvashi Mohnani
d39e412834 Set targetPort to the port value in the kube yaml
When the targetPort is not defined, it is supposed to
be set to the port value according to the k8s docs.
Add tests for targetPort.
Update tests to be able to check the Service yaml that
is generated.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2021-10-19 15:56:35 -04:00
Chris Evich
7923bfcb0d Test-hang fix: Wait for ready + timeout on connect.
It was observed during initial F35 testing, this test can cause Ginkgo
to "hang" by attempting to connect before the redis is up/listening.
Fix this by confirming the ready-state before attempting to connect.
Also, force IPv4 and timeout on any connection fault - to allow other
tests to run.

Thanks to Adrian Reber for help on this and related fixes.

Signed-off-by: Chris Evich <cevich@redhat.com>
2021-10-19 15:56:35 -04:00
Daniel J Walsh
c135ff76d2 Don't include ctr.log if not using file logging
Checkpoint is blowing up when you use --log-driver=none

[NO NEW TESTS NEEDED] No way currently to test checkpoint restore.

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-10-19 15:56:35 -04:00
Urvashi Mohnani
9168db8bc0 Do not add TCP to protocol in generated kube yaml
As the default protocol in k8s is TCP, don't add it
to the generate yaml when using protocol.
Add UDP to the protocol of the generated yaml when udp
is being used.
Add tests for this as well.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2021-10-19 15:56:35 -04:00
Daniel J Walsh
b5dd62f315 Don't use docker/pkg/archive, use containers/storage/pkg/archive
[NO NEW TESTS NEEDED]

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-10-19 15:56:35 -04:00
Paul Holzinger
a213661ae7 Fix panic in container create compat api
The bind and tmpfs options can be nil, we have to check that before we
try to use it.

Fixes #11961

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2021-10-19 15:56:35 -04:00
Urvashi Mohnani
92ed439d22 Don't add image entrypoint to the generate kube yaml
If no entrypoint or command is set in the podman create
command, and the image command or entrypoint is being
used as the default, then do not add the image command or
entrypoint to the generated kube yaml.
Kubernetes knows to default to the image command and/or
entrypoint settings when not defined in the kube yaml.
Add and modify tests for this case.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2021-10-19 15:56:35 -04:00
cdoern
16fb4161a6 Kube Gen run as user/group issues
Removed the inclusion of RunAsUser or RunAsGroup unless a container is run with the --user flag. When building from an image
the user will be pulled from there anyway

resolves #11914

Signed-off-by: cdoern <cdoern@redhat.com>
2021-10-19 15:56:35 -04:00
Brent Baude
3082ba8b7b No space in kube annotations for bind mounts
Kubernetes fails to deal with an annotation that has a space in it.
Trim these strings to remove spaces.

Fixes: #11929

Signed-off-by: Brent Baude <bbaude@redhat.com>

[NO TESTS NEEDED]
2021-10-19 15:56:35 -04:00
Giuseppe Scrivano
b470de05b0 cgroups: use cgroup.controllers to read controllers
use the cgroup.controllers file instead of cgroup.subtree_control to
read the list of controllers available in the current cgroup.

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

[NO TESTS NEEDED] we have disabled this test in the CI because it is
difficult to know what controllers are going to be enabled for
rootless under all conditions we test.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-10-19 15:56:35 -04:00
Jhon Honce
8b87793d48 Use SplitN(2) when copying env variables
Environment variables whose value contained an equal sign where
truncated

Fixes #11891

Signed-off-by: Jhon Honce <jhonce@redhat.com>

<MH: Fixed cherry-pick conflicts>

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2021-10-19 15:56:35 -04:00
Chris Evich
d458bc304d [CI:DOCS] Include manifest example usage
Fixes #8872

Signed-off-by: Chris Evich <cevich@redhat.com>
2021-10-19 15:56:35 -04:00
Paul Holzinger
fbe94088fd podman stats: move cgroup validation to server
Podman stats is not supported for rootless cgroupv1 setups. The check
for this must be on the server side and not the client.

[NO NEW TESTS NEEDED] we cannot test this because remote and server are
always on the same machine in CI

Fixes #11909

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2021-10-19 15:56:35 -04:00
Reinhard Tartler
338e01f048 [CI:DOCS] oci-hooks.5.md: fixup section in header
This fixes the autodetection of where to install the manpages

Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2021-10-19 15:56:35 -04:00
Daniel J Walsh
de6a4af5ad Change podman.1 man page to show corret log-level default
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-10-19 14:14:53 -04:00
Matthew Mosesohn
326eae3b7f Add podman-plugins to upstream image
Fixes #11380
Replaces https://github.com/containers/podman/pull/11385

Originally subbmitted by @mattymo
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-10-19 14:14:38 -04:00
Matthew Heon
ca33df1468 Ensure podman ps --sync functions
The backend for `ps --sync` has been nonfunctional for a long
while now - probably since v2.0. It's questionable how useful the
flag is in modern Podman (the original case it was intended to
catch, Conmon gone via SIGKILL, should be handled now via pinging
the process with a signal to ensure it's still alive) but having
the ability to force a refresh of container state from the OCI
runtime is still useful.

Signed-off-by: Matthew Heon <mheon@redhat.com>
2021-10-19 14:13:59 -04:00
Matthew Heon
7bbf774e85 Allow podman stop to be run on Stopping containers
This allows you to stop a container after a `podman stop` process
started, but did not finish, stopping the container (probably an
ignored stop signal, with no time to SIGKILL?). This is a very
narrow case, but once you're in it the only way to recover is a
`podman rm -f` of the container or extensive manual remediation
(you'd have to kill the container yourself, manually, and then
force a `podman ps --all --sync` to update its status from the
OCI runtime).

[NO NEW TESTS NEEDED] I have no idea how to verify this one -
we need to test that it actually started *during* the other stop
command, and that's nontrivial.

Signed-off-by: Matthew Heon <mheon@redhat.com>
2021-10-19 14:13:07 -04:00
Paul Holzinger
2cd206d0fc libpod: fix race when closing STDIN
There is a race where `conn.Close()` was called before `conn.CloseWrite()`.
In this case `CloseWrite` will fail and an useless error is printed. To
fix this we move the the `CloseWrite()` call to the same goroutine to
remove the race. This ensures that `CloseWrite()` is called before
`Close()` and never afterwards.
Also fixed podman-remote run where the STDIN was never was closed.
This is causing flakes in CI testing.

[NO TESTS NEEDED]

Fixes #11856

Signed-off-by: Paul Holzinger <pholzing@redhat.com>

<MH: Fixed cherry-pick conflicts>

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2021-10-19 14:08:58 -04:00
Ed Santiago
37347c3216 It really should be no **NEW** tests needed
Accept both "NO TESTS NEEDED" and "NO NEW TESTS NEEDED".
That was a usability mistake I made on Day One. Fixed it
in Buildah but oops never got around to fixing it here.

Also, fix the test suite script: remove a no-longer-working
test case (changelog.txt, removed in #11467) and add a new
test for commits that include the magic string.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-10-19 14:04:34 -04:00
Jhon Honce
62d12a2adf Add guard for BuildOptions.CommonBuildOpts
Existing images.Build() bindings code panicked when field was not
initialized.

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2021-10-19 14:02:10 -04:00
Aditya Rajan
c6be71486d machine: silently cleanup dangling sockets before rm if possible
Try to cleanup dandling pid and machine socket if possible silently
before `rm`.

[NO TESTS NEEDED]

Signed-off-by: Aditya Rajan <arajan@redhat.com>
2021-10-19 14:01:27 -04:00
Ed Santiago
835d74ac63 sdnotify test: accept MAINPID anywhere
systemd sometimes spits out lines in the wrong order. Deal with it.

This fixes an infrequent flake that I haven't filed because I
didn't understand it well enough. (Hence, this reduces BUGS
but does not reduce BUG COUNT. Sorry!)

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-10-19 13:58:25 -04:00
Urvashi Mohnani
14509a92bb Allow a value of -1 to set unlimited pids limit
Users can set --pids-limit to -1 now to set unlimited
pids limit for a container - this matches the convention.

[NO TESTS NEEDED]

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2021-10-19 13:55:41 -04:00
OpenShift Merge Robot
c15c154083
Merge pull request #11853 from edsantiago/bats_permission_fix
[v3.4] bats permission fix
2021-10-04 13:43:35 -04:00
Ed Santiago
deb7517cc2 Gating tests: fix permissions error
...in volume test. Looks like Bodhi gating tests run from a
nonwritable directory. I feel really stupid for not realizing
this when I first tried to fix this bug two weeks ago.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-10-04 09:30:41 -06:00
OpenShift Merge Robot
1dfba5da85
Merge pull request #11832 from Luap99/common-v0.44.3
[v3.4] bump c/common to v0.44.3
2021-10-01 12:14:14 -04:00
Paul Holzinger
cd4e10fdf9
[v3.4] bump c/common to v0.44.3
This fixes a bug where podman machine could create a broken config file.

Fixes #11824

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2021-10-01 16:41:55 +02:00
OpenShift Merge Robot
148c9d6ccf
Merge pull request #11817 from mheon/bump_340
[CI:DOCS] Bump to v3.4.0
2021-09-30 15:04:27 -04:00
Matthew Heon
91f9682c7f Bump to v3.4.1-dev
Signed-off-by: Matthew Heon <mheon@redhat.com>
2021-09-30 14:45:07 -04:00
Matthew Heon
6e8de00bb2
Bump to v3.4.0
Signed-off-by: Matthew Heon <mheon@redhat.com>
2021-09-30 14:44:31 -04:00
Matthew Heon
3c93afbf44 Final release notes update for v3.4.0
Signed-off-by: Matthew Heon <mheon@redhat.com>
2021-09-30 14:43:58 -04:00
OpenShift Merge Robot
9911813c22
Merge pull request #11812 from baude/v34backportplaygen
Support selinux options with bind mounts play/gen
2021-09-30 14:34:26 -04:00
Brent Baude
128e168be5 Support selinux options with bind mounts play/gen
When using play kube and generate kube, we need to support if bind
mounts have selinux options.  As kubernetes does not support selinux in
this way, we tuck the selinux values into a pod annotation for
generation of the kube yaml.  Then on play, we check annotations to see
if a value for the mount exists and apply it.

Fixes BZ #1984081

Signed-off-by: Brent Baude <bbaude@redhat.com>
2021-09-30 12:06:18 -05:00
OpenShift Merge Robot
d8bdbf5b66
Merge pull request #11792 from mheon/340_final
Backports + release notes for v3.4.0 final
2021-09-30 08:35:07 -04:00
Matthew Heon
855746cc92 Fix release notes
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2021-09-29 16:39:29 -04:00
Matthew Heon
09b3530819 Release notes for v3.4.0 final release
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2021-09-29 16:39:29 -04:00
Jason T. Greene
2247d5f1b8 Disable docker and alias to podman in FCOS ignition
Signed-off-by: Jason Greene <jason.greene@redhat.com>
Co-authored-by: Dusty Mabe <dusty@dustymabe.com>
2021-09-29 16:39:29 -04:00
Urvashi Mohnani
7d72e83240 [NO TESTS NEEDED] Add port configuration to first regular container
When generating a kube yaml and there is a port configuration
add the configuration to the first regular container in the pod
and not to the init container.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2021-09-29 16:39:29 -04:00
Ashley Cui
4fc40c82f7 Remind user to check connection or use podman machine
Remind user to check their remote linux connection or use podman
machine. Move the warning from bindings to cmd/podman.

Signed-off-by: Ashley Cui <acui@redhat.com>
2021-09-29 16:39:29 -04:00
Matthew Heon
5064fd519c Ensure pod ID bucket is properly updated on rename
As we were not updating the pod ID bucket, removing a pod with
containers still in it (including the infra container, which will
always suffer from this) will not properly update the name
registry to remove the name of any renamed containers. This
patch ensures that does not happen - all containers will be fully
removed, even if renamed.

Fixes #11750

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2021-09-29 16:39:29 -04:00
Valentin Rothberg
ba74d6e6ec libpod: do not call (*container).Config()
Access the container's config field directly inside of libpod instead of
calling `Config()` which in turn creates expensive JSON deep copies.

Accessing the field directly drops memory consumption of a simple
`podman run --rm busybox true` from 1245kB to 410kB.

[NO TESTS NEEDED]

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>

<MH: Fixed cherry-pick conflicts>
2021-09-29 16:39:29 -04:00
Valentin Rothberg
a1199dbaf1 [CI:DOCS] cmd/podman: no dot for short descriptions
Remove trailing dots in the short descriptions for the sake of
consistency.  Noticed while parsing `podman help`.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-09-29 16:39:29 -04:00
Ed Santiago
ddc2b9bbef System tests: speed up. They've gotten too slow.
- logs: remove unnecessary sleeps. This saves ~25s.
   Unfortunately, journald seems to have some sort of lag,
   so we need to keep retrying until we get the 'after' string.

 - ps: add placeholder test for once buildah 3544 is fixed

 - cp: bulk-kill containers when finished, instead of one by one.
   This is a big change and only saves about 8s per run, but hey.

 - mount,pause,healthcheck: 'podman stop -t 0' before rm'ing containers.
   Easy 50s.
   Have I mentioned, lately, that 'podman rm -f' needs a '-t 0' flag?

 - play: same, and also 'podman pod stop'. Seems to shave ~20s.

 - socket-activation: UGH! Buggy and useless tests! They were
   running "sleep 90" containers for no reason whatsoever. I
   assume the intention was to run them with "-d", so that's
   what I've done here. Also fixed some language. 180 seconds!

(Unrelated: cleanup in 070-build, use $IMAGE, not alpine)

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-09-29 16:39:29 -04:00
Aditya Rajan
b3af5a92cc stop: Do nothing if container was never created in runtime
Following commit ensures we silently return container id on `stop` if
container was never created in OCI runtime.

Following behaviour ensures that we are in parity with docker.

Signed-off-by: Aditya Rajan <arajan@redhat.com>
2021-09-29 16:39:29 -04:00
Nalin Dahyabhai
7bfc5250d8 remote build: EvalSymlinks() the context directory
Use EvalSymlinks() to find the context directory, in case there's
shenanigans.

Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>
2021-09-29 16:39:29 -04:00
Paul Holzinger
7395459c76 podman machine: do not join userns
The go logic already prevents podman from joining the userns for machine
commands but the c shortcut code did not.

[NO TESTS NEEDED]

Fixes #11731

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2021-09-29 16:39:29 -04:00