Commit graph

3429 commits

Author SHA1 Message Date
OpenShift Merge Robot
5c7f283361
Merge pull request #15618 from mheon/add_group_to_addtlgroups
Add container GID to additional groups
2022-09-05 00:16:51 +02:00
OpenShift Merge Robot
8942a60bb0
Merge pull request #15582 from dfr/freebsd-bind
Add support for FreeBSD volume mounts in specgen
2022-09-04 13:34:41 +02:00
Matthew Heon
d82a41687e Add container GID to additional groups
Mitigates a potential permissions issue. Mirrors Buildah PR #4200
and CRI-O PR #6159.

Signed-off-by: Matthew Heon <mheon@redhat.com>
2022-09-02 15:51:36 -04:00
OpenShift Merge Robot
2a7a6bd9a4
Merge pull request #15581 from dfr/random-names
libpod: Ensure that generated container names are random
2022-09-02 21:00:35 +02:00
OpenShift Merge Robot
c5da5e459a
Merge pull request #15599 from umohnani8/gen-kube
Fix bind-mount-option annotation in gen/play kube
2022-09-02 20:12:25 +02:00
Charlie Doern
050f3291b9 implement podman update
podman update allows users to change the cgroup configuration of an existing container using the already defined resource limits flags
from podman create/run. The supported flags in crun are:

this command is also now supported in the libpod api via the /libpod/containers/<CID>/update endpoint where
the resource limits are passed inthe request body and follow the OCI resource spec format

–memory
–cpus
–cpuset-cpus
–cpuset-mems
–memory-swap
–memory-reservation
–cpu-shares
–cpu-quota
–cpu-period
–blkio-weight
–cpu-rt-period
–cpu-rt-runtime
-device-read-bps
-device-write-bps
-device-read-iops
-device-write-iops
-memory-swappiness
-blkio-weight-device

resolves #15067

Signed-off-by: Charlie Doern <cdoern@redhat.com>
2022-09-01 13:02:01 -04:00
Urvashi Mohnani
4a1acccf96 Fix bind-mount-option annotation in gen/play kube
The format used for setting the bind-mount-options annotations
in the kube yaml was incorrect and caused k8s to throw an error
when trying to play the generated kube yaml.
Fix the annotation format to match the rules of k8s.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2022-09-01 11:51:46 -04:00
OpenShift Merge Robot
0085fbb488
Merge pull request #15571 from umohnani8/gen-kube
Set enableServiceLinks to false in generated yaml
2022-09-01 15:17:39 +02:00
Doug Rabson
b667d7340c libpod: Ensure that generated container names are random
Fixes #15569.

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-09-01 10:27:04 +01:00
Urvashi Mohnani
84352a81c9 Set enableServiceLinks to false in generated yaml
Since podman doesn't set/use the needed service env
variable, always set enableServiceLinks to false in
the generated kube yaml.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2022-08-31 14:02:13 -04:00
OpenShift Merge Robot
07413f2035
Merge pull request #15566 from mheon/fix_15557
Inhibit SIGTERM during Conmon startup
2022-08-31 19:19:08 +02:00
Matthew Heon
fed4ce0ea9 Inhibit SIGTERM during Conmon startup
If we get a SIGTERM immediately after Conmon starts but before we
record its PID in the database, we end up leaking a Conmon and
associated OCI runtime process. Inhibit shutdown using the logic
we originally wrote to prevent similar issues during container
creation to prevent this problem.

[NO NEW TESTS NEEDED] No real way to test this I can think of.

Fixes #15557

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2022-08-31 10:58:06 -04:00
OpenShift Merge Robot
8266dbe7a9
Merge pull request #15473 from umohnani8/empty-dir
Add emptyDir volume support to kube play
2022-08-31 09:36:04 -04:00
Doug Rabson
0300271bf7 libpod/define: Make TypeBind a platform-specific constant
This allows us to redefine to the equivalent nullfs on FreeBSD.

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-30 16:32:24 +01:00
Urvashi Mohnani
98169c20dd Add emptyDir volume support to kube play
When a kube yaml has a volume set as empty dir, podman
will create an anonymous volume with the empty dir name and
attach it to the containers running in the pod. When the pod
is removed, the empy dir volume created is also removed.

Add tests and docs for this as well.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2022-08-30 10:34:45 -04:00
Doug Rabson
a7d7912029 libpod: Make sure writeConmonPipeData is called on FreeBSD
I managed to miss this while factoring out moveConmonToCgroupAndSignal.
Perhaps the signalling part should move to the caller instead?

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-29 13:04:04 +01:00
OpenShift Merge Robot
e78363d24c
Merge pull request #15516 from kubealex/handle-connected-network
Handle an already connected network in libpod API
2022-08-29 06:56:15 -04:00
Alessandro Rossi
78aec21302 Fix #15499 already connected network
Compat: Treat already attached networks as a no-op
Applies only to containers in created state. Maintain error in running state.

Co-authored-by: Alessandro Rossi <al.rossi87@gmail.com>
Co-authored-by: Brent Baude <bbaude@redhat.com>
Co-authored-by: Jason T. Greene <jason.greene@redhat.com>
Signed-off-by: Alessandro Rossi <al.rossi87@gmail.com>
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2022-08-27 20:03:40 -05:00
OpenShift Merge Robot
b1cbcff5c5
Merge pull request #15494 from vrothberg/fix-15492
libpod: UpdateContainerStatus: do not wait for container
2022-08-26 16:23:46 -04:00
Valentin Rothberg
15aeccb834 libpod: UpdateContainerStatus: do not wait for container
Commit 30e7cbccc1 accidentally added a deadlock as Podman was waiting
for the exit code to show up when the container transitioned to stopped.
Code paths that require the exit code to be written (by the cleanup
process) should already be using `(*Container).Wait()` in a deadlock
free way.

[NO NEW TESTS NEEDED] as I did not manage to a reproducer that would
work in CI.  Ultimately, it's a race condition.

Fixes: #15492
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-08-26 12:39:43 +02:00
Daniel J Walsh
d307d1aba4
Merge pull request #15474 from umohnani8/gen-kube
Remove duplicate annotations in generated service yaml
2022-08-26 05:25:21 -04:00
Daniel J Walsh
9553f3bafa
Run codespell
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-08-25 16:32:31 -04:00
Urvashi Mohnani
10b4605124 Remove duplicate annotations in generated service yaml
Don't add the same annotations as the pod yaml to the
service yaml as it is not needed.

[NO NEW TESTS NEEDED]

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2022-08-24 23:47:38 -04:00
OpenShift Merge Robot
0f92cf22a6
Merge pull request #15437 from mheon/default_volume_timeout
Add support for containers.conf volume timeouts
2022-08-24 09:35:57 -04:00
Doug Rabson
b0700aa482 libpod: Enable 'podman info' for FreeBSD
[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-24 10:55:52 +01:00
Doug Rabson
ff20c74e97 libpod: Move getCPUUtilization to info_linux.go
The Linux implementation uses /proc/stat - the FreeBSD equivalent is
quite different where this information is exposed via sysctl.

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-24 10:55:52 +01:00
Doug Rabson
694cbaca37 libpod: Read kernel version and uptime using buildah/pkg/util
[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-24 10:55:52 +01:00
Doug Rabson
877e673992 libpod: Split out platform-specific code from hostInfo
[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-24 10:55:49 +01:00
Matthew Heon
0f73935563 Add support for containers.conf volume timeouts
Also, do a general cleanup of all the timeout code. Changes
include:
- Convert from int to *uint where possible. Timeouts cannot be
  negative, hence the uint change; and a timeout of 0 is valid,
  so we need a new way to detect that the user set a timeout
  (hence, pointer).
- Change name in the database to avoid conflicts between new data
  type and old one. This will cause timeouts set with 4.2.0 to be
  lost, but considering nobody is using the feature at present
  (and the lack of validation means we could have invalid,
  negative timeouts in the DB) this feels safe.
- Ensure volume plugin timeouts can only be used with volumes
  created using a plugin. Timeouts on the local driver are
  nonsensical.
- Remove the existing test, as it did not use a volume plugin.
  Write a new test that does.

The actual plumbing of the containers.conf timeout in is one line
in volume_api.go; the remainder are the above-described cleanups.

Signed-off-by: Matthew Heon <mheon@redhat.com>
2022-08-23 15:42:00 -04:00
Doug Rabson
8f797ab661 libpod: Add definition of containerPlatformState for FreeBSD
For FreeBSD, we need the name of the 'network jail' which is the parent
of all containers in a pod. Having a separate jail for the network
configuration also simplifies the implementation of CNI plugins so we
use this pattern for solitary containers as well as pods.

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-23 15:31:00 +01:00
Doug Rabson
8ffeb626c9 events: Add freebsd support for libpod/event
[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-22 10:14:12 +01:00
OpenShift Merge Robot
d07b8c8227
Merge pull request #15371 from dfr/freebsd-conmon
libpod: Add FreeBSD support for ConmonOCIRuntime
2022-08-18 17:21:09 +00:00
Doug Rabson
054d647107 libpod: Build oci_conmon_common.go and oci_conmon_attach_common on FreeBSD
This also adds FreeBSD equivalents to the functions moved to
oci_conmon*_linux.go. For openUnixSocket, we create a temporary symlink
to shorten the path to something that fits into sockaddr_un.

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-18 08:07:30 +01:00
Doug Rabson
cb4158889e libpod: Move openUnixSocket to oci_conmon_attach_linux.go
This function depends on linux-specific functionality in /proc/fd to
allow connecting to local domain sockets with pathnames too long for
sockaddr_un.

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-18 08:05:42 +01:00
Doug Rabson
d43fac20f3 libpod: Move moveConmonToCgroupAndSignal and GetLimits to oci_conmon_linux.go
[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-18 08:05:42 +01:00
Doug Rabson
93bad90486 libpod: Move socket label handling from oci_conmon_common.go to oci_conmon_linux.go
[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-18 08:05:42 +01:00
Doug Rabson
6791cdbdf1 libpod: Move rootless handling from oci_conmon_common.go to oci_conmon_linux.go
[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-18 08:05:42 +01:00
Doug Rabson
68b2450d3d libpod: Move oci_conmon_exec_linux.go to oci_conmon_exec_common.go
[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-18 08:05:42 +01:00
Doug Rabson
8d229c6cdc libpod: Move oci_conmon_attach_linux.go to oci_conmon_attach_common.go
[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-18 08:05:42 +01:00
Doug Rabson
bebf55c0f2 libpod: Move oci_conmon_linux.go to oci_conmon_common.go
[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-18 08:05:42 +01:00
Giuseppe Scrivano
20ad122741
runtime: use FindCommon from c/common
it detects conmon-rs.

[NO NEW TESTS NEEDED] no functionalities added.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2022-08-17 23:10:14 +02:00
Doug Rabson
1572420c3f libpod: Move uses of unix.O_PATH to container_internal_linux.go
The O_PATH flag is a recent addition to the open syscall and is not
present in darwin or in FreeBSD releases before 13.1. The constant is
not present in the FreeBSD version of x/sys/unix since that package
supports FreeBSD 12.3 and later.

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-17 12:55:41 +01:00
Doug Rabson
5d7778411a libpod: Move rootless network setup details to container_internal_linux.go
This removes a use of state.NetNS which is a linux-specific field defined
in container_linux.go from the generic container_internal.go, allowing
that to build on non-linux platforms.

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-17 12:55:32 +01:00
Doug Rabson
1b88927c2c libpod: Add stubs for non-linux builds
Note: this makes info.go linux-only since it mixes linux-specific and
generic code. This should be addressed in a separate refactoring PR.

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-08-17 11:45:07 +01:00
OpenShift Merge Robot
92bbae40de
Merge pull request #15248 from vrothberg/RUN-1606
kube play: sd-notify integration
2022-08-11 15:44:55 +00:00
Valentin Rothberg
79e21b5b16 kube play: sd-notify integration
Integrate sd-notify policies into `kube play`.  The policies can be
configured for all contianers via the `io.containers.sdnotify`
annotation or for indidivual containers via the
`io.containers.sdnotify/$name` annotation.

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

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

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

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-08-10 21:10:17 +02:00
Evan Lezar
658960c97b build(deps) bump CDI dependency from 0.4.0 to 0.5.0
bump github.com/container-orchestrated-devices/container-device-interface from 0.4.0 to 0.5.0

This requires that the cdi.Registry be instantiated with AutoRefresh disabled for CLI clients.

[NO NEW TESTS NEEDED]

Signed-off-by: Evan Lezar <elezar@nvidia.com>
2022-08-10 10:49:42 +02:00
openshift-ci[bot]
5fc7339aa1
Merge pull request #15084 from sstosh/rm-filter
Add rm --filter option
2022-08-03 17:23:07 +00:00
Miloslav Trmač
02f570e4bd Remove libpod/common
AFAICS it is not used anywhere.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2022-07-30 17:26:08 +02:00