Commit Graph

13709 Commits

Author SHA1 Message Date
OpenShift Merge Robot 1422cdbac1
Merge pull request #12460 from jwhonce/issues/10974-1
[NO NEW TESTS NEEDED] Refactor podman container command output
2021-12-01 22:05:12 +01:00
OpenShift Merge Robot 4aeac1195a
Merge pull request #12307 from hshiina/device-weight
Implement 'podman run --blkio-weight-device'
2021-12-01 21:37:09 +01:00
OpenShift Merge Robot 5d91edc78d
Merge pull request #12450 from giuseppe/compression-format
podman, push: expose --compression-format
2021-12-01 21:01:15 +01:00
OpenShift Merge Robot ecc663097a
Merge pull request #12464 from giuseppe/fix-race-reading-cgroup-file
container, cgroup: detect pid termination
2021-12-01 20:59:10 +01:00
Paul Holzinger 3ff47748de
Fix possible rootless netns cleanup race
rootlessNetNS.Cleanup() has an issue with how it detects if cleanup
is needed, reading the container state is not good ebough because
containers are first stopped and than cleanup will be called. So at one
time two containers could wait for cleanup but the second one will fail
because the first one triggered already the cleanup thus making rootless
netns unavailable for the second container resulting in an teardown
error. Instead of checking the container state we need to check the
netns state.

Secondly, podman unshare --rootless-netns should not do the cleanup.
This causes more issues than it is worth fixing. Users also might want
to use this to setup the namespace in a special way. If unshare also
cleans this up right away we cannot do this.

[NO NEW TESTS NEEDED]

Fixes #12459

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2021-12-01 19:19:44 +01:00
Jhon Honce db3a4c070f [NO NEW TESTS NEEDED] Refactor podman container command output
Leverage new report.Formatter allowing better compatibility from
podman command output.

See #10974
See #12455

Depends on containers/common#831

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2021-12-01 11:17:40 -07:00
OpenShift Merge Robot 078e633294
Merge pull request #12462 from vrothberg/fix-12452
top: parse ps(1) args correctly
2021-12-01 18:19:11 +01:00
wangqiang 4e63f9192d Hostname in `spec.hostname` should be passed to infra ctr init opt
Fixes https://github.com/containers/podman/issues/12393

Signed-off-by: Qiang Wang <sunsetmask@gmail.com>
2021-12-01 21:03:25 +08:00
Giuseppe Scrivano 0afaf78378
container, cgroup: detect pid termination
If the /proc/$PID/cgroup file doesn't exist, then it is likely the
container was terminated in the meanwhile so report ErrCtrStopped that
is already handled instead of ENOENT.

commit a66f40b4df introduced the regression.

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

[NO NEW TESTS NEEDED] it solves a race in the CI that is difficult to reproduce.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-12-01 13:42:59 +01:00
Valentin Rothberg e2b344728c top: parse ps(1) args correctly
The arguments of ps(1) should be shlexed.

Fixes: #12452
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-12-01 11:42:37 +01:00
Giuseppe Scrivano 6673ff78d3
podman, push: expose --compression-format
support overriding the compression format at push time.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-12-01 09:39:03 +01:00
Ed Santiago 9ce7ade8c8 e2e: yet more cleanup of BeTrue/BeFalse
Thanks to Paul for teaching me about HaveKey()

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-11-30 15:19:57 -07:00
Miloslav Trmač f415b30552 Ensure the generated NodePort values are unique
... at least within a single service.

[NO NEW TESTS NEEDED]
because testing RNGs is problematic. (We _could_
probably inject a mock RNG implementation that always
returns the same value, or something like that.)

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2021-11-30 22:13:52 +01:00
Miloslav Trmač a948ecbb9c Allow containerPortsToServicePorts to fail
Add an error return to it and affected callers.

Should not affect behavior, the function can't currently fail.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2021-11-30 22:13:52 +01:00
Miloslav Trmač ec686d68dd Don't use the global math/rand RNG for service ports
Use a private RNG with the desired seed, don't interfere
with the other uses.

Introducing the servicePortState type is rather overkill
for the single member, but we'll add another one immediately.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2021-11-30 22:13:52 +01:00
Miloslav Trmač d48c00418a Move a comment to the relevant place
Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2021-11-30 22:13:52 +01:00
OpenShift Merge Robot 295a6f7dd0
Merge pull request #12454 from edsantiago/remove_betrue
More BeTrue cleanup
2021-11-30 21:03:32 +01:00
OpenShift Merge Robot 85101f69d8
Merge pull request #12414 from flouthoc/api-allow-secrets
tunnel: allow `remote` and `API` to accept `--secrets`
2021-11-30 19:29:33 +01:00
Ed Santiago 8eb0be0a29 a few more manual BeTrue cleanups
Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-11-30 10:13:16 -07:00
Ed Santiago f7cbb1d845 Convert strings.Contains() to Expect(ContainSubstring)
...done manually, not via sed, because some of the inner
expressions include nested commas.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-11-30 09:53:15 -07:00
Ed Santiago 12787963b0 e2e tests: more cleanup of BeTrue()s
Write a BeValidJSON() matcher, and replace IsJSONOutputValid():

  sed -i -e 's/Expect(\(.*\)\.IsJSONOutputValid()).To(BeTrue())/Expect(\1.OutputToString())\.To(BeValidJSON())/' test/e2e/*_test.go

(Plus a few manual tweaks)

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-11-30 09:51:06 -07:00
OpenShift Merge Robot 3fac03cf04
Merge pull request #12449 from vrothberg/fix-12438
systemd: replace multi-user with default.target
2021-11-30 17:09:33 +01:00
OpenShift Merge Robot 771f8c628b
Merge pull request #12435 from vrothberg/fix-12320
compat API: allow enforcing short-names resolution to Docker Hub
2021-11-30 16:30:23 +01:00
Hironori Shiina 5a56f40948 Implement 'podman run --blkio-weight-device'
`--blkio-weight-device` is not fully implemented and this causes an
unexpected panic when specified because an entry is put into an
uninitialized map at parsing.

This fix implements the `--blkio-weight-device` and adds a system test.
When creating a spec generator on a client, a major number and a minor
number of a device cannot be set. So, these numbers are inspected on a
server and set to a runtime spec.

Signed-off-by: Hironori Shiina <shiina.hironori@jp.fujitsu.com>
2021-11-30 09:21:28 -05:00
Valentin Rothberg 9a10e2124b systemd: replace multi-user with default.target
Replace `multi-user.target` with `default.target` across the code base.
It seems like the multi-user one is not available for (rootless) users
on F35 anymore is causing issues in all kinds of ways, for instance,
enabling the podman.service or generated systemd units.

Fixes: #12438
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-11-30 14:37:25 +01:00
Valentin Rothberg 5bdd571b1e compat API: allow enforcing short-names resolution to Docker Hub
The Docker-compatible REST API has historically behaved just as the rest
of Podman and Buildah (and the atomic Docker in older RHEL/Fedora) where
`containers-registries.conf` is centrally controlling which registries
a short name may resolve to during pull or local image lookups.  Please
refer to a blog for more details [1].

Docker, however, is only resolving short names to docker.io which has
been reported (see #12320) to break certain clients who rely on this
behavior.  In order to support this scenario, `containers.conf(5)`
received a new option to control whether Podman's compat API resolves
to docker.io only or behaves as before.

Most endpoints allow for directly normalizing parameters that represent
an image.  If set in containers.conf, Podman will then normalize the
references directly to docker.io.  The build endpoint is an outlier
since images are also referenced in Dockerfiles.  The Buildah API,
however, supports specifying a custom `types.SystemContext` in which
we can set a field that enforces short-name resolution to docker.io
in `c/image/pkg/shortnames`.

Notice that this a "hybrid" approach of doing the normalization directly
in the compat endpoints *and* in `pkg/shortnames` by passing a system
context.  Doing such a hybrid approach is neccessary since the compat
and the libpod endpoints share the same `libimage.Runtime` which makes
a global enforcement via the `libimage.Runtime.systemContext`
impossible.  Having two separate runtimes for the compat and the libpod
endpoints seems risky and not generally applicable to all endpoints.

[1] https://www.redhat.com/sysadmin/container-image-short-names

Fixes: #12320
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-11-30 14:22:52 +01:00
Shion Tanaka 0ddb094480 Fixed the containerfile not found during remote build.
[NO NEW TESTS NEEDED]

Signed-off-by: Shion Tanaka <shtanaka@redhat.com>
2021-11-30 21:13:43 +09:00
Aditya Rajan c80a2e4495
podman-remote: prevent leaking secret into image
Prevents temp secrets leaking into image by moving it away from context
directory to parent builder directory. Builder directory automatically
gets cleaned up when we are done with the build.

Signed-off-by: Aditya Rajan <arajan@redhat.com>
2021-11-30 15:44:10 +05:30
OpenShift Merge Robot 8de68b1707
Merge pull request #12408 from rhatdan/stdout
Only open save output file with WRONLY
2021-11-30 10:44:21 +01:00
Aditya Rajan e7204178e1
podman-remote: copy secret to contextdir is absolute path on host
Podman remote must treat build secrets as part of context directory. If
secret path is absolute path on host copy it to tar file and pass it to
remote server.

Signed-off-by: Aditya Rajan <arajan@redhat.com>
2021-11-30 14:19:29 +05:30
Aditya Rajan bfcaf538bb
api: allow build api to accept secrets
Following commit makes sure that `build` api can accept external
secret and allows currently `NOOP` `podman-remote build -t tag
--secret id=mysecret,src=/path/on/remote` to become functional.

Just like `docker` following api is a hidden field and only exposed to
`podman-remote` but could document it if it needs exposed on `swagger`.

Signed-off-by: Aditya Rajan <arajan@redhat.com>
2021-11-30 14:19:17 +05:30
OpenShift Merge Robot d51ebca0c1
Merge pull request #12412 from rhatdan/man
[CI:DOCS] List /etc/containers/certs.d as default for --cert-path
2021-11-29 23:12:19 +01:00
OpenShift Merge Robot 5f7e3c939c
Merge pull request #12407 from edsantiago/bindings_test_add_gitcommit
Bindings test: emit GIT_COMMIT, for links in logs
2021-11-29 22:44:18 +01:00
Daniel J Walsh 931c08157e
Only open save output file with WRONLY
The previous code fails on a MAC when opening /dev/stdout

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

[NO NEW TESTS NEEDED] No easy way to test this.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-11-29 16:41:11 -05:00
OpenShift Merge Robot 97c21ff78f
Merge pull request #12439 from rhatdan/Dockerfile
[CI:DOCS] Move the chown to after the ADDs
2021-11-29 22:40:17 +01:00
OpenShift Merge Robot 2b0b4327c4 Merge pull request #12405 from flouthoc/compat-build-error
compat: Add compatiblity with `Docker/Moby` API for scenarios where build fails.
2021-11-29 22:38:19 +01:00
OpenShift Merge Robot 6052914222
Merge pull request #12433 from matejvasek/fix-mount-parsing
fix: parsing of HostConfig.Mounts for container create
2021-11-29 22:10:18 +01:00
OpenShift Merge Robot c234c20a70
Merge pull request #12401 from edsantiago/lint_tests
e2e tests: enable golint
2021-11-29 18:08:20 +01:00
Daniel J Walsh f330c197bd
List /etc/containers/certs.d as default for --cert-path
Helps Document https://github.com/containers/podman/issues/10116

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-11-29 10:42:27 -05:00
Ed Santiago b63d696405 e2e tests: enable golint
...and fix problems found therewith.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-11-29 08:30:00 -07:00
Matej Vasek 697ff213dd fix: parsing of HostConfig.Mounts for container create
Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-11-29 15:57:56 +01:00
Daniel J Walsh 2e50514ade
Move the chown to after the ADDs
I have noticed that the containers.conf file in the /home/podman
directory is owned by root and not Podman. This change fixes the
ownership.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-11-29 09:35:32 -05:00
OpenShift Merge Robot 3d19f1a7fa
Merge pull request #12431 from matejvasek/fix-ctr-archive-ep
fix: error reporting for archive endpoint
2021-11-29 12:14:17 +01:00
Matej Vasek cbda62d1be fix: error reporting for archive endpoint
Returning 500 when copying to read-only destination.

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-11-28 19:02:15 +01:00
OpenShift Merge Robot 7324d94648
Merge pull request #12406 from Luap99/xdg-checkpoint
checkpoint do not modify XDG_RUNTIME_DIR
2021-11-25 12:02:10 +01:00
OpenShift Merge Robot 12f73d5f88
Merge pull request #12403 from giuseppe/improve-cgroup-detection
libpod: improve heuristic to detect cgroup
2021-11-25 11:59:09 +01:00
Ed Santiago d5c3cc9496 Bindings test: emit GIT_COMMIT, for links in logs
Add a magic 'echo' to runner.sh, displaying $GIT_COMMIT in
a special syntax. The logformatter script, seeing this,
will hyperlink error messages to the failing source file.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2021-11-24 07:42:11 -07:00
Paul Holzinger bc3c5be2fb
checkpoint do not modify XDG_RUNTIME_DIR
We should not modify the XDG_RUNTIME_DIR env value during runtime of
libpod, this can cause hard to find bugs. Only set it for the OCI
runtime, this matches the other commands such as start, stop, kill...

[NO NEW TESTS NEEDED]

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2021-11-24 15:02:11 +01:00
Giuseppe Scrivano e648122b29
libpod: improve heuristic to detect cgroup
improve the heuristic to detect the scope that was created for the container.
This is necessary with systemd running as PID 1, since it moves itself
to a different sub-cgroup, thus stats would not account for other
processes in the same container.

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

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-11-24 14:50:12 +01:00
Giuseppe Scrivano a66f40b4df
libpod, inspect: export cgroup path
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-11-24 14:50:12 +01:00