Commit Graph

2993 Commits

Author SHA1 Message Date
Parker Van Roy caf19efdab TODO complete
changed struct to policyMapper
change "image" to "registry" in multiple locations

Updated documentation with registry alias & autoupdate local

Added relevant test

Signed-off-by: Parker Van Roy <pvanroy@redhat.com>
2021-04-29 02:40:11 -04:00
OpenShift Merge Robot db67fedcbd
Merge pull request #10155 from pablofsf/fix-default-seccomp
Use seccomp_profile as default profile if defined in containers.conf
2021-04-28 15:40:30 -04:00
Ed Santiago 0dfd5a151d system tests: networking: fix another race condition
Our current #1 flake; this is a simple one: we can't run 'logs'
on a container run with '-d --rm'.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-04-28 08:41:27 -06:00
Pablo Correa Gómez 18cb17ffeb
Use seccomp_profile as default profile if defined in containers.conf
Edits `podman info` to provide the default seccomp profile
detected in the output

Signed-off-by: Pablo Correa Gómez <ablocorrea@hotmail.com>
2021-04-28 15:19:48 +02:00
OpenShift Merge Robot 99e5a76f09
Merge pull request #10157 from edsantiago/bats
System tests: fix two race conditions
2021-04-28 06:22:45 -04:00
Ed Santiago c11e9b01b3 System tests: fix two race conditions
Basically, add 'podman wait' before 'podman rm'. See if this
fixes gating tests run on ppc64le (possibly very very slow hosts)

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-04-27 15:10:18 -06:00
OpenShift Merge Robot f613a2a8d5
Merge pull request #10119 from rhatdan/timeout
Add podman run --timeout option
2021-04-27 16:47:32 -04:00
OpenShift Merge Robot dbc13f3dac
Merge pull request #10137 from cevich/update_ubuntu_2104
Cirrus: Update Ubuntu images to 21.04
2021-04-27 16:44:31 -04:00
Daniel J Walsh 825c84efe1
Allow docker volume create API to pass without name
The Docker API does not require Volume name to be specified when
creating a volume.

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-04-27 10:32:06 -04:00
Chris Evich 7e90bcbb9a
Skip blkio-weight test when no kernel BFQ support
Namely the Ubuntu 21.04 Kernel does not support BFQ.  Regardless of the
distro. skip this test if the required cgroup node doesn't exist.

Signed-off-by: Chris Evich <cevich@redhat.com>
2021-04-27 10:28:09 -04:00
OpenShift Merge Robot 5baa0ae85e
Merge pull request #10136 from zhangguanzhang/generate-kube-volume
Fixes generate kube incorrect when bind-mounting "/" and "/root"
2021-04-27 06:08:22 -04:00
OpenShift Merge Robot e6fc34b71a
Merge pull request #9941 from Luap99/fix-9828
Fix rootlesskit port forwarder with custom slirp cidr
2021-04-27 05:44:22 -04:00
OpenShift Merge Robot 54344d3a64
Merge pull request #10074 from flouthoc/ancestor-truncate-bug
Fix podman ps --filter ancestor to match exact ImageName/ImageID
2021-04-26 20:23:54 -04:00
Jakub Guzik 8edadd4c7e Fix images prune filter until
This commits fixes until filter. It is now checking if the created
timestamp is before until filter value as expected in the docs.

Signed-off-by: Jakub Guzik <jakubmguzik@gmail.com>
2021-04-26 22:51:33 +02:00
zhangguanzhang 3bf0fbf6f6 Fixes generate kube incorrect when bind-mounting "/" and "/root"
Signed-off-by: zhangguanzhang <zhangguanzhang@qq.com>
2021-04-26 23:47:39 +08:00
OpenShift Merge Robot fef3ea80aa
Merge pull request #10081 from sjug/cdi_device_lib
Add support for CDI device configuration
2021-04-26 09:31:06 -04:00
flouthoc b0ea40f551 Fix podman ps --filter ancestor to match exact ImageName/ImageID
Signed-off-by: flouthoc <flouthoc.git@gmail.com>
2021-04-25 13:49:40 +05:30
Daniel J Walsh 3538815c5b
Add podman run --timeout option
This option allows users to specify the maximum amount of time to run
before conmon sends the kill signal to the container.

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-04-23 11:18:05 -04:00
Paul Holzinger ca4f6ec1db Parse slirp4netns net options with compat api
Parse the slirp4netns network options when called via compat api. The
options must be extracted from the NetworkMode string.

Fixes #10110

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-04-23 11:48:50 +02:00
Paul Holzinger f99b7a314b Fix rootlesskit port forwarder with custom slirp cidr
The source ip for the rootlesskit port forwarder was hardcoded to the
standard slirp4netns ip. This is incorrect since users can change the
subnet used by slirp4netns with `--network slirp4netns:cidr=10.5.0.0/24`.
The container interface ip is always the .100 in the subnet. Only when
the rootlesskit port forwarder child ip matches the container interface
ip the port forwarding will work.

Fixes #9828

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-04-23 11:12:49 +02:00
OpenShift Merge Robot 21c77846e4
Merge pull request #9495 from rhatdan/groups
Add '--group-add keep-groups': supplementary groups into container
2021-04-22 09:29:28 -04:00
OpenShift Merge Robot 979f047d73
Merge pull request #10102 from edsantiago/bats
corrupt-image test: fix an oops
2021-04-21 15:45:47 -04:00
Daniel J Walsh e356160f41
Add --group-add keep-groups: suplimentary groups into container
Currently we have rootless users who want to leak their groups access
into containers, but this group access is only able to be pushed in by
a hard to find OCI Runtime annotation.  This PR makes this option a lot
more visable and hides the complexity within the podman client.

This option is only really needed for local rootless users. It makes
no sense for remote clients, and probably makes little sense for
rootfull containers.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-04-21 13:28:36 -04:00
OpenShift Merge Robot 897f6c3a4a
Merge pull request #10088 from rhatdan/no-headers
Add --noheading flag to all list commands
2021-04-21 13:20:36 -04:00
Daniel J Walsh 9c8277247d
Fixes from make codespell
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-04-21 13:16:33 -04:00
Ed Santiago a273d25ed1 corrupt-image test: fix an oops
Followup to #10033: actually implement the system reset test.
And, just out of paranoia, extend the warning-message check.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-04-21 06:09:31 -06:00
OpenShift Merge Robot 544c315665
Merge pull request #10080 from rhatdan/remote
podman-remote should show podman.sock info
2021-04-21 08:05:35 -04:00
OpenShift Merge Robot 41677b192a
Merge pull request #8979 from haircommander/full-attach-path
Use full attach path, rather than a symlink
2021-04-21 05:25:19 -04:00
Daniel J Walsh 8ebeadc3c6
Add --noheading flag to all list commands
Currently we have only podman images list --noheading.
This PR Adds this option to volumes, containers, pods, networks,
machines, and secrets.

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-04-21 05:22:29 -04:00
Daniel J Walsh 659dc7843c
podman-remote should show podman.sock info
Currently podman-remote info does not show socket information.

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-04-20 15:56:45 -04:00
Nalin Dahyabhai fd9dd7065d rmi: don't break when the image is missing a manifest
In libpod/image.Image.Remove(), if the attempt to find the image's
parent fails for any reason, log a warning and proceed as though it
didn't have one instead of failing, which would leave us unable to
remove the image without resetting everything.

In libpod/Runtime.RemoveImage(), if we can't determine if an image has
children, log a warning, and assume that it doesn't have any instead of
failing, which would leave us unable to remove the image without
resetting everything.

In pkg/domain/infra/abi.ImageEngine.Remove(), when attempting to remove
all images, if we encounter an error checking if a given image has
children, log a warning, and assume that it doesn't have any instead of
failing, which would leave us unable to remove the image without
resetting everything.

Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>
2021-04-20 15:44:39 -04:00
Sebastian Jug db7cff8c86
Add support for CDI device configuration
- Persist CDIDevices in container config
- Add e2e test
- Log HasDevice error and add additional condition for safety

Signed-off-by: Sebastian Jug <seb@stianj.ug>
2021-04-20 09:18:52 -04:00
OpenShift Merge Robot a94360a3f7
Merge pull request #10041 from chenk008/add_pidfile_flag
Add flag "--pidfile" for podman create/run
2021-04-19 16:22:05 -04:00
OpenShift Merge Robot a917bae67d
Merge pull request #10025 from zhangguanzhang/remote-save-dir
Fixes podman-remote save to directories does not work
2021-04-19 10:22:52 -04:00
Eduardo Vega 18d462c41b Ensure mount destination is clean, no trailing slash
Signed-off-by: Eduardo Vega <edvegavalerio@gmail.com>
2021-04-18 09:57:04 -06:00
chenkang 4ffaa50d05
add it for inspect pidfile
Signed-off-by: chenkang <kongchen28@gmail.com>
2021-04-18 21:29:12 +08:00
chenkang a1002beb78
fix start it
Signed-off-by: chenkang <kongchen28@gmail.com>
2021-04-17 23:35:27 +08:00
chenkang 4ce7aa6ee8
skip pidfile test on remote
Signed-off-by: chenkang <kongchen28@gmail.com>
2021-04-17 22:30:43 +08:00
chenkang f3f7ae5cdd
add pidfile it for container start
Signed-off-by: chenkang <kongchen28@gmail.com>
2021-04-17 20:42:21 +08:00
chenkang c9f347e9a8
skip pidfile it on remote
Signed-off-by: chenkang <kongchen28@gmail.com>
2021-04-17 20:33:37 +08:00
OpenShift Merge Robot 676c33f079
Merge pull request #10043 from Luap99/play-kube-ip
add --ip to podman play kube
2021-04-17 05:52:51 -04:00
Peter Hunt 6af4c08a50 WIP: drop test requirement
Signed-off-by: Peter Hunt <pehunt@redhat.com>
2021-04-16 17:45:52 -04:00
OpenShift Merge Robot 4c88035f09
Merge pull request #10021 from zhangguanzhang/invalid-save-expression
Fix invalid expression in save command
2021-04-16 04:28:14 -04:00
Paul Holzinger d7292dbf27 add --ip to podman play kube
Add a new --ip flag to podman play kube. This is used to specify a
static IP address which should be used for the pod. This option can be
specified several times because play kube can create more than one pod.

Fixes #8442

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-04-16 09:55:03 +02:00
chenkang 4fb5fee412 add ut
Signed-off-by: chenkang <kongchen28@gmail.com>
2021-04-16 15:12:57 +08:00
OpenShift Merge Robot b82ae19acf
Merge pull request #10046 from edsantiago/bats
system tests: build --pull-never: deal with flakes
2021-04-16 01:19:12 -04:00
OpenShift Merge Robot f7ab6b8554
Merge pull request #10045 from Luap99/compose-test-debug
compose test: diagnose flakes v3
2021-04-15 15:18:09 -04:00
Ed Santiago cfcf5f9ddc system tests: build --pull-never: deal with flakes
This test continues to flake on podman-remote (especially Ubuntu)
even after #10030 and #10034. I give up. Stop checking the error
message in podman-remote tests.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-04-15 12:15:15 -06:00
Paul Holzinger 4f0a080fdc compose test: diagnose flakes v3
From the debug output we know that rootlesskit does not bind the port
correctly. The rootlesskit port forwarder has a quite a few debug
statements so lets see the debug log when the test fails. Also check
if it binded the port inside the rootless cni namespace.

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-04-15 20:05:39 +02:00
Paul Holzinger 1685c2dc36 podman play kube apply correct log driver
The --log-driver flag was silently ignored by podman play kube. This
regression got introduced during the play kube rework.
Unfortunately the test for this was skipped for no good reason.

Fixes #10015

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-04-15 18:24:22 +02:00
OpenShift Merge Robot 405331ff90
Merge pull request #10032 from nalind/trace-level
Recognize "trace" logging, and use it for lone errors at exit
2021-04-15 09:08:37 -04:00
zhangguanzhang 21827f6a0c Fixes podman-remote save to directories does not work
Signed-off-by: zhangguanzhang <zhangguanzhang@qq.com>
2021-04-15 19:24:46 +08:00
OpenShift Merge Robot df6c7c2ae5
Merge pull request #10031 from edsantiago/compose_test_flakes_again
compose test: ongoing efforts to diagnose flakes
2021-04-14 18:01:51 -04:00
OpenShift Merge Robot a7bbb78c8d
Merge pull request #10028 from edsantiago/bats
System tests: fix racy podman-inspect
2021-04-14 15:12:51 -04:00
Ed Santiago 1cf2b3eb28 compose test: ongoing efforts to diagnose flakes
Yay, we got a failure with the new code (#10017). It shows
one ECONNRESET followed by a lot of ECONNREFUSED over an 8-second
period (actually 15s because of the second curl retry).

My hunch: the container itself is dying. No amount of retrying
will get anything to work. So, instead of the curl retry, if
curl fails, run 'docker-compose logs', 'podman ps', and 'ss -tulpn'
and hope that one/more of those tells us something useful when
the test flakes again.

Also: DUH! Bitten by one of the most common bash pitfalls.
Checking exit status after 'local' will always be zero.
Split the declaration and the action into separate lines.

Also: if curl fails, return immediately. There's no point in
running the string output comparison.

Also: in _show_ok(), don't emit "actual/expect" messages
if both strings are empty.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-04-14 12:32:20 -06:00
Nalin Dahyabhai bc86c50cd8 Test that we don't error out on advertised --log-level values
Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>
2021-04-14 14:16:09 -04:00
OpenShift Merge Robot 4ee203dde7
Merge pull request #9945 from rhatdan/runlabel
Fix handling of $NAME and $IMAGE in runlabel
2021-04-14 10:47:50 -04:00
Ed Santiago 83930a03c5 System tests: fix racy podman-inspect
Add 'podman wait' between kill & inspect.

Fixes: #9751

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-04-14 08:09:20 -06:00
OpenShift Merge Robot 96ad84fd5a
Merge pull request #10017 from edsantiago/compose_test_flakes_again
compose test: try to get useful data from flakes
2021-04-14 09:14:51 -04:00
zhangguanzhang 6bec101041 Fixes invalid expression in save command
Signed-off-by: zhangguanzhang <zhangguanzhang@qq.com>
2021-04-14 17:32:48 +08:00
Ed Santiago 31e31aa9dd compose test: try to get useful data from flakes
docker-compose test continues to flake even after #9961.
Let's try to get some useful data from the failures, by:

  * adding -S (--show-error) to curl. With just -s (--silent),
    curl is completely quiet. With -S, it displays errors.
    (Not in TAP form, but I'm OK with that)

  * oops, adding safety checks to the fix from #9961 (it
    was inadvertently clobbering the curl exit status)

And, as long as I'm in this code: logformatter was not
highlighting these results, because the '1..N' TAP line
needs to be spit out at the end. Have test-compose emit
a 'TAP' header <http://testanything.org/> and make
logformatter recognize it.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-04-13 15:18:34 -06:00
Ed Santiago bc2f60ad6d System tests: setup: better cleanup of stray images
Fix a corner case in basic_setup(), where we rmi stray images.
If a test tags $IMAGE and fails to rmi by tag name, cleanup
could rmi both tag name and IID, wiping out the desired image:

   podman tag $IMAGE foo
   ...
   cleanup: rmi foo $FOO_IID   [this removes $IMAGE!]

Solution: rmi by name, but only rmi by IID if != $IMAGE.

TOTH to ypu for bringing this to my attention.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-04-13 06:50:56 -06:00
OpenShift Merge Robot ddffc7fa80
Merge pull request #9996 from giuseppe/disable-cgroupfs-rootless-on-cgroup-v2
cgroup: do not set cgroup parent when rootless and cgroupfs
2021-04-12 12:15:47 -07:00
Jhon Honce 59283322e7 [CI:DOCS] Correct status code for /pods/create
Swagger documentation reported that the API endpoint /pods/create
returned 200 while the as-built code returned 201. 201 is more
correct so documentation updated.

Tests already checked for 201 so no updated needed.

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2021-04-12 09:33:51 -07:00
Giuseppe Scrivano 2fad29ccb2
cgroup: do not set cgroup parent when rootless and cgroupfs
do not set the cgroup parent when running as rootless with cgroupfs,
even if cgroup v2 is used.

Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1947999

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-04-12 16:55:55 +02:00
OpenShift Merge Robot bd3dcb9ec4
Merge pull request #9969 from jwhonce/wip/manifests
Update manifest API endpoints
2021-04-12 16:17:22 +02:00
Daniel J Walsh 8f16742187
Fix handling of $NAME and $IMAGE in runlabel
Fixes: https://github.com/containers/podman/issues/9405

Add system runlabel tests.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-04-12 08:41:08 -04:00
OpenShift Merge Robot 9d3e310710
Merge pull request #9935 from EduardoVega/5788-kube-volume
Add support for play/generate kube PersistentVolumeClaims and Podman volumes
2021-04-12 12:36:20 +02:00
OpenShift Merge Robot 3b03ff7d1e
Merge pull request #9950 from Luap99/unshare-rootless-cni
podman unshare: add --rootless-cni to join the ns
2021-04-12 12:33:20 +02:00
OpenShift Merge Robot 0d9b1b832c
Merge pull request #9977 from edsantiago/bud_simplify
buildah-bud tests: simplify
2021-04-12 12:29:21 +02:00
Eduardo Vega 61cb6d61dd Add support for play/generate kube volumes
Signed-off-by: Eduardo Vega <edvegavalerio@gmail.com>
2021-04-09 14:01:13 -06:00
Jhon Honce d41c33eb91 Update manifest API endpoints
* Add validation for manifest name
* Always return an array for manifests even if empty
* Add missing return in df handler when returning error. Caused an
  additional null to be written to client crashing python decoder.

When c/image is refactored to include manifests, manifest endpoints should
be revisited.

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2021-04-09 11:00:06 -07:00
OpenShift Merge Robot 002180f02a
Merge pull request #9971 from jwhonce/wip/df
Add missing return
2021-04-08 17:15:22 -04:00
Ed Santiago f56f5851b3 buildah-bud tests: simplify
Experience this week has shown that managing .diff files
is too difficult for humans, and too fragile. Opportunities
for errors abound. So, let's try to minimize the diffs.

We can't eliminate the diffs to helpers.bash: those are
true code changes that are absolutely required for running
tests using podman instead of buildah. We need to carry
those ourselves: they are not appropriate for the buildah
repo itself.

What we can do is simplify the patching of bud.bats. That
is fragile, because bud.bats changes often, and context-
sensitive git patch files can easily get confused.

Recognizing that the changes to bud.bats fall under two types:

  - tests that are skipped
  - tests in which podman error messages differ from buildah's

...we now have a new script, apply-podman-deltas, which
is (I hope) much user-friendlier. It understands two directives:

  errmsg - alter the expected error message
  skip   - skip a test

Both operate based on a bats test name. The test name must
match exactly. These directives use 'sed' to update bud.bats.
If any directive fails, the script will keep going (so you
get as many errors as possible in a run), then exits failure.

Instructions (README.md) now explain the process for dealing
with all expected test failures.

(Sneak checkin: add '--filter=NAME' option to test runner,
allowing for targeted and much shorter test runs).

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-04-08 14:43:49 -06:00
Jhon Honce 6cc0dc44ec Add missing return
libpod df handler missing a return after writing error to client. This
caused a null to be appended to JSON and crashed python decoder.

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2021-04-08 08:59:37 -07:00
OpenShift Merge Robot e6a5c0ffc1
Merge pull request #9970 from baude/cispeed
speed up CI handling of images
2021-04-08 09:44:40 -04:00
OpenShift Merge Robot 9ba2e78cdc
Merge pull request #9958 from jmguzik/limit-prune-filters-for-volumes
Volumes prune endpoint should use only prune filters
2021-04-07 18:55:23 -04:00
baude b847ba7e30 speed up CI handling of images
now that ci uses cached images, putting the large toolbox image into
cache should help speed up tests.

Signed-off-by: baude <bbaude@redhat.com>
2021-04-07 15:40:29 -05:00
Jakub Guzik 84907324fa Volumes prune endpoint should use only prune filters
Volumes endpoints for HTTP compat and libpod APIs allowed
usage of list HTTP endpoint filter funcs. Documentation in
case of compat API does not allow that. This commit aligns
code with the documentation and also ligns libpod with compat API.

Signed-off-by: Jakub Guzik <jakubmguzik@gmail.com>
2021-04-07 22:37:49 +02:00
OpenShift Merge Robot f44645aad6
Merge pull request #9962 from edsantiago/podman_remote_arch
Handle podman-remote --arch, --platform, --os
2021-04-07 10:03:43 -04:00
Paul Holzinger 0a39ad196c podman unshare: add --rootless-cni to join the ns
Add a new --rootless-cni option to podman unshare to also join the
rootless-cni network namespace. This is useful if you want to connect
to a rootless container via IP address. This is only possible from the
rootless-cni namespace and not from the host namespace. This option also
helps to debug problems in the rootless-cni namespace.

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-04-07 15:54:12 +02:00
OpenShift Merge Robot 0e67053b9a
Merge pull request #9955 from edsantiago/bats
System tests: special case for RHEL: require runc
2021-04-07 09:27:41 -04:00
Ed Santiago 48b4b665b1 Update buildah-bud diffs
Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-04-07 05:00:26 -06:00
Daniel J Walsh b68106703e Handle podman-remote --arch, --platform, --os
Podman remote should be able to handle remote specification of
arches.

Requires: https://github.com/containers/buildah/pull/3116

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-04-07 05:00:16 -06:00
Ed Santiago 68269a0ee1 buildah-bud tests: handle go pseudoversions, plus...
Handle go pseudoversions, e.g. a custom non-released buildah
used during testing of a PR. This will be something like:

   v1.20.1-0.20210402144408-36a37402d0c8

...and it makes it impossible (AFAIK) to do a shallow checkout;
we need to do a full clone of buildah, then git-checkout the
SHA (last element of the long string above).

FIXME: this is great for testing, but we almost certainly
want some way to block this PR from merging, don't we?

And, while testing this, found and fixed three bugs:

  - quote "$failhint" when echoing it on failure; otherwise
    we lose original whitespace.

  - invoke git-am with --reject! This makes it SO MUCH EASIER
    to identify the failing part of our patch!

  - sigh: generate the make-new-buildah-diffs helper *BEFORE*
    we try git-am! Otherwise, duh, if git-am fails we have no
    way to help the developer create a new diff file.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-04-07 04:59:39 -06:00
Paul Holzinger 42e4609faf Fix flaking rootless compose test
The compose port test is flaking with an empty curl result. The curl retry
does not work properly. Given the the tests never expect an empty result
lets just wait one second and retry again.
Unfortunately there is no way for me to actually verify if this will fix
the flake.

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-04-07 11:41:15 +02:00
Paul Holzinger f230214db1 rootless cni add /usr/sbin to PATH if not present
The CNI plugins need access to iptables in $PATH. On debian /usr/sbin
is not added to $PATH for rootless users. This will break rootless
cni completely. To prevent breaking existing users add /usr/sbin to
$PATH in podman if needed.

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-04-06 23:55:05 +02:00
Ed Santiago 2ab5a294b9 System tests: special case for RHEL: require runc
As discussed in watercooler 2021-04-06: make sure that RHEL8
and CentOS are using runc. Using crun is probably a packaging
error that should be caught early.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-04-06 14:21:46 -06:00
OpenShift Merge Robot d83f49ef6b
Merge pull request #9754 from mheon/add_dep
Add --requires flag to podman run/create
2021-04-06 16:16:49 -04:00
Matthew Heon 6acd265306 Add --requires flag to podman run/create
Podman has, for a long time, had an internal concept of
dependency management, used mainly to ensure that pod infra
containers are started before any other container in the pod. We
also have the ability to recursively start these dependencies,
which we use to ensure that `podman start` on a container in a
pod will not fail because the infra container is stopped. We have
not, however, exposed these via the command line until now.

Add a `--requires` flag to `podman run` and `podman create` to
allow users to manually specify dependency containers. These
containers must be running before the container will start. Also,
make recursive starting with `podman start` default so we can
start these containers and their dependencies easily.

Fixes #9250

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2021-04-06 14:01:31 -04:00
OpenShift Merge Robot 382b5b81d2
Merge pull request #9942 from mheon/fix_9919
Ensure that `--userns=keep-id` sets user in config
2021-04-06 17:04:50 +02:00
Matthew Heon 541252afa7 Ensure that `--userns=keep-id` sets user in config
One of the side-effects of the `--userns=keep-id` command is
switching the default user of the container to the UID of the
user running Podman (though this can still be overridden by the
`--user` flag). However, it did this by setting the UID and GID
in the OCI spec, and not by informing Libpod of its intention to
switch users via the `WithUser()` option. Because of this, a lot
of the code that should have triggered when the container ran
with a non-root user was not triggering. In the case of the issue
that this fixed, the code to remove capabilities from non-root
users was not triggering. Adjust the keep-id code to properly
inform Libpod of our intention to use a non-root user to fix
this.

Also, fix an annoying race around short-running exec sessions
where Podman would always print a warning that the exec session
had already stopped.

Fixes #9919

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2021-04-06 09:18:46 -04:00
OpenShift Merge Robot a64f39ba3c
Merge pull request #9933 from jmguzik/network-prune-with-until-tests
Http api tests for network prune with until filter
2021-04-05 22:15:16 +02:00
OpenShift Merge Robot 4f57a10344
Merge pull request #9940 from rhatdan/auth
Verify existence of auth file if specified
2021-04-05 21:15:15 +02:00
OpenShift Merge Robot 6b23fece73
Merge pull request #9911 from rhatdan/storage
Allow users to override default storage opts with --storage-opt
2021-04-05 20:55:15 +02:00
OpenShift Merge Robot e9e4898048
Merge pull request #9907 from rhatdan/options
Add support for podman --context default
2021-04-05 20:54:15 +02:00
Daniel J Walsh 6831c72f6a
Don't relabel volumes if running in a privileged container
Docker does not relabel this content, and openstack is running
containers in this manner.  There is a penalty for doing this
on each container, that is not worth taking on a disable SELinux
container.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-04-05 13:07:36 -04:00
Daniel J Walsh 69ace20535
Allow users to override default storage opts with --storage-opt
We define in the man page that this overrides the default storage
options, but the code was appending to the existing options.

This PR also makes a change to allow users to specify --storage-opt="".
This will turn off all storage options.

https://github.com/containers/podman/issues/9852

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-04-05 12:48:09 -04:00
Daniel J Walsh c6a21a38b3
Add support for podman --context default
This is a noop but helps with scripting and docker-compose.

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-04-05 12:41:47 -04:00
Daniel J Walsh 28251f41ff
Verify existence of auth file if specified
Fixes: https://github.com/containers/podman/issues/9572

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-04-05 12:36:04 -04:00
OpenShift Merge Robot 131458e956
Merge pull request #9423 from Luap99/rootless-cni-no-infra
rootless cni without infra container
2021-04-05 17:12:14 +02:00
OpenShift Merge Robot 1c8d3d0f6f
Merge pull request #9928 from pendulm/fix_rootless_socket_activation
Fix rootless socket activation
2021-04-05 16:02:15 +02:00
pendulm 11917a1a6b Move socket activation check into init() and set global condition.
So rootless setup could use this condition in parent and child, child
podman should adjust LISTEN_PID to its self PID.

Add system test for systemd socket activation

Signed-off-by: pendulm <lonependulm@gmail.com>
2021-04-05 17:43:11 +08:00
Jakub Guzik 27ebbe3fe7 Http api tests for network prune with until filter
Signed-off-by: Jakub Guzik <jakubmguzik@gmail.com>
2021-04-04 23:33:14 +02:00
Daniel J Walsh 052732857a
Fix missing podman-remote build options
Fix handling of SecurityOpts
   LabelOpts
   SeccompProfilePath
   ApparmorProfile

Fix Ulimits

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-04-02 09:19:03 -04:00
Paul Holzinger 676fcb722f Add new docker-compose test for two networks
Also fix the tests so we can use the podman function with the output.

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-04-01 17:27:03 +02:00
Paul Holzinger 954d920825 Make the docker-compose test work rootless
Make sure the DOCKER_SOCK location is accessible by the user when run
rootless. Alos set the DOCKER_HOST env var to ensure docker-compose will
use the non default location. Cleanup steps such as `rm` or `umount`
must be run inside podman unshare otherwise they can fail due missing
privileges.

Change the curl test to use --retry-all-errors otherwise the tests will
flake. The web server inside the container will return http code 500
sometimes, most likely because it is not fully ready to accept
connections. With --retry-all-errors curl will retry instead of failing
and thus the test will work.

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-04-01 17:27:03 +02:00
Paul Holzinger 8627de28bc Fix dnsname test
Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-04-01 17:27:03 +02:00
Paul Holzinger 294c90b05e Enable rootless network connect/disconnect
With the new rootless cni supporting network connect/disconnect is easy.
Combine common setps into extra functions to prevent code duplication.

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-04-01 17:27:03 +02:00
Paul Holzinger 00b2ec5e6f Add rootless support for cni and --uidmap
This is supported with the new rootless cni logic.

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-04-01 17:27:03 +02:00
Paul Holzinger 54b588c07d rootless cni without infra container
Instead of creating an extra container create a network and mount
namespace inside the podman user namespace. This ns is used to
for rootless cni operations.
This helps to align the rootless and rootful network code path.
If we run as rootless we just have to set up a extra net ns and
initialize slirp4netns in it. The ocicni lib will be called in
that net ns.

This design allows allows easier maintenance, no extra container
with pause processes, support for rootless cni with --uidmap
and possibly more.

The biggest problem is backwards compatibility. I don't think
live migration can be possible. If the user reboots or restart
all cni containers everything should work as expected again.
The user is left with the rootless-cni-infa container and image
but this can safely be removed.

To make the existing cni configs work we need execute the cni plugins
in a extra mount namespace. This ensures that we can safely mount over
/run and /var which have to be writeable for the cni plugins without
removing access to these files by the main podman process. One caveat
is that we need to keep the netns files at `XDG_RUNTIME_DIR/netns`
accessible.

`XDG_RUNTIME_DIR/rootless-cni/{run,var}` will be mounted to `/{run,var}`.
To ensure that we keep the netns directory we bind mount this relative
to the new root location, e.g. XDG_RUNTIME_DIR/rootless-cni/run/user/1000/netns
before we mount the run directory. The run directory is mounted recursive,
this makes the netns directory at the same path accessible as before.

This also allows iptables-legacy to work because /run/xtables.lock is
now writeable.

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-04-01 17:27:03 +02:00
Daniel J Walsh ab7c83392b
Fix handling of remove --log-rusage param
Fixes: https://github.com/containers/podman/issues/9889

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-03-31 07:46:20 -04:00
OpenShift Merge Robot bd07179e9c
Merge pull request #9892 from jwhonce/wip/top
Trim white space from /top endpoint results
2021-03-30 21:29:26 +02:00
OpenShift Merge Robot 989c8e9785
Merge pull request #9863 from jmguzik/fix-prune-filter-funcs
Containers prune endpoint should use only prune filters
2021-03-30 20:51:00 +02:00
Jhon Honce eef66973de Trim white space from /top endpoint results
Versions of the ps command have additional spaces between fields, this
manifests as the container asking to run "top" and API reporting "top "
as a process.

Endpoint and tests updated to check that "top" is reported.

There is no libpod specialized endpoint to update.

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2021-03-30 10:42:06 -07:00
Jakub Guzik f7d82a1f30 Containers prune endpoint should use only prune filters
Containers endpoints for HTTP compad and libpod APIs allowed usage of list HTTP
endpoint filter funcs. Documentation in case of libpod and compat API does not allow that.
This commit aligns code with the documentation.

Signed-off-by: Jakub Guzik <jakubmguzik@gmail.com>
2021-03-30 10:19:22 +02:00
Ed Santiago c03ff140d8 APIv2 basic test: relax APIVersion check
It is tedious and error-prone to update the 'APIVersion=<exact>'
test every time there's a minor bump. Change the test so it
confirms only the major version.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-03-29 15:32:01 -06:00
OpenShift Merge Robot b9e064ab84
Merge pull request #9795 from mheon/bump_320_dev
Bump to v3.2.0-dev
2021-03-29 20:42:03 +00:00
Matthew Heon 637c5d55e1 Bump to v3.2.0-dev
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2021-03-29 14:03:04 -04:00
OpenShift Merge Robot b7bb8a1fb9
Merge pull request #9842 from AlbanBedel/play-kube-env-from-secrets
Add support for env from secrets in play kube
2021-03-29 17:10:25 +00:00
OpenShift Merge Robot 3d6dcdc7a4
Merge pull request #9862 from edsantiago/bud_reenable_pull_never
buildah-bud tests: reenable pull-never test
2021-03-29 15:27:42 +00:00
OpenShift Merge Robot 5e156c892c
Merge pull request #9857 from edsantiago/bats
system tests: friendier messages for 2-arg is()
2021-03-29 14:37:42 +00:00
Ed Santiago 0ca8d8601f buildah-bud tests: reenable pull-never test
Issue #9573 (podman build --pull-never is a NOP) is fixed.
Remove the 'skip' in the buildah-bud pull-never test.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-03-29 07:55:56 -06:00
OpenShift Merge Robot ac3499cc96
Merge pull request #9631 from rhatdan/pull
Fix podman build --pull-never
2021-03-29 13:41:42 +00:00
Ed Santiago 06ae12bd4e system tests: friendier messages for 2-arg is()
The 'is' check was intended to be called with three arguments,
the last one being a nice helpful test name. There's a fallback
for two-argument calls, but it was a horrible FIXME.

New fallback: the most recently run podman command. We keep
track of it in each run_podman() invocation.

This is not ideal, because it's theoretically possible to
invoke 'is' on something other than the output of run_podman,
but this at least fixes the by-far-most-common case.

[NO TESTS NEEDED]

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-03-29 06:10:42 -06:00
Alban Bedel c59eb6f12b play kube: add support for env vars defined from secrets
Add support for secretRef and secretKeyRef to allow env vars to be set
from a secret. As K8S secrets are dictionaries the secret value must
be a JSON dictionary compatible with the data field of a K8S secret
object. The keys must consist of alphanumeric characters, '-', '_'
or '.', and the values must be base64 encoded strings.

Signed-off-by: Alban Bedel <albeu@free.fr>
2021-03-28 15:03:29 +02:00
Alban Bedel e5ff694855 play kube: support optional/mandatory env var from config map
In K8S the pod creation fails if an env var reference a non existing
config map key. It can be marked as optional, but per default it is
mandatory. Podman on the other hand always treat such references as
optional.

Rework envVarsFrom() and envVarValue() to additionaly return an error
and add support for the optional attribute in configMapRef and
configMapKeyRef.

Signed-off-by: Alban Bedel <albeu@free.fr>
2021-03-28 15:02:31 +02:00
OpenShift Merge Robot 4831d41346
Merge pull request #9838 from xordspar0/kubeVolumeErrors
Add problematic volume name to kube play error messages
2021-03-28 10:54:44 +00:00
Jordan Christiansen dce877c5ca Add problematic volume name to kube play error messages
When kube play fails to create a volume, it should say which volume had
the problem so the user doesn't have to guess. For the following pod
spec:

	apiVersion: v1
	kind: Pod
	metadata:
	  name: mypod
	spec:
	  containers:
	    - name: myfrontend
	      image: nginx
	      volumeMounts:
	      - mountPath: "/var/www/html"
		name: mypd
	  volumes:
	    - name: mypd
	      hostPath:
		path: /var/blah

podman will now report:

	Error: failed to create volume "mypd": error in parsing HostPath
	in YAML: error checking path "/var/blah": stat /var/blah: no such
	file or directory

Signed-off-by: Jordan Christiansen <xordspar0@gmail.com>
2021-03-27 09:46:30 -05:00
OpenShift Merge Robot ec47312eeb
Merge pull request #9822 from jmguzik/fix-pods-list-filters-http-api
Fix list pods filter handling in libpod api
2021-03-27 12:36:47 +00:00
Daniel J Walsh 4d51995377
Fix podman build --pull-never
Currently pull policy is set incorrectly when users set --pull-never.

Also pull-policy is not being translated correctly when using
podman-remote.

Fixes: #9573

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-03-27 05:33:30 -04:00
OpenShift Merge Robot 4d0b583340
Merge pull request #9833 from rhatdan/resize
Remove resize race condition
2021-03-27 00:05:47 +00:00
Jakub Guzik 85015a5e23 Fix list pods filter handling in libpod api
Signed-off-by: Jakub Guzik <jakubmguzik@gmail.com>
2021-03-26 20:19:12 +01:00
Daniel J Walsh dcabf6dd71
Remove resize race condition
Since podman-remote resize requests can come in at random times, this
generates a real potential for race conditions. We should only be
attempting to resize TTY on running containers, but the containers can
go from running to stopped at any time, and returning an error to the
caller is just causing noice.

This change will basically ignore requests to resize terminals if the
container is not running and return the caller to success.  All other
callers will still return failure.

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-03-26 15:15:17 -04:00
Daniel J Walsh fc197fb4f5
[NO TESTS NEEDED] Vendor in containers/buildah v1.20.0
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-03-26 13:57:27 -04:00
Anders F Björklund 826c228035 Fix swapped dimensions from terminal.GetSize
Signed-off-by: Anders F Björklund <anders.f.bjorklund@gmail.com>
2021-03-26 07:14:47 +01:00
OpenShift Merge Robot 9e23e0b3e3
Merge pull request #9810 from jmguzik/fix-impages-filter-http-api
Fix filters list/prune in image http compat/libpod api endpoints
2021-03-25 14:40:21 -07:00
OpenShift Merge Robot 029659ac15
Merge pull request #9818 from edsantiago/bats
system tests: new interactive tests
2021-03-25 11:37:00 -07:00
Ed Santiago 4b23bc7aa4 system tests: new interactive tests
socat can create a dummy PTY that we can manipulate. This
lets us run a variety of tests that we couldn't before,
involving "run -it", and stty, and even "load" with no args.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-03-25 10:48:55 -06:00
Eduardo Vega cbf53c166d Support multi doc yaml for generate/play kube
Signed-off-by: Eduardo Vega <edvegavalerio@gmail.com>
2021-03-25 06:54:12 -06:00
Jakub Guzik 429a655866 Fix filters in image http compat/libpod api endpoints
Signed-off-by: Jakub Guzik <jakubmguzik@gmail.com>
2021-03-25 12:29:53 +01:00
OpenShift Merge Robot 896ea085b1
Merge pull request #9768 from mheon/fix_9608
Ensure manually-created volumes have correct ownership
2021-03-25 03:09:25 -07:00
Daniel J Walsh 00949d0bd8
Check if stdin is a term in --interactive --tty mode
If you are attempting to run a container in interactive mode, and want
a --tty, then there must be a terminal in use.

Docker exits right away when a user specifies to use a --interactive and
--TTY but the stdin is not a tty.

Currently podman will pull the image and then fail much later.

Podman will continue to run but will print an warning message.

Discussion in : https://github.com/containers/podman/issues/8916

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-03-24 16:33:30 -04:00
Matthew Heon 452decf8a4 Ensure manually-created volumes have correct ownership
As part of a fix for an earlier bug (#5698) we added the ability
for Podman to chown volumes to correctly match the user running
in the container, even in adverse circumstances (where we don't
know the right UID/GID until very late in the process). However,
we only did this for volumes created automatically by a
`podman run` or `podman create`. Volumes made by
`podman volume create` do not get this chown, so their
permissions may not be correct. I've looked, and I don't think
there's a good reason not to do this chwon for all volumes the
first time the container is started.

I would prefer to do this as part of volume copy-up, but I don't
think that's really possible (copy-up happens earlier in the
process and we don't have a spec). There is a small chance, as
things stand, that a copy-up happens for one container and then
a chown for a second, unrelated container, but the odds of this
are astronomically small (we'd need a very close race between two
starting containers).

Fixes #9608

Signed-off-by: Matthew Heon <mheon@redhat.com>
2021-03-24 14:24:47 -04:00
OpenShift Merge Robot af91f27d85
Merge pull request #9790 from matejvasek/fix-isolation-serde
fix: build endpoint for compat API
2021-03-24 05:32:27 -07:00
OpenShift Merge Robot 860de13d4f
Merge pull request #9749 from jwillikers/generate-kube-persistent-volume-claim
Generate Kubernetes PersistentVolumeClaims from named volumes
2021-03-23 13:20:22 -07:00
OpenShift Merge Robot 9982923276
Merge pull request #9537 from TomSweeneyRedHat/dev/tsweeney/tz_check
Validate passed in timezone from tz option
2021-03-23 12:52:22 -07:00
Matej Vasek aba3bbd059 fix: build endpoint for compat API
Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-03-23 17:48:28 +01:00
OpenShift Merge Robot 4d3e71ad28
Merge pull request #9296 from edsantiago/test_buildah_bud
run buildah bud tests using podman
2021-03-23 04:57:13 -07:00
OpenShift Merge Robot d0bd775c02
Merge pull request #9773 from jmguzik/containers-prune-filters-http-api
Fix containers list/prune http api filter behaviour
2021-03-22 10:17:24 -07:00
OpenShift Merge Robot 9ec936a856
Merge pull request #9757 from jwhonce/wip/load
Cleanup /libpod/images/load handler
2021-03-22 08:18:56 -07:00
TomSweeneyRedHat 5b2e71dc5b Validate passed in timezone from tz option
Erik Sjolund reported an issue where a badly formated file
could be passed into the `--tz` option and then the date in the container
would be badly messed up:

```
erik@laptop:~$ echo Hello > file.txt
erik@laptop:~$ podman run --tz=../../../home/erik/file.txt --rm -ti
docker.io/library/alpine cat /etc/localtime
Hello
erik@laptop:~$ podman --version
podman version 3.0.0-rc1
erik@laptop:~$
```
This fix checks to make sure the TZ passed in is a valid
value and then proceeds with the rest of the processing.

This was first reported as a potential security issue, but it
was thought not to be.   However, I thought closing the hole
sooner rather than later would be good.

Signed-off-by: TomSweeneyRedHat <tsweeney@redhat.com>
2021-03-21 17:25:35 -04:00
Ed Santiago 3baa9da4ed WIP: run buildah bud tests using podman
Set of scripts to run buildah's bud.bats test using
podman build in podman CI.

podman build is not 100% compatible with buildah bud.
In particular:

  * podman defaults to --layers=true; buildah to false
  * podman defaults to --force-rm=true; buildah to false
  * podman error exit status is 125; buildah is 2
  * differences in error messages, command-line arguments

Some of the above can be dealt with programmatically,
by tweaking the buildah helpers.bash (BATS helpers).
Some need to be tweaked by patching bud.bats itself.
This PR includes a patch that will, I fear, need to
be periodically maintained over time.

There will likely be failures when vendoring in a
new buildah, possibly because new tests were added
for new features that don't exist in podman, possibly
(I hope unlikely) if existing tests are changed in
ways that make the patch file fail to apply. I've
tried to write good instructions and to write the run
script in such a way that it will offer helpful hints
on failure. My instructions and code will be imperfect;
I hope they will be good enough to merit continued use
of this test (possibly with improvements to the instructions
as we learn more about real-world failures).

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-03-21 06:59:01 -06:00
Jakub Guzik 907b34c46f Fix containers list/prune http api filter behaviour
The problem described in #9711 and followed by #9758 affects
containers as well. When user provides wrong filter input, error
message should occur, not fallback to full list/prune command.
This change fixes the issue. Additionally, there are error message
fixes for docker http api compat.

Signed-off-by: Jakub Guzik <jakubmguzik@gmail.com>
2021-03-20 22:56:01 +01:00
Ed Santiago afce37671f System tests: reenable a bunch of skipped tests
Checking for 'skip.*[0-9]{4,5}', and checking status on said
issues, finds several that have been closed. Let's see if
they're really fixed.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-03-20 08:21:46 -06:00
Jordan Williams 1e255b6df9
Generate Kubernetes PersistentVolumeClaims from named volumes
Fixes #5788

This commit adds support for named volumes in podman-generate-kube.
Named volumes are output in the YAML as PersistentVolumeClaims.
To avoid naming conflicts, the volume name is suffixed with "-pvc".
This commit adds a corresponding suffix for host path mounts.
Host path volumes are suffixed with "-host".

Signed-off-by: Jordan Williams <jordan@jwillikers.com>
2021-03-19 13:52:35 -05:00
Jhon Honce 417f362811 Cleanup /libpod/images/load handler
* Remove orphaned code
* Add meaningful error from LoadImageFromSingleImageArchive() when
  heuristic fails to determine payload format
* Correct swagger to output correct types and headers

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2021-03-19 09:25:12 -07:00
Jakub Guzik aa2d6e6e6c Fix volumes and networks list/prune filters in http api
This is the continuation work started in #9711. It turns out
that list/prune commands for volumes in libpod/compat api have
very dangerous error handling when broken filter input is supplied.
Problem also affects network list/prune in libpod. This commit
unifies filter handling across libpod/compat api and adds sanity
apiv2 testcases.

Signed-off-by: Jakub Guzik <jakubmguzik@gmail.com>
2021-03-19 00:09:29 +01:00
OpenShift Merge Robot 629183bd7f
Merge pull request #9710 from jmguzik/network-prune-filters-http-api
Network prune filters for http api (compat and libpod)
2021-03-18 06:32:29 -07:00
Jakub Guzik 8ea02d0b60 network prune filters for http compat and libpod api
Signed-off-by: Jakub Guzik <jakubmguzik@gmail.com>
2021-03-18 00:01:50 +01:00
Giuseppe Scrivano 8da5fd8209
test: check for io.stat existence on cgroup v2
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-03-17 21:35:11 +01:00
Giuseppe Scrivano 592aae4f92
test: fix test for last crun/runc
there was a documentation issue for the kernel that reported the range
to be different than on cgroup v1.

The issue has been fixed in crun/runc.  Adapt the test.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-03-17 18:41:16 +01:00
Giuseppe Scrivano 1c873c7da8
test: simplify cgroup path
with cgroup v2, the cgroupns is enabled by default.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-03-17 16:39:40 +01:00
Daniel J Walsh af3499db5a
Latest crun/runc should handle blkio-weight test
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-03-17 16:39:39 +01:00
OpenShift Merge Robot 3d7a8cf2af
Merge pull request #9714 from rhatdan/build
Switch all builds to pull-never
2021-03-17 02:30:54 -07:00
OpenShift Merge Robot 604459b404
Merge pull request #9711 from jmguzik/volume-prune-fix-http-compat
Fix for volumes prune in http compat api when using filters
2021-03-16 11:32:32 +01:00
OpenShift Merge Robot 0f954e2371
Merge pull request #9695 from jmguzik/array-inspect-network-fix
Fix array instead of one elem network http api
2021-03-16 11:31:33 +01:00
OpenShift Merge Robot d9f84692c1
Merge pull request #9589 from troyready/add_compat_auth_endpoint
add /auth for docker compatibility
2021-03-16 11:26:32 +01:00
Daniel J Walsh 310eae4ba4
Switch all builds to pull-never
Fixes: https://github.com/containers/buildah/issues/2779

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-03-16 06:19:58 -04:00
Ed Santiago 963d19c759 System test cleanup
- cp test: clean up stray image

- build test: add workaround for #9567 (ultra-slow ubuntu).
  We're seeing CI flakes (timeouts) due to ubuntu 2004 being
  absurdly slow. Workaround: double our timeout on one specific
  test when ubuntu + remote.

- build test: clean up new copy-from test (from #9275).
  The test was copy-pasted from buildah system tests, without
  really adapting for podman environment (e.g. it was using
  images that we don't use here, and would cause pulls, which
  will cause flakes). Rewrite test so it references only $IMAGE,
  remove some confusing/unnecessary stuff, selectively run
  parts of it even when rootless or remote, and add a
  test to confirm that copy-from succeeded.

- load test: add error-message test to new load-invalid (#9672).
  Basically, make sure the command fails for the right reason.

- play test (kube): use $IMAGE, not alpine; and add pause-image
  cleanup to teardown()

- apiv2 mounts test: add a maintainability comment in a tricky
  section of code; and tighten up the mount point test.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-03-15 15:27:06 -06:00
Jakub Guzik f4b2d597a8 Fix for volumes prune in http compat api
Signed-off-by: Jakub Guzik <jakubmguzik@gmail.com>
2021-03-15 20:17:05 +01:00
Paul Holzinger 8de5607039 Fix remote client timezone test
The New York timezone changes between summer and winter time.
Make sure the test allows both timezones.

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-03-15 15:56:57 +01:00
troyready 955aaccc55
fix use with localhost (testing)
Signed-off-by: troyready <troy@troyready.com>
2021-03-12 10:48:03 -08:00
troyready 9251b6c8cf add /auth for docker compatibility
This endpoint just validates credentials:
https://github.com/moby/moby/blob/v20.10.4/api/swagger.yaml#L7936-L7977

Fixes: #9564
Signed-off-by: troyready <troy@troyready.com>
2021-03-12 10:39:15 -08:00
OpenShift Merge Robot 0d6673e16c
Merge pull request #9699 from jwhonce/wip/tests
Delete all containers and pods between tests
2021-03-12 11:36:30 -05:00
OpenShift Merge Robot 5b22ddd08e
Merge pull request #9697 from edsantiago/fedora_gating_test_hang
sdnotify tests: try real hard to kill socat processes
2021-03-12 13:34:27 +00:00
Ed Santiago 660a72993c sdnotify tests: try real hard to kill socat processes
podman gating tests are hanging in the new Fedora CI setup;
long and tedious investigation suggests that 'socat' processes
are being left unkilled, which then causes BATS to hang when
it (presumably) runs a final 'wait' in its end cleanup.

The two principal changes are to exec socat in a subshell
with fd3 closed, and to pkill its child processes before
killing the process itself. I don't know if both are needed.
The pkill definitely is; the exec may just be superstition.
Since I've wasted more than a day of PTO time on this, I'm
okay with a little superstition. What I do know is that with
these two changes, my reproducer fails to reproduce in over
one hour of trying (normally it fails within 5 minutes).

AND, update: only rawhide (f35) leaves stray socat processes
behind. f33 and ubuntu do not, so 'pkill -P' fails.

I really have no idea what's going on.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-03-11 16:21:51 -07:00
Jakub Guzik 7b0155cf78 Fix array instead of one elem network http api
Signed-off-by: Jakub Guzik <jakubmguzik@gmail.com>
2021-03-12 00:03:03 +01:00
Jhon Honce 92a8d69a70 Delete all containers and pods between tests
New tearDown() deletes all pods and containers between tests

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2021-03-11 14:24:57 -07:00
Daniel J Walsh 81737b3773
Merge pull request #9686 from edsantiago/apiv2_jsonify
apiv2 tests: finally fix POST as originally intended
2021-03-11 15:52:19 -05:00
OpenShift Merge Robot 2343161593
Merge pull request #9668 from rhatdan/man
Document CONTAINERS_CONF/CONTAINERS_STORAGE_CONF Env variables
2021-03-10 19:38:49 +01:00
OpenShift Merge Robot 786757fb01
Merge pull request #9681 from rhatdan/rm
Removing a non existing container API should return 404
2021-03-10 14:04:51 +01:00
Ed Santiago 258749e43d apiv2 tests: finally fix POST as originally intended
When I originally wrote this code I had no idea what POST
would look like so I did a sloppy job, deferring making it
usable. Now that we have some real-world examples in place,
I have a better understanding of what params look like and
how to make tests more readable/maintainable. (Deferring isn't
always bad: one of my early ideas was to separate params using
commas; that would've been a disaster because some JSON values,
such as arrays, include commas).

This commit implements a better way of dealing with POST:

  * The main concept is still 'key=value'
    * When value is a JSON object (dictionary, array), it
      can be quoted.
    * Multiple params are simply separated by spaces.
      The 3-digit HTTP code is a prominent, readable separator
      between POST params and expected results. The parsing
      code is a little uglier, but test developers need
      never see that. The important thing is that writing
      tests is now easier.
  * POST params can be empty (this removes the need for a
    useless '')

I snuck in one unrelated change: one of the newly-added
tests, .NetworkSettings, was failing when run rootless
(which is how I test on my setup). I made it conditional.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-03-10 05:24:44 -07:00
Daniel J Walsh c9ef260710
Document CONTAINERS_CONF/CONTAINERS_STORAGE_CONF Env variables
Also Switch to using CONTAINERS_REGISTRIES_CONF for registries.conf
overrides.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-03-10 06:34:47 -05:00
OpenShift Merge Robot d98b55f03b
Merge pull request #9669 from edsantiago/apiv2_registry
apiv2 tests: add helpers to start/stop a local registry
2021-03-10 10:10:48 +01:00
Daniel J Walsh f1eb8e8162
Removing a non existing container API should return 404
Currently we were overwrapping error returned from removal
of a non existing container.

$ podman rm bogus -f
Error: failed to evict container: "": failed to find container "bogus" in state: no container with name or ID bogus found: no such container

Removal of wraps gets us to.

./bin/podman rm bogus -f
Error: no container with name or ID "bogus" found: no such container

Finally also added quotes around container name to help make it standout
when you get an error, currently it gets lost in the error.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-03-10 04:08:29 -05:00
OpenShift Merge Robot 09473d4300
Merge pull request #9677 from vrothberg/fix-9672
podman load: fix error handling
2021-03-09 15:11:49 +01:00
Valentin Rothberg 930bec4d3a podman load: fix error handling
Make sure to properly return loading errors and to set the exit code
accordingly.

Fixes: #9672
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-03-09 11:53:50 +01:00
Valentin Rothberg 1f2f7e7459 podman cp: evaluate symlink correctly when copying from container
When copying from a container, make sure to evaluate the symlinks
correctly.  Add tests copying a symlinked directory from a running and
a non-running container to execute both path-resolution paths.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-03-09 10:45:15 +01:00
Valentin Rothberg 31b11b5cd6 podman cp: fix copying to a non-existent dir
Copy is full of perils.  Some of them are the nuances when copying
directories.  Who would have thought that
 * cp dir   foo
 * cp dir/  foo
 * cp dir/. foo
are all supposed to yield the same result when foo does not exist.

`podman cp` now supports all three notations, which required to massage
the front-end code in `cmd/podman` a bit.  The tests have been extended
and partially rewritten to test container->host and host->container
copy operations.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-03-09 09:02:14 +01:00
Valentin Rothberg a61d70cf8e podman cp: fix ownership
Make sure the files are chowned to the host/container user, depending on
where things are being copied to.

Fixes: #9626
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-03-09 09:02:14 +01:00
Valentin Rothberg 2abfef3809 podman cp: ignore EPERMs in rootless mode
Ignore permission errors when copying from a rootless container.
TTY devices inside rootless containers are owned by the host's
root user which is "nobody" inside the container's user namespace
rendering us unable to even read them.

Enable the integration test which was temporarily disabled for rootless
users.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-03-09 09:02:14 +01:00
Ed Santiago e33f523907 apiv2 tests: add helpers to start/stop a local registry
...and a rudimentary set of /auth tests for PR#9589 (disabled).

This simply adds a new start_registry() helper function that
allocates a random unused port, pulls a registry image, creates
a local certificate + random username + random password, and
fires everything up. Since none of this is (yet) used in CI,
this is very low risk.

The only infinitessimally-risky change is using a dedicated
subdirectory of $WORKDIR (instead of $WORKDIR itself) as
the podman root. This fixes a dumb oversight on my part:
the workdir has grown to be used for much more than just
podman root; this change removes clutter and makes it
easier for humans to debug in cases of problems.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-03-08 18:08:17 -07:00
OpenShift Merge Robot b6079bcf4a
Merge pull request #9592 from rhatdan/timestamp
Numerous buildah fixes found by Ed's testing of buildah tests against podman.
2021-03-08 10:07:54 -05:00
Daniel J Walsh 0e36e65eaa
Allow users to generate a kubernetes yaml off non running containers
Currently if you attempt to create a kube.yaml file off of a non running
container where the container runs as a specific User, the creation
fails because the storage container is not mounted. Podman is supposed to
read the /etc/passwd entry inside of the container but since the
container is not mounted, the c.State.Mountpoint == "".  Podman
incorrectly attempts to read /etc/passwd on the host, and fails if the
specified user is not in the hosts /etc/passwd.

This PR mounts the storage container, if it was not mounted so the read
succeeds.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-03-08 06:14:08 -05:00
OpenShift Merge Robot b7c00f2cc0
Merge pull request #9647 from mlegenovic/master
Compat API: Fix the response of 'push image' endpoint
2021-03-07 14:25:52 -05:00
Daniel J Walsh 9e75cafd5c
build-arg
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-03-07 08:08:32 -05:00
Daniel J Walsh 326f3eda31
Handle podman build --dns-search
Fixes: https://github.com/containers/podman/issues/9574

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-03-07 08:08:32 -05:00
Daniel J Walsh 2c500a8145
Add support for podman build --ignorefile
Fixes: https://github.com/containers/podman/issues/9570

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-03-07 06:42:02 -05:00
Milivoje Legenovic 9fc29f63e0 Correct compat images/{name}/push response
Signed-off-by: Milivoje Legenovic <m.legenovic@gmail.com>
2021-03-07 02:38:01 +01:00
OpenShift Merge Robot 2a7815726c
Merge pull request #9599 from rhatdan/selinux
Add tests for selinux kvm/init labels
2021-03-05 14:49:25 -05:00
Daniel J Walsh d107c37296
podman-remote stop -time 0 does not work
This patch will allow users to pass in the time 0.
Currently the timeout will take 10 seconds if user passes
in the 0 flag.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-03-05 10:39:17 -05:00
OpenShift Merge Robot 0bac30d724
Merge pull request #9622 from jmguzik/network-rm-fix
Fix podman network rm (-f) workflow
2021-03-05 09:50:03 -05:00
Jakub Guzik 2bcc95257f Fix for podman network rm (-f) workflow
Signed-off-by: Jakub Guzik <jakubmguzik@gmail.com>
2021-03-05 13:16:37 +01:00
OpenShift Merge Robot 05080a12a9
Merge pull request #9593 from vrothberg/cp-tmp
podman cp: support copying on tmpfs mounts
2021-03-05 03:57:17 -05:00
Daniel J Walsh 793c52dd56
Add tests for selinux kvm/init labels
spc_t tests should be able to run rootless as well.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-03-04 17:01:04 -05:00
OpenShift Merge Robot 4e5cc6a3a6
Merge pull request #9607 from mheon/fix_9523
Respect NanoCpus in Compat Create
2021-03-04 15:18:53 -05:00
OpenShift Merge Robot a26b15265e
Merge pull request #9598 from rhatdan/kvm
Check for supportsKVM based on basename of the runtime
2021-03-04 14:54:53 -05:00
OpenShift Merge Robot e65bcc166c
Merge pull request #9604 from mheon/fix_9510
Compat API: create volume source dirs on the host
2021-03-04 13:46:56 -05:00
Matthew Heon 8453424e2c Respect NanoCpus in Compat Create
The NanoCpus field in HostConfig was not wired up. It conflicts
with CPU period and quota (it hard-codes period to a specific
value and then sets the user-specified value as Quota).

Fixes #9523

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2021-03-04 12:32:09 -05:00
OpenShift Merge Robot 7a92de4bac
Merge pull request #9550 from baude/issue9517
Support label type dict on compat build
2021-03-04 11:09:25 -05:00
OpenShift Merge Robot 87a78c059d
Merge pull request #9601 from jwhonce/issues/9207
Use version package to track all versions
2021-03-04 09:46:24 -05:00
Valentin Rothberg a090301bbb podman cp: support copying on tmpfs mounts
Traditionally, the path resolution for containers has been resolved on
the *host*; relative to the container's mount point or relative to
specified bind mounts or volumes.

While this works nicely for non-running containers, it poses a problem
for running ones.  In that case, certain kinds of mounts (e.g., tmpfs)
will not resolve correctly.  A tmpfs is held in memory and hence cannot
be resolved relatively to the container's mount point.  A copy operation
will succeed but the data will not show up inside the container.

To support these kinds of mounts, we need to join the *running*
container's mount namespace (and PID namespace) when copying.

Note that this change implies moving the copy and stat logic into
`libpod` since we need to keep the container locked to avoid race
conditions.  The immediate benefit is that all logic is now inside
`libpod`; the code isn't scattered anymore.

Further note that Docker does not support copying to tmpfs mounts.

Tests have been extended to cover *both* path resolutions for running
and created containers.  New tests have been added to exercise the
tmpfs-mount case.

For the record: Some tests could be improved by using `start -a` instead
of a start-exec sequence.  Unfortunately, `start -a` is flaky in the CI
which forced me to use the more expensive start-exec option.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-03-04 15:43:12 +01:00
Paul Holzinger aa0a57f095 Fix cni teardown errors
Make sure to pass the cni interface descriptions to cni teardowns.
Otherwise cni cannot find the correct cache files because the
interface name might not match the networks. This can only happen
when network disconnect was used.

Fixes #9602

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-03-04 11:43:59 +01:00
Jhon Honce f86d641308 Use version package to track all versions
* Server, bindings, and CLI all now pull version information from version
package.
* Current /libpod API version slaved to podman/libpod Version
* Bindings validate against libpod API Minimal version
* Remove pkg/bindings/bindings.go and updated tests

Fixes: #9207

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2021-03-03 17:03:19 -07:00
Daniel J Walsh 252aec1c9a
Check for supportsKVM based on basename of the runtime
Fixes: https://github.com/containers/podman/issues/9582

This PR also adds tests to make sure SELinux labels match the runtime,
or if init is specified works with the correct label.

Add tests for selinux kvm/init labels

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-03-03 16:49:51 -05:00
Matthew Heon 53d22c779c Compat API: create volume source dirs on the host
It took a lot to figure out exactly how this should work, but I
think I finally have it. My initial versions of this created the
directory with the same owner as the user the container was run
with, which was rather complicated - but after review against
Docker, I have determined that is incorrect, and it's always made
as root:root 0755 (Ubuntu's Docker, which I was using to try and
test, is a snap - and as such it was sandboxed, and not actually
placing directories it made in a place I could find?). This makes
things much easier, since I just need to parse out source
directories for binds and ensure they exist.

Fixes #9510

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2021-03-03 16:22:31 -05:00
OpenShift Merge Robot 87e20560ac
Merge pull request #9536 from jmguzik/enable-cgroupsv2-sec-opts
Enable cgroupsv2 rw mount via security-opt unmask
2021-03-03 12:28:54 -05:00
OpenShift Merge Robot 8a1955f419
Merge pull request #9581 from baude/issue9529
Add network summary to compat ps
2021-03-03 11:13:22 -05:00
OpenShift Merge Robot 259bb5f723
Merge pull request #9583 from ashley-cui/sec
Add version field to secret compat list/inspect api
2021-03-03 09:17:21 -05:00
baude 8f2192922d Add network summary to compat ps
The compatibility endpoint for listing containers should have the
summarized network configuration with it.

Fixes: #9529

Signed-off-by: baude <bbaude@redhat.com>
2021-03-03 08:16:58 -06:00
OpenShift Merge Robot 5fd8a84949
Merge pull request #9575 from mheon/rewrite_rename
Rewrite Rename backend in a more atomic fashion
2021-03-03 09:16:19 -05:00
Daniel J Walsh aed632cb8c
Merge pull request #9580 from rhatdan/timestamp
Fix support for podman build --timestamp
2021-03-03 05:08:13 -05:00
Ashley Cui 9391bfc520 Add version field to secret compat list/inspect api
Docker api expects secrets endpoint to have a version field. So, the
version field is added into the compat endpoint only. The version field
is always 1, since Docker uses the version to keep track of updates to
the secret, and currently we cannot update a secret.

Signed-off-by: Ashley Cui <acui@redhat.com>
2021-03-02 16:55:21 -05:00
OpenShift Merge Robot 0a40c5a059
Merge pull request #9477 from ashley-cui/journald
Tidy duplicate log tests
2021-03-02 13:39:59 -08:00
OpenShift Merge Robot b9181cf1ef
Merge pull request #9512 from mheon/fix_9511
Fix parsing of Tmpfs field in compat create
2021-03-02 12:58:59 -08:00
Ashley Cui b19791c0b6 Tidy duplicate log tests
Some log tests were duplicated, and some didn't need to be repeated for
every driver. Also, added some comments

Signed-off-by: Ashley Cui <acui@redhat.com>
2021-03-02 14:28:16 -05:00
Daniel J Walsh 5df6251402
Fix support for podman build --timestamp
Currently podman is ignoreing the build --timestamp flag.
This PR fixes this for local and remote clients.

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-03-02 14:25:29 -05:00
Matthew Heon 43e899c2ec Rewrite Rename backend in a more atomic fashion
Move the core of renaming logic into the DB. This guarantees a
lot more atomicity than we have right now (our current solution,
removing the container from the DB and re-creating it, is *VERY*
not atomic and prone to leaving a corrupted state behind if
things go wrong. Moving things into the DB allows us to remove
most, but not all, of this - there's still a potential scenario
where the c/storage rename fails but the Podman rename succeeds,
and we end up with a mismatched state.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2021-03-02 13:30:28 -05:00
baude 2c8c5393a4 Support label type dict on compat build
The compatibility endpoint for build labels should be of type dict (not
list).  For backwards compatibility, we support both.

Fixes: #9517

Signed-off-by: baude <bbaude@redhat.com>
2021-03-02 10:56:28 -06:00
Milivoje Legenovic 8b7caa6d04 Compat api containers/json Ports field is null
Fixes #9553

Signed-off-by: Milivoje Legenovic <m.legenovic@gmail.com>
2021-03-02 02:50:41 +01:00
Jhon Honce 7927fe01f1 Refactor python tests to run against python3.9
* Introduce sub-package compat to meet packaging and import requirements
* Update documenation for running tests
* Add requirements.txt to improve IDE support

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2021-03-01 13:15:59 -07:00
Ed Santiago 9435e5b79b APIv2 tests: make more maintainable
While I wasn't looking, some completely unreadable cruft
crept in here, and it's totally my fault: I never knew
you could pass JSON to a GET query. Everyone who DID
know that, did so, but had to URL-escape it into a
completely gobbledygook mess to make curl happy.

Solution: trivial, do the URL-escaping in 't' itself. I
just never realized that was needed.

I'm so sorry. I hope this helps.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-03-01 10:47:48 -07:00
OpenShift Merge Robot b5827d80d3
Merge pull request #9531 from Luap99/fix-9526
compat api network ls accept both format options
2021-03-01 16:28:51 +01:00
OpenShift Merge Robot b154c519ac
Merge pull request #9509 from mlegenovic/master
Correct compat images/create?fromImage response
2021-03-01 08:27:47 +01:00
OpenShift Merge Robot 3417703a06
Merge pull request #9527 from rhatdan/hosts
Enable no_hosts from containers.conf
2021-03-01 08:12:48 +01:00
Jakub Guzik d9cb135b64 Enable cgroupsv2 rw mount via security-opt unmask
Signed-off-by: Jakub Guzik <jakubmguzik@gmail.com>
2021-02-28 15:59:43 +01:00
Paul Holzinger f54ed7269a compat api network ls accept both format options
Docker allows both the old `map[string]map[string]bool`
and the newer `map[string][]string` for the filter param
so we should too.

Fixes #9526

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-02-26 19:42:34 +01:00
OpenShift Merge Robot 397aae32b9
Merge pull request #8749 from edsantiago/upgrade_test
podman upgrade tests
2021-02-26 13:19:25 +01:00
Daniel J Walsh 680dacaea2
Enable no_hosts from containers.conf
Since we have no good way to enable this on the server side, we will
just allow it to be set on the client side. This should solve almost all
cases.

Partially fixes: https://github.com/containers/podman/issues/9500

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-02-26 06:37:48 -05:00
Milivoje Legenovic fcce1da1bb Correct compat images/create?fromImage response
Signed-off-by: Milivoje Legenovic <m.legenovic@gmail.com>
2021-02-26 03:08:10 +01:00
OpenShift Merge Robot bde1d3f281
Merge pull request #9491 from edsantiago/testimage_multiarch
system test image: build it multiarch
2021-02-25 21:22:58 +01:00
Matthew Heon 43d010bd0f Fix parsing of Tmpfs field in compat create
Create is not formatted as `key=value` but rather `key:value`
(technically `path:option1,option2`). As such we can't use the
stringMapToArray function, and instead need to generate it
manually.

Fixes #9511

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2021-02-25 13:09:29 -05:00
OpenShift Merge Robot 9ec8106841
Merge pull request #9487 from giuseppe/split-test-named-hierarchies
test: ignore named hierarchies for cgroups=split
2021-02-25 13:36:53 +01:00
Ed Santiago bee21f1e42 system test image: build it multiarch
buildah now supports running under emulation[1] as well as
creating manifests. Use those features to create a multiarch
testimage that can be used to test podman on other arches.

 [1] on Fedora 33, this requires the qemu-user-static package

We also build a new :00000001 image, replacing :00000000,
because (sigh) some tests try to run 'true' in the container.
Include instructions on building said image.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-02-24 15:09:58 -07:00
Parker Van Roy ef549235eb Updated based on Jhonce comments
Added ID to default
removed outdated imports
slight refactor
Test Network Headers added to network_test.go

Signed-off-by: Parker Van Roy <pvanroy@redhat.com>
2021-02-24 14:52:19 -05:00
OpenShift Merge Robot dec06b1c3f
Merge pull request #9494 from mheon/sort_caps
Sort CapDrop in inspect to guarantee order
2021-02-24 09:27:24 -05:00
Paul Holzinger 90050671b7 Add dns search domains from cni response to resolv.conf
This fixes slow local host name lookups.
see containers/dnsname#57

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-02-24 10:41:56 +01:00
Paul Holzinger f152f9cf09 Network connect error if net mode is not bridge
Only the the network mode bridge supports cni networks.
Other network modes cannot use network connect/disconnect
so we should throw a error.

Fixes #9496

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-02-23 22:30:04 +01:00
OpenShift Merge Robot ca0af71bef
Merge pull request #9485 from vrothberg/fix-9479
container removal: handle already removed containers
2021-02-23 14:53:26 -05:00
Matthew Heon fc32ec768d Sort CapDrop in inspect to guarantee order
The order of CapAdd when inspecting containers is deterministic.
However, the order of CapDrop is not (for unclear reasons). Add a
quick sort on the final array to guarantee a consistent order.

Fixes #9490

Signed-off-by: Matthew Heon <mheon@redhat.com>
2021-02-23 14:05:18 -05:00
Ed Santiago 79eaadd3fb podman upgrade tests
Initial validation of using podman-in-podman to create an
old-podman root, then use new-podman to play with the
containers created therein.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-02-23 06:58:54 -07:00
Giuseppe Scrivano 3947feb4b0
test: ignore named hierarchies for cgroups=split
ignore named hierarchies for the --cgroups=split test as crun does not
set it.

Closes: https://github.com/containers/podman/pull/9302#issuecomment-784157272

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-02-23 14:09:17 +01:00
Valentin Rothberg e5ac28f3b9 container removal: handle already removed containers
Since commit d54478d8ea, a container's lock is released before
attempting to stop it via the OCI runtime.  This opened the window
for various kinds of race conditions.  One of them led to #9479 where
the removal+cleanup sequences of a `run --rm` session overlapped with
`rm -af`.  Make both execution paths more robust by handling the case of
an already removed container.

Fixes: #9479
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-02-23 13:02:35 +01:00
Eduardo Vega 874f2327e6 Add U volume flag to chown source volumes
Signed-off-by: Eduardo Vega <edvegavalerio@gmail.com>
2021-02-22 22:55:19 -06:00
OpenShift Merge Robot d999328920
Merge pull request #9455 from Luap99/fix-network-ids
Fix podman network IDs handling
2021-02-22 16:56:43 -05:00
OpenShift Merge Robot e64669cb96
Merge pull request #9469 from vrothberg/cp-stdout
podman cp: /dev/std{in,out} fixes
2021-02-22 15:44:40 -05:00
OpenShift Merge Robot a6e7d19c46
Merge pull request #9445 from jmguzik/no-header-info-for-systemd-generation
No header info for systemd generation
2021-02-22 13:44:43 -05:00
Valentin Rothberg f3a8e3324f podman cp: test /dev/stdin correctly
/dev/stdin should not be treated as "-" to remain compatible with Docker
and to have a more consistent and idiomatic interface.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-02-22 16:45:31 +01:00
Valentin Rothberg 8577be72e8 podman cp: treat /dev/stdout correctly
/dev/stdout should not be treated as "-" to remain compatible with
Docker and to have a more consistent and idiomatic interface.

Fixes: #9362
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-02-22 16:45:30 +01:00
Paul Holzinger 9d818be732 Fix podman network IDs handling
The libpod network logic knows about networks IDs but OCICNI
does not. We cannot pass the network ID to OCICNI. Instead we
need to make sure we only use network names internally. This
is also important for libpod since we also only store the
network names in the state. If we would add a ID there the
same networks could accidentally be added twice.

Fixes #9451

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-02-22 15:51:49 +01:00
OpenShift Merge Robot 6fbf73ed8b
Merge pull request #9420 from rhatdan/kube
[NO TESTS NEEDED] Allow podman play kube to read yaml file from stdin
2021-02-22 09:08:33 -05:00
Jakub Guzik d2f3098c6f --no-header flag implementation for generate systemd
Signed-off-by: Jakub Guzik <jakubmguzik@gmail.com>
2021-02-22 14:48:33 +01:00
OpenShift Merge Robot 10d52c05e2
Merge pull request #9275 from rhatdan/build
Add missing params for podman-remote build
2021-02-22 06:29:32 -05:00
OpenShift Merge Robot d92b94677c
Merge pull request #9448 from vrothberg/bump-module-version
bump go module to v3
2021-02-22 05:51:31 -05:00
Jakub Guzik c236aebb9b Two variations of --new flag added to e2e
Signed-off-by: Jakub Guzik <jakubmguzik@gmail.com>
2021-02-22 09:53:42 +01:00
Valentin Rothberg 5dded6fae7 bump go module to v3
We missed bumping the go module, so let's do it now :)

* Automated go code with github.com/sirkon/go-imports-rename
* Manually via `vgrep podman/v2` the rest

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-02-22 09:03:51 +01:00
OpenShift Merge Robot 7b52654649
Merge pull request #9417 from ashley-cui/journald
Fix journald logs
2021-02-21 05:03:46 -05:00
Daniel J Walsh 05eb06f568 Turn on journald and k8s file logging tests
Signed-off-by: Ashley Cui <acui@redhat.com>
2021-02-19 16:11:41 -05:00
Daniel J Walsh f06dd45e0c
Allow podman play kube to read yaml file from stdin
Fixes: https://github.com/containers/podman/issues/8996

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-02-19 12:53:25 -05:00
OpenShift Merge Robot b6db60e58f
Merge pull request #9430 from baude/issue9429
Fix segfault in run with memory-swap
2021-02-19 10:59:22 -05:00
baude d6b0b54121 Fix segfault in run with memory-swap
when unlimited (-1) was being passed to memory-swap, podman threw a
segfault.

Fixes #9429

Signed-off-by: baude <bbaude@redhat.com>
2021-02-19 07:56:14 -06:00
OpenShift Merge Robot 6a9257a292
Merge pull request #9428 from vrothberg/cp-content-fix
cp: treat "." and "/." correctly
2021-02-19 06:09:22 -05:00
Valentin Rothberg 71689052a1 cp: treat "." and "/." correctly
Make sure to treat "." and "/." correctly.  Both cases imply to copy the
contents of a directory in contrast to the directory.  This implies to
unset the KeepDirectoryNames options of the copiah package.

Previously, the code was performing a simple string suffix check which
is not enough since it would match files and directories ending with
".".

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-02-18 18:23:23 +01:00
OpenShift Merge Robot b2bb05d598
Merge pull request #9414 from edigaryev/fix-wait-api-condition
API: fix libpod's container wait endpoint condition conversion
2021-02-18 11:13:31 -05:00
Nikolay Edigaryev 3e168b19f2 Quote URL
Signed-off-by: Nikolay Edigaryev <edigaryev@gmail.com>
2021-02-18 01:40:41 +03:00
Nikolay Edigaryev 9699e81a06 API: fix libpod's container wait endpoint condition conversion
Signed-off-by: Nikolay Edigaryev <edigaryev@gmail.com>
2021-02-18 00:34:23 +03:00
Matthew Heon a9d548bf77 Change source path resolution for volume copy-up
Instead of using the container's mountpoint as the base of the
chroot and indexing from there by the volume directory, instead
use the full path of what we want to copy as the base of the
chroot and copy everything in it. This resolves the bug, ends up
being a bit simpler code-wise (no string concatenation, as we
already have the full path calculated for other checks), and
seems more understandable than trying to resolve things on the
destination side of the copy-up.

Fixes #9354

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2021-02-17 14:57:06 -05:00
OpenShift Merge Robot d48f4a0e1f
Merge pull request #9383 from mheon/fix_copyup_empty
Fix an issue where copyup could fail with ENOENT
2021-02-17 13:18:33 -05:00
OpenShift Merge Robot 516dc6d1ff
Merge pull request #9409 from rhatdan/size
podman ps --format '{{ .Size }}' requires --size option
2021-02-17 11:10:33 -05:00
Daniel J Walsh e2d5a1d051
podman ps --format '{{ .Size }}' requires --size option
Podman -s crashes when the user specifies the '{{ .Size }}` format
on the podman ps command, without specifying the --size option.

This PR will stop the crash and print out a logrus.Error stating that
the caller should add the --size option.

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-02-17 07:55:12 -05:00
Daniel J Walsh 12a577aea5
Ignore entrypoint=[\"\"]
We recieved an issue with an image that was built with
entrypoint=[""]
This blows up on Podman, but works on Docker.

When we setup the OCI Runtime, we should drop
entrypoint if it is == [""]

https://github.com/containers/podman/issues/9377

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-02-17 07:00:53 -05:00
OpenShift Merge Robot 50042120e9
Merge pull request #9240 from rhatdan/reset
Do not reset storage when running inside of a container
2021-02-16 17:11:26 -05:00
OpenShift Merge Robot fb6f143946
Merge pull request #9401 from rhatdan/stop
podman kill should report rawInput not container id
2021-02-16 16:08:26 -05:00
Daniel J Walsh 5d1ec2960d
Do not reset storage when running inside of a container
Currently if the host shares container storage with a container
running podman, the podman inside of the container resets the
storage on the host. This can cause issues on the host, as
well as causes the podman command running the container, to
fail to unmount /dev/shm.

podman run -ti --rm --privileged -v /var/lib/containers:/var/lib/containers quay.io/podman/stable podman run alpine echo hello
	* unlinkat /var/lib/containers/storage/overlay-containers/a7f3c9deb0656f8de1d107e7ddff2d3c3c279c11c1635f233a0bffb16051fb2c/userdata/shm: device or resource busy
	* unlinkat /var/lib/containers/storage/overlay-containers/a7f3c9deb0656f8de1d107e7ddff2d3c3c279c11c1635f233a0bffb16051fb2c/userdata/shm: device or resource busy

Since podman is volume mounting in the graphroot, it will add a flag to
/run/.containerenv to tell podman inside of container whether to reset storage or not.

Since the inner podman is running inside of the container, no reason to assume this is a fresh reboot, so if "container" environment variable is set then skip
reset of storage.

Also added tests to make sure /run/.containerenv is runnig correctly.

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-02-16 14:18:53 -05:00
OpenShift Merge Robot 7fb347a3d4
Merge pull request #9399 from vrothberg/home-sweet-home
do not set empty $HOME
2021-02-16 11:39:27 -05:00
Daniel J Walsh 958f901431
podman kill should report rawInput not container id
Docker always reports back the users input, not the full
id, we should do the same.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-02-16 09:47:38 -05:00
OpenShift Merge Robot 58a4793bec
Merge pull request #9396 from rhatdan/stop
When stopping a container, print rawInput
2021-02-16 09:46:28 -05:00
OpenShift Merge Robot aadb16da38
Merge pull request #9380 from baude/podinfra
Fix panic in pod creation
2021-02-16 09:25:28 -05:00
OpenShift Merge Robot 3eb2ce34dc
Merge pull request #9397 from vrothberg/fix-9232
images/create: always pull image
2021-02-16 09:22:27 -05:00
Matthew Heon 759fc93343 Fix an issue where copyup could fail with ENOENT
This one is rather bizarre because it triggers only on some
systems. I've included a CI test, for example, but I'm 99% sure
we use images in CI that have volumes over empty directories, and
the earlier patch to change copy-up implementation passed CI
without complaint.

I can reproduce this on a stock F33 VM, but that's the only place
I have been able to see it.

Regardless, the issue: under certain as-yet-unidentified
environmental conditions, the copier.Get method will return an
ENOENT attempting to stream a directory that is empty. Work
around this by avoiding the copy altogether in this case.

Signed-off-by: Matthew Heon <mheon@redhat.com>
2021-02-16 09:21:49 -05:00
OpenShift Merge Robot 6639b218a2
Merge pull request #9368 from vrothberg/fix-9365
podman build: pass runtime to buildah
2021-02-16 08:53:27 -05:00
OpenShift Merge Robot 0a6b76eba1
Merge pull request #9372 from matejvasek/fix_host_port
Docker [APIv2] create container: handle empty host port
2021-02-16 08:44:27 -05:00
Valentin Rothberg 2ec0e3b650 do not set empty $HOME
Make sure to not set an empty $HOME for containers and let it default to
"/".

https://github.com/containers/crun/pull/599 is required to fully
address #9378.

Partially-Fixes: #9378
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-02-16 14:21:45 +01:00
Valentin Rothberg 2a21ecafa7 images/create: always pull image
The `images/create` endpoint should always attempt to pull a newer
image.  Previously, the local images was used which is not compatible
with Docker and caused issues in the Gitlab CI.

Fixes: #9232
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-02-16 13:32:31 +01:00
baude f2f18768a8 Fix panic in pod creation
when creating a pod with --infra-image and using a untagged image for
the infra-image (none/none), the lookup for the image's name was
creating a panic.

Fixes: #9374

Signed-off-by: baude <bbaude@redhat.com>
2021-02-16 06:29:49 -06:00
Valentin Rothberg 2845f7b832 podman build: pass runtime to buildah
Make sure that Podman's default OCI runtime is passed to Buildah in
`podman build`.  In theory, Podman and Buildah should use the same
defaults but the projects move at different speeds and it turns out
we caused a regression in v3.0.

Fixes: #9365
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-02-16 13:01:56 +01:00
Daniel J Walsh 690c02f602
Add missing params for podman-remote build
Fixes: https://github.com/containers/podman/issues/9290

Currently we still have hard coded --isolation=chroot for podman-remote build.

Implement missing arguments for podman build

Implements
--jobs, --disable-compression, --excludes

Fixes:
MaxPullPushRetries
RetryDuration

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-02-16 06:48:35 -05:00
Daniel J Walsh 4a9bd7a18f
When stopping a container, print rawInput
When we stop a container we are printing the full id,
this does not match Docker behaviour or the start behavior.
We should be printing the users rawInput when we successfully
stop the container.

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-02-16 06:26:51 -05:00
Matej Vasek 714acf3267 fix create container: handle empty host port
Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-02-16 12:24:44 +01:00
Daniel J Walsh 3d50393f09
Don't chown workdir if it already exists
Currently podman is always chowning the WORKDIR to root:root
This PR will return if the WORKDIR already exists.

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-02-16 04:52:02 -05:00
baude 227c548130 fix dns resolution on ubuntu
ubuntu's dns seems a little odd and requires a fq name in its tests.

Signed-off-by: baude <bbaude@redhat.com>
2021-02-15 16:12:11 -06:00
Valentin Rothberg 0ab5bfd313 e2e: fix network alias test
The logic in the e2e test for multiple network aliases is indicating the
test should wait for the containerized nginx to be ready.  As this may
take some time, the test does an exponential backoff starting at 2050ms.

Fix the logic by removing the `Expect(...)` call during the exponential
backoff.  Otherwise, the test errors immediately.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-02-15 15:07:25 +01:00
Valentin Rothberg 704fa8b55e fix failing image e2e test
The timestamps of some images must have changed changing the number of
expected filtered images.  The test conditions seem fragile but for now
it's more important to get CI back.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-02-15 13:02:14 +01:00
OpenShift Merge Robot 64255f5fb8
Merge pull request #9311 from deadNightTiger/fix-pull-dockerjava
apiv2: handle docker-java clients pulling
2021-02-12 12:52:58 -05:00
OpenShift Merge Robot 1b284a298c
Merge pull request #9302 from giuseppe/cgroup-split-v1
utils: takes the longest path on cgroup v1
2021-02-11 17:46:37 -05:00
Giuseppe Scrivano 660a06f2f7
utils: takes the longest path on cgroup v1
now getCgroupProcess takes the longest path on cgroup v1, instead of
complaining if the paths are different.

This should help when --cgroups=split is used on cgroup v1 and the
process cgroups look like:

$ cat /proc/self/cgroup
11:pids:/user.slice/user-0.slice/session-4.scope
10:blkio:/
9:cpuset:/
8:devices:/user.slice
7:freezer:/
6:memory:/user.slice/user-0.slice/session-4.scope
5:net_cls,net_prio:/
4:hugetlb:/
3:cpu,cpuacct:/
2:perf_event:/

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-02-11 16:46:42 +01:00
baude 5f999b6bcd container ps json format miscue
when printing out json format, we mistakenly changed the Created field
output to be a time.time in a different commit.  This allows for
override of the Created field to be a unix ts as type int64.

Fixes: #9315

Signed-off-by: baude <bbaude@redhat.com>
2021-02-11 09:38:54 -06:00
OpenShift Merge Robot afe4ce6b1c
Merge pull request #9312 from baude/issue9310
Correct compat network prune response
2021-02-11 05:38:35 -05:00
OpenShift Merge Robot ca354f13f2
Merge pull request #9308 from mheon/fix_6003
Rewrite copy-up to use buildah Copier
2021-02-11 05:23:34 -05:00
baude f28b08fe96 Correct compat network prune response
Correcting the structure of the compat network prune response.  They
should follow {"NetworksDeleted": [<network_name>",...]}

Fixes: #9310

Signed-off-by: baude <bbaude@redhat.com>
2021-02-10 15:48:14 -06:00
baude 5ccb1596b4 Display correct value for unlimited ulimit
When doing a container inspect on a container with unlimited ulimits,
the value should be -1.  But because the OCI spec requires the ulimit
value to be uint64, we were displaying the inspect values as a uint64 as
well.  Simple change to display as an int64.

Fixes: #9303

Signed-off-by: baude <bbaude@redhat.com>
2021-02-10 14:17:58 -06:00
Igor Korolev fdf39e1699 apiv2: handle docker-java clients pulling
When docker-java calls images/create?fromImage=x, it expects two things
for a successful response: that both "error" and "errorDetail" are not
set, and that the "progress" message contains one of five hard-coded
strings ("Download complete" being one of them).

Signed-off-by: Igor Korolev <missterr@gmail.com>
2021-02-11 00:10:21 +04:00
Matthew Heon ea910fc535 Rewrite copy-up to use buildah Copier
The old copy-up implementation was very unhappy with symlinks,
which could cause containers to fail to start for unclear reasons
when a directory we wanted to copy-up contained one. Rewrite to
use the Buildah Copier, which is more recent and should be both
safer and less likely to blow up over links.

At the same time, fix a deadlock in copy-up for volumes requiring
mounting - the Mountpoint() function tried to take the
already-acquired volume lock.

Fixes #6003

Signed-off-by: Matthew Heon <mheon@redhat.com>
2021-02-10 14:21:37 -05:00
OpenShift Merge Robot 832639ca6d
Merge pull request #9299 from Luap99/secret-shell-completion-test
Add shell completion tests for secrets
2021-02-10 10:30:39 -05:00
OpenShift Merge Robot b4ca924365
Merge pull request #9297 from matejvasek/apiv2_push_get_digest
Docker [APIv2] push sends digest in response body
2021-02-10 08:52:36 -05:00
Paul Holzinger 1cc387bf78 Add shell completion tests for secrets
Add the SECRET keyword to the shell completion test. Also update the
use line for podman secret create to use `NAME` instead of `SECRET`.
This matches the other commands such as network/volume create.

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-02-10 10:41:51 +01:00
OpenShift Merge Robot 055e2dda3a
Merge pull request #9295 from Luap99/fix-9293
Fix compat networks endpoint for a empty result
2021-02-10 01:45:31 -05:00
Matej Vasek f4ece018b4 Docker APIv2 push sends digest in response body
Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-02-10 02:03:28 +01:00
OpenShift Merge Robot 2d829aeb1f
Merge pull request #9284 from rhatdan/annotations
Support annotations from containers.conf
2021-02-09 18:40:36 -05:00
Paul Holzinger f2a8562031 Fix compat networks endpoint for a empty result
The networks list compat api endpoint must return `[]`
and not `null` if no networks are found.

Fixes #9293

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-02-09 23:03:48 +01:00
OpenShift Merge Robot cd8a061214
Merge pull request #9289 from edsantiago/apiv2_test_fixes
apiv2 test fixes
2021-02-09 14:40:13 -05:00
OpenShift Merge Robot a8c7aedc74
Merge pull request #9270 from matejvasek/fix_apiv2_push
Fix Docker APIv2 push endpoint
2021-02-09 14:30:12 -05:00
OpenShift Merge Robot 995a60481a
Merge pull request #9283 from vrothberg/fix-8897
generate kube: do not set caps with --privileged
2021-02-09 14:23:15 -05:00
Daniel J Walsh 46385dd609
Restart service when CONTAINERS_CONF changes
Service needs to be restarted in order to read the CONTAINERS_CONF file.
Not resetting this can lead to lots of flakes, since the test will use
whatever the host system has to be set in it's containers.conf.

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-02-09 13:18:18 -05:00
Daniel J Walsh cc846a8cd9
Support annotations from containers.conf
Currently podman does not use the annotations specified in the
containers.conf. This PR fixes this.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-02-09 13:18:18 -05:00
Ed Santiago ea704da726 APIv2 tests: lots of cleanup
It's been a while since I last looked at these; some cruft
has crept in, generating noise and hence unreadable test
results. Clean it up:

 * remove pushd/popd in one subtest, replace with 'tar -C'.
   (Also remove confusing quotation marks). This removes
   spurious directory names from output.

 * in like(), show only first line of actual output.
   Some commands ('tree', 'generate kube') produce
   voluminous multi-line output, which is super useless
   and distracting when reading a test run.

 * Recognize that some queries will not generate output,
   e.g. HEAD requests and some POSTs. Deal with that.
   This fixes "curl.result.out: no such file" and "parse
   error" warnings.

 * In cleanup, 'podman rm -a' and 'rmi -af'; this gets
   rid of errors when deleting $WORKDIR. (EBUSY error
   when root, EPERM when rootless).

And, the original reason for poking in here: refactor the
wait-for-port part of start_server() into its own helper
function, so we can use it when starting a local registry
in 12-imagesMore. (Ref: #9270)

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-02-09 10:43:54 -07:00
Matej Vasek 721a1e104e Fix Docker APIv2 push endpoint
Docker doesn't have the destination parameter as libpod does,
the "image name" path parameter is supposed to be the destination.

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-02-09 18:20:15 +01:00
OpenShift Merge Robot f98605e0e4
Merge pull request #9125 from ashley-cui/secretswiring
Implement Secrets
2021-02-09 17:51:08 +01:00
Valentin Rothberg 48c612cf66 generate kube: support --privileged
Do not play with capabilities for privileged containers where all
capabilities will be set implicitly.

Also, avoid the device check when running privileged since all of /dev/*
will be mounted in any case.

Fixes: #8897
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-02-09 17:40:35 +01:00
Ashley Cui 832a69b0be Implement Secrets
Implement podman secret create, inspect, ls, rm
Implement podman run/create --secret
Secrets are blobs of data that are sensitive.
Currently, the only secret driver supported is filedriver, which means creating a secret stores it in base64 unencrypted in a file.
After creating a secret, a user can use the --secret flag to expose the secret inside the container at /run/secrets/[secretname]
This secret will not be commited to an image on a podman commit

Signed-off-by: Ashley Cui <acui@redhat.com>
2021-02-09 09:13:21 -05:00
Daniel J Walsh 45981ba29a
Bump containers/buildah to v1.19.4
Fix handling of --iidfile to happen on the client side.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-02-08 16:02:20 -05:00
OpenShift Merge Robot 19507d0ffe
Merge pull request #9246 from rhatdan/build
Implement missing arguments for podman build
2021-02-08 14:18:31 -05:00
OpenShift Merge Robot 2bf13219f5
Merge pull request #9266 from vrothberg/fix-6510
make `podman rmi` more robust
2021-02-08 11:35:15 -05:00
OpenShift Merge Robot c32913d0a3
Merge pull request #9236 from baude/networkprune
add network prune
2021-02-08 09:50:50 -05:00
Valentin Rothberg feecdf919f make `podman rmi` more robust
The c/storage library is subject to TOCTOUs as the central container and
image storage may be shared by many instances of many tools.  As shown
in #6510, it's fairly easy to have multiple instances of Podman running
in parallel and yield image-lookup errors when removing them.

The underlying issue is the TOCTOU of removal being split into multiple
stages of first reading the local images and then removing them.  Some
images may already have been removed in between the two stages. To make
image removal more robust, handle errors at stage two when a given image
is not present (anymore) in the storage.

Fixes: #6510
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-02-08 14:58:17 +01:00
Daniel J Walsh 407e86dcd2
Implement missing arguments for podman build
Buildah bud passes a bunch more flags then podman build.

We need to implement hook up all of these flags to get full functionality.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-02-08 08:39:18 -05:00
baude 91ea3fabd6 add network prune
add the ability to prune unused cni networks.  filters are not implemented
but included both compat and podman api endpoints.

Fixes :#8673

Signed-off-by: baude <bbaude@redhat.com>
2021-02-06 07:37:29 -06:00
OpenShift Merge Robot 69ddbde983
Merge pull request #9205 from st1971/issue-8710
play kube selinux label issue
2021-02-05 12:25:55 -05:00
OpenShift Merge Robot c421127dd7
Merge pull request #9231 from vrothberg/rootfs-workdir
fix logic when not creating a workdir
2021-02-05 06:29:05 -05:00
OpenShift Merge Robot 42d4652fed
Merge pull request #9048 from matejvasek/apiv2_wait
Fix Docker APIv2 container wait endpoint
2021-02-05 04:41:41 -05:00
OpenShift Merge Robot 4a0ae01261
Merge pull request #9182 from mheon/bump_api
Bump remote API version to 3.0.0
2021-02-05 04:10:29 -05:00
Valentin Rothberg 821ef6486a fix logic when not creating a workdir
When resolving the workdir of a container, we may need to create unless
the user set it explicitly on the command line.  Otherwise, we just do a
presence check.  Unfortunately, there was a missing return that lead us
to fall through into attempting to create and chown the workdir.  That
caused a regression when running on a read-only root fs.

Fixes: #9230
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-02-05 09:50:07 +01:00
Matthew Heon 002f2aca70 Bump remote API version to 3.0.0
Fixes #9175

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2021-02-04 16:42:29 -05:00
OpenShift Merge Robot b1bd126cda
Merge pull request #9235 from Luap99/fix-9234
Fix podman network disconnect wrong NetworkStatus number
2021-02-04 16:34:45 -05:00
Steven Taylor 6c713984ef play kube selinux test case
added skip to test case where selinux not enabled

Signed-off-by: Steven Taylor <steven@taylormuff.co.uk>
2021-02-04 19:57:08 +00:00
Paul Holzinger 5c6ab3075e Fix podman network disconnect wrong NetworkStatus number
The allocated `tmpNetworkStatus` must be allocated with the length 0.
Otherwise append would add new elements to the end of the slice and
not at the beginning of the allocated memory.

This caused inspect to fail since the number of networks did not
matched the number of network statuses.

Fixes #9234

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-02-04 19:41:30 +01:00
OpenShift Merge Robot aaa86c68c0
Merge pull request #9220 from vrothberg/fix-9211
generate kube: handle entrypoint
2021-02-04 13:12:42 -05:00
Valentin Rothberg c995b54607 generate kube: handle entrypoint
The spec of a Kube Container has a `Command` and `Args`.  While both are
slices, the `Command` is the counterpart of the entrypoint of a libpod
container.  Kube is also happily accepting the arguments to as following
items in the slice but it's cleaner to move those to `Args`.

Fixes: #9211
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-02-04 12:34:35 +01:00
Steven Taylor 96adf0e2a2 play kube selinux test case
fixed typo in the label comparison

Signed-off-by: Steven Taylor <steven@taylormuff.co.uk>
2021-02-03 23:35:14 +00:00
Matej Vasek 2b8d6ca09b Increase timeouts in some tests
Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-02-03 22:10:27 +01:00
Matej Vasek 3c57bc845c Add test for Docker APIv2 wait
Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-02-03 22:10:27 +01:00
OpenShift Merge Robot 4e1bcf30f3
Merge pull request #9188 from jwhonce/issues/8865
Report StatusConflict on Pod opt partial failures
2021-02-03 15:30:39 -05:00
OpenShift Merge Robot 4945abb7d1
Merge pull request #9208 from edsantiago/bats
System test for #9096 (truncated stdout)
2021-02-03 12:06:40 -05:00
Daniel J Walsh d87f54fbba
Fix invalid wait condition on kill
When using the compatability tests on kill, the kill
function goes into an infinite wait loop taking all of the CPU.

This change will use the correct wait function and exit properly.

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-02-03 07:56:13 -05:00
OpenShift Merge Robot 8f51d325af
Merge pull request #9174 from bitstrings/master
Make slirp MTU configurable (network_cmd_options)
2021-02-03 06:51:23 -05:00
OpenShift Merge Robot ec0041ebff
Merge pull request #9209 from edsantiago/bats_diff_workaround
Gating tests: diff test: workaround for RHEL8 failure
2021-02-03 06:41:24 -05:00
OpenShift Merge Robot 97421651d3
Merge pull request #9204 from baude/macvlanextra
Honor network options for macvlan networks
2021-02-03 05:00:24 -05:00
Ed Santiago 1c50e09b06 System test for #9096 (truncated stdout)
This actually tests conmon, not podman; but that's the whole
point of system tests in the first place: if a problem exists,
we want to fail loudly, no matter whose fault it is.

(I can't get this to fail on my f33 laptop; OP on #9096 claims
it only fails on Ubuntu. We'll see what happens in CI).

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-02-02 17:48:00 -07:00
Steven Taylor 432ee04c55 play kube selinux label test case
test case added to e2e test suite to validate process label being correctly set
on play kube

Signed-off-by: Steven Taylor <steven@taylormuff.co.uk>
2021-02-03 00:27:48 +00:00
Ed Santiago e0bc8ffb59 Gating tests: diff test: workaround for RHEL8 failure
RHEL8 rootless gating tests are inconsistently failing with:

   $ podman diff --format json -l
   #
   {"changed":["/etc"],"added":["/sys/fs","/sys/fs/cgroup","/pMOm1Q0fnN"],"deleted":["/etc/services"]}
   # #/vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
   # #|     FAIL: added
   # #| expected: '/pMOm1Q0fnN'
   # #|   actual: '/sys/fs'
   # #|         > '/sys/fs/cgroup'
   # #|         > '/pMOm1Q0fnN'
   # #\^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Reason: PR #8561, I think (something to do with /sys on RHEL).

Workaround: ignore '/sys/fs' in diffs.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-02-02 15:23:48 -07:00
OpenShift Merge Robot aab8a934f5
Merge pull request #9185 from mheon/pod_no_network
Allow pods to use --net=none
2021-02-02 14:57:37 -05:00
Jhon Honce 7e4d696d94 Report StatusConflict on Pod opt partial failures
- When one or more containers in the Pod reports an error on an operation
report StatusConflict and report the error(s)

- jsoniter type encoding used to marshal error as string using error.Error()

- Update test framework to allow setting any flag when creating pods

- Fix test_resize() result check

Fixes #8865

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2021-02-02 12:44:08 -07:00
baude bd0e22ed14 Honor network options for macvlan networks
when creating a macvlan network, we should honor gateway, subnet, and
mtu as provided by the user.

Fixes: #9167

Signed-off-by: baude <bbaude@redhat.com>
2021-02-02 13:24:14 -06:00
OpenShift Merge Robot 628b0d79b5
Merge pull request #9116 from iwita/ls-volumes-before-pruning
List volumes before pruning
2021-02-02 14:02:58 -05:00
bitstrings 0959196807 Make slirp MTU configurable (network_cmd_options)
The mtu default value is currently forced to 65520.
This let the user control it using the config key network_cmd_options,
i.e.: network_cmd_options=["mtu=9000"]

Signed-off-by: bitstrings <pino.silvaggio@gmail.com>
2021-02-02 13:50:26 -05:00
Matthew Heon 931ea939ac Allow pods to use --net=none
We need an extra field in the pod infra container config. We may
want to reevaluate that struct at some point, as storing network
modes as bools will rapidly become unsustainable, but that's a
discussion for another time. Otherwise, straightforward plumbing.

Fixes #9165

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2021-02-02 10:35:23 -05:00
baude e11d8f15e8 add macvlan as a supported network driver
instead of using the --macvlan to indicate that you want to make a
macvlan network, podman network create now honors the driver name of
*macvlan*.  Any options to macvlan, like the parent device, should be
specified as a -o option.  For example, -o parent=eth0.

the --macvlan option was marked as deprecated in the man page but is
still supported for the duration of 3.0.

Signed-off-by: baude <bbaude@redhat.com>
2021-02-01 14:42:38 -06:00
OpenShift Merge Robot 20183349fd
Merge pull request #9168 from Luap99/fix-pod-create-network-parsing
Fix --network parsing for podman pod create
2021-02-01 08:48:54 -05:00
OpenShift Merge Robot 81a3ba36ae
Merge pull request #9051 from rhatdan/rm
Switch podman stop/kill/wait handlers to use abi
2021-02-01 08:47:54 -05:00
OpenShift Merge Robot b045c17375
Merge pull request #9173 from mlegenovic/api_fixes
Endpoint that lists containers does not return correct Status value
2021-02-01 05:41:53 -05:00
OpenShift Merge Robot 15e5a5c32b
Merge pull request #9151 from rhatdan/mount
Docker ignores mount flags that begin with constency
2021-02-01 05:10:55 -05:00
Milivoje Legenovic 51c11fea8b Endpoint that lists containers does not return correct Status value
Eclipse and Intellij Docker plugin determines the state of the
container via the Status field, returned from /containers/json call.
Podman always returns empty string, and because of that, both IDEs
show the wrong state of the container.

Signed-off-by: Milivoje Legenovic <m.legenovic@gmail.com>
2021-01-31 21:06:39 +01:00
Paul Holzinger 3cfd4ce45e Fix --network parsing for podman pod create
The `--network` flag is parsed differently for `podman pod create`.
This causes confusion and problems for users. The extra parsing
logic ignored unsupported network options such as `none`,
`container:...` and `ns:...` and instead interpreted them as cni
network names.

Tests are added to ensure the correct errors are shown.

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-01-31 16:01:02 +01:00
Achilleas Tzenetopoulos 9b5b03d1e0 list volumes before pruning
Signed-off-by: Achilleas Tzenetopoulos <atzenetopoulos@gmail.com>
2021-01-31 16:31:43 +02:00
Daniel J Walsh 4a6d042c28
Docker ignores mount flags that begin with constency
Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1915332

```
According to the Docker docs, the consistency option should be ignored on Linux.

the possible values are 'cached', 'delegated', and 'consistent', but they should be ignored equally.

This is a widely used option in scripts run by developer machines, as this makes file I/O less horribly slow on MacOS.
```

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-01-30 06:50:18 -05:00
Milivoje Legenovic cdbbc6120b podman generate kube ignores --network=host
Signed-off-by: Milivoje Legenovic <m.legenovic@gmail.com>
2021-01-30 09:08:36 +01:00
OpenShift Merge Robot f3a7bc1a7b
Merge pull request #9150 from baude/playkubedns
Honor custom DNS in play|generate kube
2021-01-29 14:15:21 -05:00
Daniel J Walsh 073f76c132
Switch podman stop/kill/wait handlers to use abi
Change API Handlers to use the same functions that the
local podman uses.

At the same time:

 implement remote API for --all and --ignore flags for podman stop
 implement remote API for --all flags for podman stop

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-01-29 14:04:44 -05:00
OpenShift Merge Robot 8f3bcf6247
Merge pull request #9144 from vrothberg/fix-9134
Revert "podman build --pull: use correct policy"
2021-01-29 13:27:19 -05:00
OpenShift Merge Robot 4ee66c2c2e
Merge pull request #9149 from rhatdan/docs
Podman-remote push can support --format
2021-01-29 12:05:20 -05:00
OpenShift Merge Robot 0fe3d43ef1
Merge pull request #9133 from rhatdan/pull1
Cleanup bindings for image pull
2021-01-29 11:47:20 -05:00
baude ca0dd76bf3 Honor custom DNS in play|generate kube
when creating kubernetes yaml from containers and pods, we should honor
any custom dns settings the user provided. in the case of generate kube,
these would be provided by --dns, --dns-search, and --dns-opt. if
multiple containers are involved in the generate, the options will be
cumulative and unique with the exception of dns-opt.

when replaying a kube file that has kubernetes dns information, we now
also add that information to the pod creation.

the options for dnspolicy is not enabled as there seemed to be no direct
correlation between kubernetes and podman.

Fixes: #9132

Signed-off-by: baude <bbaude@redhat.com>
2021-01-29 08:49:45 -06:00
Daniel J Walsh d7c356552e
Podman-remote push can support --format
Fix man page to document podman push --format fully.

Also found that push was not handling the tlsverify so fixed this.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-01-29 08:48:35 -05:00
OpenShift Merge Robot a4c255a939
Merge pull request #9115 from rhatdan/pull
Switch podman image push handlers to use abi
2021-01-28 14:37:30 -05:00
Valentin Rothberg c450092fde Revert "podman build --pull: use correct policy"
This reverts commit 15caebfe56.

The previous behaviour of `--pull` to *always* attempt to pull the image
and error out if the pull failed aligns with Docker.  Since Podman aims
at feature parity with Docker, the `--pull` behaviour must match.

Fixes: #9134
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-01-28 17:53:12 +01:00
OpenShift Merge Robot fb653c43ed
Merge pull request #8585 from Luap99/rootless-net-alias
Add support for rootless network-aliases and static ip/mac
2021-01-28 04:58:28 -05:00
Daniel J Walsh 59076888d9
Cleanup bindings for image pull
Remove bindings that are not handled over the API.

Leaving this one to not use image pull, since this would
break progress handling.  We should revisit this in the
future.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-01-27 16:11:35 -05:00
Paul Holzinger 1fac43654c Add support for rootless network-aliases
Make sure we pass the network aliases as capability args to the
cnitool in the rootless-cni-infra container. Also update the
dnsname plugin in the cni-infra container.

Fixes #8567

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-01-27 20:58:03 +01:00
OpenShift Merge Robot 14cc4aaf0a
Merge pull request #9127 from vrothberg/fix-9111
podman build --pull: use correct policy
2021-01-27 14:56:07 -05:00
OpenShift Merge Robot 1814fa2d21
Merge pull request #9105 from vrothberg/fix-8281
remote exec: write conmon error on hijacked connection
2021-01-27 14:25:06 -05:00
Paul Holzinger c717b3caca Allow static ip and mac with rootless cni network
Make sure we pass the ip and mac address as CNI_ARGS to
the cnitool which is executed in the rootless-cni-infra
container.

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-01-27 17:35:54 +01:00
Valentin Rothberg 15caebfe56 podman build --pull: use correct policy
The `--pull` flag should be using the "pull if newer" pull policy rather
than "pull always".  This aligns with what the help message states, what
Buildah does and, according to #9111, what was done before,

Also add a test to prevent future regressions.

Fixes: #9111
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-01-27 16:49:47 +01:00
OpenShift Merge Robot 2ff4da9b59
Merge pull request #9124 from vrothberg/fix-8358
e2e tests: synchronize test results
2021-01-27 10:39:30 -05:00
OpenShift Merge Robot d8f3450008
Merge pull request #9095 from rhatdan/ps
podman-remote ps --external --pod --sort do not work.
2021-01-27 10:33:30 -05:00
Daniel J Walsh 84f7bdc4db
Switch podman image push handlers to use abi
Change API Handlers to use the same functions that the
local podman uses.

At the same time:

Cleanup and pass proper bindings.  Remove cli options from
podman-remote push.  Cleanup manifest push.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-01-27 09:27:25 -05:00
Valentin Rothberg fee2fadc3c e2e tests: synchronize test results
Use a mutex to synchronize the slice for storing tests results.
Running the e2e tests in parallel is otherwise subject to race
conditions surfacing in lost entries.

Fixes: #8358
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-01-27 14:18:12 +01:00
OpenShift Merge Robot 179b9d1745
Merge pull request #9025 from mheon/add_support_volumes_field
Ensure the Volumes field in Compat Create is honored
2021-01-27 12:50:11 +01:00
OpenShift Merge Robot 5c6175df39
Merge pull request #9122 from Luap99/fix-9120
Fix podman history --no-trunc for the CREATED BY field
2021-01-27 12:48:10 +01:00
Daniel J Walsh 21cb3043fc
podman-remote ps --external --pod --sort do not work.
Fixup the bindings and the handling of the --external --por and --sort
flags.

The --storage option was renamed --external, make sure we use
external up and down the stack.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-01-27 06:44:43 -05:00