Commit Graph

840 Commits

Author SHA1 Message Date
Ed Santiago a933269ba5 System test cleanup
Misspellings, broken code, missing tests

Signed-off-by: Ed Santiago <santiago@redhat.com>
2022-08-24 14:48:13 -06:00
Daniel J Walsh 8b1e88bf80
Fix documentation of use of tcp connections
Fixes: https://github.com/containers/podman/issues/15430

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-08-23 16:12:08 -04:00
OpenShift Merge Robot 5dea1218a0
Merge pull request #15426 from nicrowe00/14955
podman kube play/down --read from URL
2022-08-23 11:12:50 -04:00
Niall Crowe 5f719b533e podman kube play/down --read from URL
`podman kube play` can create pods and containers from YAML
read from a URL poiniting to a YAML file.
For example: `podman kube play https://example.com/demo.yml`.
`podman kube down` can also teardown pods and containers created
from that YAML file by also reading YAML from a URL, provided the
YAML file the URL points to has not been changed or altered since
it was used to create pods and containers

Closes #14955
Signed-off-by: Niall Crowe <nicrowe@redhat.com>
2022-08-23 12:55:53 +01:00
Toshiki Sonoda 64339d47c1 Warning messages are printed and ignored if we use an unsupported option
When an unsupported limit on cgroups V1 rootless systems
is requested, podman prints an warning message and
ignores the option/flag.

```
  Target options/flags:
    --cpu-period, --cpu-quota, --cpu-rt-period, --cpu-rt-runtime,
    --cpus, --cpu-shares, --cpuset-cpus, --cpuset-mems, --memory,
    --memory-reservation, --memory-swap, --memory-swappiness,
    --blkio-weight, --device-read-bps, --device-write-bps,
    --device-read-iops, --device-write-iops, --blkio-weight-device
```

Related to https://github.com/containers/podman/discussions/10152

Signed-off-by: Toshiki Sonoda <sonoda.toshiki@fujitsu.com>
2022-08-23 11:54:31 +09:00
Ed Santiago 09ef6fc66c podman generate kube - add actual tests
This exposed a nasty bug in our system-test setup: Ubuntu (runc)
was writing a scratch containers.conf file, and setting CONTAINERS_CONF
to point to it. This was well-intentionedly introduced in #10199 as
part of our long sad history of not testing runc. What I did not
understand at that time is that CONTAINERS_CONF is **dangerous**:
it does not mean "I will read standard containers.conf and then
override", it means "I will **IGNORE** standard containers.conf
and use only the settings in this file"! So on Ubuntu we were
losing all the default settings: capabilities, sysctls, all.

Yes, this is documented in containers.conf(5) but it is such
a huge violation of POLA that I need to repeat it.

In #14972, as yet another attempt to fix our runc crisis, I
introduced a new runc-override mechanism: create a custom
/etc/containers/containers.conf when OCI_RUNTIME=runc.
Unlike the CONTAINERS_CONF envariable, the /etc file
actually means what you think it means: "read the default
file first, then override with the /etc file contents".
I.e., we get the desired defaults. But I didn't remember
this helpers.bash workaround, so our runc testing has
actually been flawed: we have not been testing with
the system containers.conf. This commit removes the
no-longer-needed and never-actually-wanted workaround,
and by virtue of testing the cap-drops in kube generate,
we add a regression test to make sure this never happens
again.

It's a little scary that we haven't been testing capabilities.

Also scary: this PR requires python, for converting yaml to json.
I think that should be safe: python3 'import yaml' and 'json'
works fine on a RHEL8.7 VM from 1minutetip.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2022-08-18 09:43:55 -06:00
OpenShift Merge Robot 5de215e144
Merge pull request #15341 from rhatdan/kube
Fix podman kube generate --help to show correct help message
2022-08-17 16:35:34 +00:00
Lokesh Mandvekar 2a6daa1e31
Cirrus: add podman_machine_aarch64
Run machine tests on every PR as label-driven machine test
triggering is currently hard to predict and debug.

Co-authored-by: Ed Santiago <santiago@redhat.com>
Co-authored-by: Miloslav Trmač <mitr@redhat.com>
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2022-08-17 09:11:06 -04:00
Daniel J Walsh 5f09d9b60d
Fix podman kube generate --help to show correct help message
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-08-16 16:03:48 -04:00
Ed Santiago 06b3a4c1cf system tests: fix broken runc test
Followup to #14613, which was never actually tested until this
week in RHEL8 gating tests (see issue #15337).

 * add missing backslash in '|' expression
 * allow extra text after error (e.g., "invalid argument")

No way to test this until it makes its way into RHEL8,
so, fingers crossed.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2022-08-16 10:53:05 -06:00
OpenShift Merge Robot 3dace12777
Merge pull request #15317 from rhatdan/debug
Add compatibility support for --debug flag from docker
2022-08-16 15:09:12 +00:00
Daniel J Walsh 2d30b4dee5
Add compatibility support for --debug -D flag from docker
This is another fix for https://github.com/containers/podman/issues/14917

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-08-15 08:21:15 -04:00
Daniel J Walsh b9c094a5d4
Add Docker compatibility for --dns-option to --dns-opt
Fixes one of the issues found in https://github.com/containers/podman/issues/14917
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-08-15 07:38:08 -04:00
Valentin Rothberg 79e21b5b16 kube play: sd-notify integration
Integrate sd-notify policies into `kube play`.  The policies can be
configured for all contianers via the `io.containers.sdnotify`
annotation or for indidivual containers via the
`io.containers.sdnotify/$name` annotation.

The `kube play` process will wait for all containers to be ready by
waiting for the individual `READY=1` messages which are received via
the `pkg/systemd/notifyproxy` proxy mechanism.

Also update the simple "container" sd-notify test as it did not fully
test the expected behavior which became obvious when adding the new
tests.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-08-10 21:12:39 +02:00
Valentin Rothberg 3fc126e152 libpod: allow the notify socket to be passed programatically
The notify socket can now either be specified via an environment
variable or programatically (where the env is ignored).  The
notify mode and the socket are now also displayed in `container inspect`
which comes in handy for debugging and allows for propper testing.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-08-10 21:10:17 +02:00
Charlie Doern 280f5d8cb0 podman ssh work, using new c/common interface
implement new ssh interface into podman

this completely redesigns the entire functionality of podman image scp,
podman system connection add, and podman --remote. All references to golang.org/x/crypto/ssh
have been moved to common as have native ssh/scp execs and the new usage of the sftp package.

this PR adds a global flag, --ssh to podman which has two valid inputs `golang` and `native` where golang is the default.
Users should not notice any difference in their everyday workflows if they continue using the golang option. UNLESS they have been using an improperly verified ssh key, this will now fail. This is because podman was incorrectly using the
ssh callback method to IGNORE the ssh known hosts file which is very insecure and golang tells you not yo use this in production.

The native paths allows for immense flexibility, with a new containers.conf field `SSH_CONFIG` that specifies a specific ssh config file to be used in all operations. Else the users ~/.ssh/config file will be used.
podman --remote currently only uses the golang path, given its deep interconnection with dialing multiple clients and urls.

My goal after this PR is to go back and abstract the idea of podman --remote from golang's dialed clients, as it should not be so intrinsically connected. Overall, this is a v1 of a long process of offering native ssh, and one that covers some good ground with podman system connection add and podman image scp.

Signed-off-by: Charlie Doern <cdoern@redhat.com>
2022-08-09 14:00:58 -04:00
OpenShift Merge Robot 097cc6eb6d
Merge pull request #15225 from unknowndevQwQ/update_logo
[CI:DOCS]: update the podman logo
2022-08-09 14:28:59 +00:00
OpenShift Merge Robot 7992d86ab3
Merge pull request #15134 from sstosh/improve-output
Output messages display rawInput
2022-08-09 06:13:10 +00:00
unknowndevQwQ f4c53a41cf docs: update the podman logo
for podman/#15222

Signed-off-by: unknowndevQwQ <unknowndevQwQ@pm.me>
2022-08-07 09:11:53 +08:00
openshift-ci[bot] e9f1eb28c4
Merge pull request #15197 from vrothberg/fix-15006
podman rmi: improve error message for build containers
2022-08-04 17:47:03 +00:00
Valentin Rothberg 3102194f03 podman rmi: improve error message for build containers
Improve the error message when attempting to remove an image that is in
use by an external/build container.  Prior, the error only indicated
that the image was in use but did not aid in resolving the issue.

Fixes: #15006
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-08-04 16:42:02 +02:00
Valentin Rothberg f8b6a81ae4 test/system/255-auto-update.bats: add an SELinux comment
Drop a comment on using `chcon` to let the local rollback test pass.
It took me a while to understand why the test failed and future souls
may appreciated the extra breadcrumb.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-08-04 13:07:58 +02:00
openshift-ci[bot] 5fc7339aa1
Merge pull request #15084 from sstosh/rm-filter
Add rm --filter option
2022-08-03 17:23:07 +00:00
openshift-ci[bot] c1a38eb773
Merge pull request #15161 from lsm5/switch-to-dnf
Cirrus: use dnf instead of rpm to install packages
2022-08-03 15:14:22 +00:00
Lokesh Mandvekar 50981cb846
skip pod resource limits test on aarch64
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2022-08-03 08:29:59 -04:00
Niall Crowe 1249cbb75f add "podman kube down" command
The "podman kube down" reads in a structured file of
Kubernetes YAML and removes pods based on the Kubernetes kind described in the YAML,
similiar to "podman play kube --down". Users will still be able to use
"podman play kube --down" and "podman kube play --down" to
perform the same function.

Signed-off-by: Niall Crowe <nicrowe@redhat.com>
2022-08-02 16:27:01 +01:00
Toshiki Sonoda 2685c8dc43 Output messages display rawInput
`init`, `checkpint/restore` and `cleanup` command now display
output messages which is rawInput instead of a container ID.

Example:
```
$ podman init <container name>
<container name>

$ podman init <short container ID>
<short container ID>
```

Signed-off-by: Toshiki Sonoda <sonoda.toshiki@fujitsu.com>
2022-08-02 18:28:37 +09:00
Toshiki Sonoda 53ec479685 Add rm --filter option
--filter : remove the filtered container.

Signed-off-by: Toshiki Sonoda <sonoda.toshiki@fujitsu.com>
2022-07-30 10:59:59 +09:00
Daniel J Walsh de13dea863
With --rm option remove container if podman run fails
Fixes https://github.com/containers/podman/issues/15049

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-07-28 05:54:58 -04:00
Lokesh Mandvekar da98c88778
Cirrus: enable Fedora 36 aarch64 tasks on EC2
new file:   test/e2e/config_arm64.go

Tests that fail on aarch64 have been skipped with
`skip_if_aarch64`.

Co-authored-by: Chris Evich <cevich@redhat.com>
Co-authored-by: Ed Santiago <santiago@redhat.com>
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2022-07-27 15:27:52 -04:00
Daniel J Walsh 75419c5d88
When removing objects specifying --force,podman should exit with 0
This Patch will cause podman COMMAND rm --force bogus not fail

This is how Docker works, so Podman should follow this to allow existing
scripts to convert from Docker to Podman.

Fixes: #14612
Oprignal version of this patch came from wufan 1991849113@qq.com

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-07-26 16:00:42 -04:00
Ed Santiago 94e0a364a8 Semiperiodoc cleanup of obsolete FIXMEs
Some refer to issues that are closed. Remove them.

Some are runc bugs that will never be fixed. Say so, and remove
the FIXME.

One (bps/iops) should probably be fixed. File an issue for it, and
update comment to include the issue# so my find-obsolete-skips script
can track it.

And one (rootless mount with a "kernel bug?" comment) is still
not fixed. Leave the skip, but add a comment documenting the symptom.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2022-07-25 13:08:35 -06:00
Charlie Doern ad8940cecf fix container create/run throttle devices
pod resource limits introduced a regression where `FinishThrottleDevices` was not called for create/run

Signed-off-by: Charlie Doern <cdoern@redhat.com>
2022-07-22 11:42:51 -04:00
Ed Santiago 0a160fed77 Bump VMs, to Ubuntu 2204 with cgroups v1
...and enable the at-test-time confirmation, the one that
double-checks that if CI requests runc we actually use runc.
This exposed a nasty surprise in our setup: there are steps to
define $OCI_RUNTIME, but that's actually a total fakeout!
OCI_RUNTIME is used only in e2e tests, it has no effect
whatsoever on actual podman itself as invoked via command
line such as in system tests. Solution: use containers.conf

Given how fragile all this runtime stuff is, I've also added
new tests (e2e and system) that will check $CI_DESIRED_RUNTIME.

Image source: https://github.com/containers/automation_images/pull/146

Since we haven't actually been testing with runc, we need
to fix a few tests:

  - handle an error-message change (make it work in both crun and runc)
  - skip one system test, "survive service stop", that doesn't
    work with runc and I don't think we care.

...and skip a bunch, filing issues for each:

  - #15013 pod create --share-parent
  - #15014 timeout in dd
  - #15015 checkpoint tests time out under $CONTAINER
  - #15017 networking timeout with registry
  - #15018 restore --pod gripes about missing --pod
  - #15025 run --uidmap broken
  - #15027 pod inspect cgrouppath broken
  - ...and a bunch more ("podman pause") that probably don't
    even merit filing an issue.

Also, use /dev/urandom in one test (was: /dev/random) because
the test is timing out and /dev/urandom does not block. (But
the test is still timing out anyway, even with this change)

Also, as part of the VM switch we are now using go 1.18 (up
from 1.17) and this broke the gitlab tests. Thanks to @Luap99
for a quick fix.

Also, slight tweak to #15021: include the timeout value, and
reword message so command string is at end.

Also, fixed a misspelling in a test name.

Fixes: #14833

Signed-off-by: Ed Santiago <santiago@redhat.com>
2022-07-21 20:08:32 -06:00
Charlie Doern c00ea686fe resource limits for pods
added the following flags and handling for podman pod create

--memory-swap
--cpuset-mems
--device-read-bps
--device-write-bps
--blkio-weight
--blkio-weight-device
--cpu-shares

given the new backend for systemd in c/common, all of these can now be exposed to pod create.
most of the heavy lifting (nearly all) is done within c/common. However, some rewiring needed to be done here
as well!

Signed-off-by: Charlie Doern <cdoern@redhat.com>
2022-07-21 14:50:01 -04:00
Valentin Rothberg c1f04a024a podman-remote pull: fix duplicate progress outputs
By vendoring the fixes from containers/image.  Also add a test (thanks
@edsantiago) to make sure we won't regress in the future again.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-07-21 10:04:45 +02:00
Ed Santiago 1f0116817d system tests: new system-service bats file
Followup to #14957, which added a new test that doesn't
actually belong in the 250-systemd.bats file. It was
copy-pasted from another test that doesn't belong there.

Move both tests to a new .bats file, because (1) they
need a custom cleanup, and (2) one of the tests should
very definitely run under podman-remote, and the 250
bats file has a global skip_if_remote().

Signed-off-by: Ed Santiago <santiago@redhat.com>
2022-07-18 13:06:09 -06:00
openshift-ci[bot] 5e4d729434
Merge pull request #14890 from rhatdan/VENDOR
Vendor in containers/(storage,image, common, buildah)
2022-07-18 17:17:26 +00:00
Ed Santiago 1aafb01a99
buildah vendor treadmill
As you run --sync, please update this commit message with your
actual changes.

Changes since 2022-06-14:
 - apply-podman-deltas: (minor) buildah 4057 changed the name
   of a test; make corresponding change here

 - apply-podman-deltas: buildah 4071 adds a new OCI-hook
   test that's failing in remote. Skip it.

 - apply-podman-deltas: buildah 4096 changed an error message

 - apply-podman-deltas: buildah 4097 added a test that doesn't
   work with podman-remote

 - run-buildah-bud-tests: only run 'sudo --validate' if we
   need to sudo later (for running tests). Otherwise, same
   thing: I run the treadmill script, step away, and come
   back to an unnecessary sudo prompt.

 - system tests: the new containers-storage changes some
   error messages; fix tests to reflect that. (And, unrelated,
   fix a red cleanup warning)

Signed-off-by: Ed Santiago <santiago@redhat.com>
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-07-18 10:49:33 -04:00
Daniel J Walsh 5f848d89ed
Run codespell
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-07-18 10:42:04 -04:00
Daniel J Walsh 18c0c19aa9
Add --host and -H as equivalent options to --url
Docker supports -H and --host for specify the listening socket. Podman
should support them also in order to match the CLI.

These will not be documented since Podman defaults to using the
--url option.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-07-18 10:41:00 -04:00
Niall Crowe 3b5034e91a fix tests for "podman kube play"
This is a follow up to fix some of the apiv2
tests related to "podman kube play" while also
removing reduntant system tests.

Signed-off-by: Niall Crowe <nicrowe@redhat.com>
2022-07-14 15:47:27 +01:00
openshift-ci[bot] d4dc067117
Merge pull request #14923 from rhatdan/events
Add podman events -f to be alias for --filter
2022-07-14 12:01:40 +00:00
Daniel J Walsh cc2cfe0602
Add podman events -f to be alias for --filter
Needed for Docker compatibility.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-07-13 10:55:27 -04:00
Niall Crowe e08a77ce64 Add "podman kube play" cmd
The "podman kube play" command is designed to be a replacement for the
"podman play kube" command.
It performs the same function as "play kube"  while also still working with the same flags and options.
The "podman play kube" command is still functional as an alias of "kube play".

Closes #12475
Signed-off-by: Niall Crowe <nicrowe@redhat.com>
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-07-13 15:27:03 +01:00
Erik Sjölund 377057b400 [CI:DOCS] Improve language. Fix spelling and typos.
* Correct spelling and typos.

* Improve language.

Co-authored-by: Ed Santiago <santiago@redhat.com>
Signed-off-by: Erik Sjölund <erik.sjolund@gmail.com>
2022-07-11 21:59:32 +02:00
Valentin Rothberg 62cdc387de podman wait: return 0 if container never ran
Make sure to return/exit with 0 when waiting for a container that never
ran.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-07-11 13:06:40 +02:00
Valentin Rothberg b41e42f42b test/system/130-kill.bats: use $IMAGE
A copy-paste error led to use `alpine` instead.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-07-11 10:31:52 +02:00
openshift-ci[bot] 76422ecdbb
Merge pull request #14818 from rhatdan/wait
podman wait can take multiple conditions
2022-07-11 08:06:58 +00:00
Daniel J Walsh 96dd57ca50
podman wait can take multiple conditions
Podman wait should not be defaulting to just stopped.  By default
wait API waits for stopped and exited.  We should not override this on
the client side.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-07-08 05:26:56 -04:00