Commit Graph

6233 Commits

Author SHA1 Message Date
openshift-merge-bot[bot]
241821b77d Merge pull request #22707 from rhatdan/stats
Fail earlier when no containers exist in stats
2024-06-03 15:55:48 +00:00
Giuseppe Scrivano
900e29549a libpod: do not move podman with --cgroups=disabled
The expectation with --cgroups=disabled is that the current cgroup is
used by the container.

Currently the --cgroups=disabled is passed directly to the OCI
runtime, but it doesn't stop Podman from creating a new cgroup when it
doesn't own the current one.

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

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2024-05-30 16:59:30 +02:00
Daniel J Walsh
4adb5cbbff Fail earlier when no containers exist in stats
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-05-29 06:38:56 -04:00
openshift-merge-bot[bot]
3fb70d3c8f Merge pull request #22773 from cevich/use_preinstalled_rosetta
Mac PM test: Require pre-installed rosetta
2024-05-28 19:06:12 +00:00
openshift-merge-bot[bot]
6f0737a5c9 Merge pull request #22806 from JayKayy/22590-pod-console-name
Have pod.Name display instead of pod.ID on start and stop reports
2024-05-28 14:19:46 +00:00
Paul Holzinger
2b43f62233 update golangci-lint to v1.59.0
Remove deactivated linters from the config as they will be removed in
the future and thorw warnings, all of them were disabled already anyway
so this is no functional change.
Second, fix one new lint warning for fmt.Scanln() error checking.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-05-27 11:19:03 +02:00
jkwiatko
b45364254f working name of pod on start and stop
Signed-off-by: jkwiatko <jkwiatkoski@protonmail.com>
2024-05-25 19:40:21 -04:00
Chris Evich
74e8f98772 Mac PM test: Require pre-installed rosetta
Previously, the mac podman-machine tests installed rosetta before
executing any tests.  As a best-practice (and because the Macs in CI are
shared) tests should never permanently modify the system.  As of this
commit, the system setup script used for the CI Macs does the rosetta
installation.  Remove the test setup code that installed rosetta and
add a CI-level confirmation that it's been pre-installed.

Signed-off-by: Chris Evich <cevich@redhat.com>
2024-05-23 10:23:06 -04:00
openshift-merge-bot[bot]
36152eeabf Merge pull request #22057 from jbtrystram/quadlet-image-network
quadlet: Add a network requirement on .image and .containers units
2024-05-23 06:19:07 +00:00
openshift-merge-bot[bot]
cc79d5e82e Merge pull request #22700 from Luap99/libpod-inspect-API-v4
remote API: restore v4 payload in container inspect
2024-05-22 12:32:29 +00:00
jbtrystram
ad1d3f8fc7 quadlet: Add a network requirement on .image units
If a container unit starts on boot with a dependency on `default.target`
the image unit may start too soon, before network is ready. This cause
the unit to fail to pull the image.
- Add a dependency on `network-online.target` to make sure image pulls
don't fail.
See https://github.com/containers/podman/issues/21873

- Document the hardcoded dependency on `network-online.target` for images unit
and explain how it can be overriden if necessary.

- tests/e2e/quadlet: Add `assert-last-key-regex`

Required to test the `After=` override in [Unit] section
See https://github.com/containers/podman/pull/22057#issuecomment-2008959993

- quadlet/unitfile: add a prepenUnitLine method

Requirements on networks should be inserted at the top of the
section so the user can override them.

Signed-off-by: jbtrystram <jbtrystram@redhat.com>
2024-05-22 13:46:42 +02:00
Sergio Lopez
3ab9e864f6 Check AppleHypervisor before accessing it
In GetDefaultDevices(), make sure MachineConfig has an AppleHypervisor
instance before attempting to access it. This fixes a SIGSEGV when
running with libkrun as machine provider.

Signed-off-by: Sergio Lopez <slp@redhat.com>
2024-05-20 16:17:59 +02:00
openshift-merge-bot[bot]
34d2d20d46 Merge pull request #21670 from tnk4on/rosetta-support
applehv: Rosetta support
2024-05-17 20:39:40 +00:00
Shion Tanaka
fe7cc67ef4 Add Rosetta support for Apple Silicon mac
Signed-off-by: Shion Tanaka <shtanaka@redhat.com>
2024-05-17 17:53:28 +09:00
Nalin Dahyabhai
8afa06ee89 Use a defined constant instead of a hard-coded magic value
Use specV1.AnnotationTitle instead of hard-coding its value when we go
looking for podman-machine images.

Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>
2024-05-16 15:50:12 -04:00
openshift-merge-bot[bot]
1afeb13d0b Merge pull request #22362 from tnk4on/e2e-macos-tmpdir
Change tmpDir when running e2e localmachine test on macOS
2024-05-16 18:11:55 +00:00
openshift-merge-bot[bot]
f7a30461e0 Merge pull request #22658 from giuseppe/libpod-wait-for-healthy-on-main-thread
libpod: wait for healthy on main thread
2024-05-16 15:59:54 +00:00
Daniel J Walsh
6408a05927 Return StatusNotFound when multiple volumes matching occurs
Fixes #22616

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-05-15 06:21:14 -04:00
openshift-merge-bot[bot]
759e546217 Merge pull request #22691 from nalind/events-bad-filters
`podman events`: check for an error after we finish reading events
2024-05-15 09:08:13 +00:00
Giuseppe Scrivano
b06c58b4a5 libpod: wait for healthy on main thread
wait for the healthy status on the thread where the container lock is
held.  Otherwise, if it is performed from a go routine, a different
thread is used (since the runtime.LockOSThread() call doesn't have any
effect), causing pthread_mutex_unlock() to fail with EPERM.

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

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2024-05-14 22:55:02 +02:00
openshift-merge-bot[bot]
87bd77538e Merge pull request #22587 from gmpify/main
Fix updating connection when SSH port conflict happens
2024-05-14 17:30:26 +00:00
Nalin Dahyabhai
c46884aa93 podman events: check for an error after we finish reading events
The function that's handing us events will return an error after closing
the channel over which it's sending events, and its caller (in its own
goroutine) will then send that error over another channel.

The logic that started the goroutine is likely to notice that the events
channel is closed before noticing that the error channel has a result
for it to read, so any error that would have been communicated would be
lost.

When we finish reading events, check if the reader returned an error
before telling our caller that there was no error.

Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>
2024-05-14 13:18:51 -04:00
Paul Holzinger
bcb7edfded remote API: restore v4 payload in container inspect
The v5 API made a breaking change for podman inspect, this means that
an old client could not longer parse the result from the new 5.X server.
The other way around new client and old server already worked.

As it turned out there were several users that run into this, one case
to hit this is using an old 4.X podman machine wich now pulls a newer
coreos with podman 5.0. But there are also other users running into it.
In order to keep the API working we now have a version check and return
the old v4 compatible payload so the old remote client can still work
against a newer server thus removing any major breaking change for an
old client.

Fixes #22657

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-05-14 17:56:20 +02:00
Gabriel Parreiras
277312d282 Fix updating connection when SSH port conflict happens
Signed-off-by: Gabriel Parreiras <gabriel.parreiras@shopify.com>
2024-05-14 16:15:56 +01:00
openshift-merge-bot[bot]
a6aa5c8fcf Merge pull request #22673 from tnk4on/fix-farm-remote
Fix podman-remote support for `podman farm build`
2024-05-14 13:14:36 +00:00
Paul Holzinger
2a609b0f74 rootless: fix reexec to use /proc/self/exe
Under some circumstances podman might be executed with a different argv0
than the actual path to the podman binary. This breaks the reexec logic
as it tried to exec argv0 which failed.

This is visible when using podmansh as login shell which get's the
special -podmansh on argv0 to signal the shell it is a login shell.

To fix this we can simply use /proc/self/exe as command path which is
much more robust and the argv array is still passed correctly.

Fixes #22672

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-05-14 12:02:19 +02:00
openshift-merge-bot[bot]
443e37719c Merge pull request #22640 from WxNzEMof/runtimes-without-paths
Don't panic if a runtime was configured without paths
2024-05-13 20:33:27 +00:00
openshift-merge-bot[bot]
abfd0228d9 Merge pull request #22398 from andremarianiello/graceful-kube-down
Graceful shutdown during podman kube down
2024-05-13 16:45:14 +00:00
Shion Tanaka
3b1c735b67 Fix podman-remote support for podman farm build
Signed-off-by: Shion Tanaka <shtanaka@redhat.com>
2024-05-12 03:01:22 +09:00
openshift-merge-bot[bot]
63ab9275b7 Merge pull request #22601 from xkr47/feat/quadlet-group-add
Quadlet/Container: Add GroupAdd option
2024-05-09 08:49:19 +00:00
Andre Marianiello
a2cf948f90 Graceful shutdown during podman kube down
Signed-off-by: Andre Marianiello <andremarianiello@users.noreply.github.com>
2024-05-08 14:24:12 -04:00
Jonas Berlin
6d1098f823 Quadlet/Container: Add GroupAdd option
Co-authored-by: Ygal Blum <ygal.blum@gmail.com>
Signed-off-by: Jonas Berlin <xkr47@outerspace.dyndns.org>
2024-05-08 16:00:28 +03:00
WxNzEMof
7bfac4f349 Don't panic if a runtime was configured without paths
Signed-off-by: WxNzEMof <143541718+WxNzEMof@users.noreply.github.com>
2024-05-08 12:44:38 +00:00
Jake Correnti
ee5153c545 machine: Add LibKrun provider detection
Adds provider detection for LibKrun in `pkg/provider/platform_darwin.go`.

Changes the macOS version check to 13 instead of 11, and now uses the `semver`
package to verify current version.

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2024-05-07 21:16:46 -04:00
openshift-merge-bot[bot]
97f3f9c34e Merge pull request #22479 from jakecorrenti/provider-detection
machine: Add provider detection API
2024-05-07 14:58:07 +00:00
openshift-merge-bot[bot]
f1b8439966 Merge pull request #22529 from dcermak/substitute-home-in-runlabel
Also substitute $HOME in runlabel with user's homedir
2024-05-06 15:57:41 +00:00
Jake Correnti
431cbffab6 machine: Add provider detection API
Extends the `pkg/machine/provider` package to add an API which includes
provider detection based on the host operating system.

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2024-05-06 09:42:02 -04:00
Giuseppe Scrivano
419efb9eb5 util: specify a not empty pause dir for root too
commit b3014c1c69 changed
GetRootlessRuntimeDir() to return an empty string for root, so that
its value is not exported as XDG_RUNTIME_DIR, and other programs like
crun can use a better default.

Now GetRootlessPauseProcessPidPath() uses homedir.GetRuntimeDir().
The homedir.GetRuntimeDir() function returns a value also when running
as root so it can be used inside a nested Podman.

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

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2024-05-06 12:14:00 +02:00
Dan Čermák
46f247d880 Also substitute $HOME in runlabel with user's homedir
Some programs have their configuration files relative to the user's
home. It would be convenient being able to mount these into the container, but
that requires expansion of `~` or `$HOME` in a label. This commit adds support
for that for the `runlabel` command.

Signed-off-by: Dan Čermák <dcermak@suse.com>
2024-05-03 14:00:20 +02:00
Shion Tanaka
590fec7a78 Change tmpDir for macOS
Signed-off-by: Shion Tanaka <shtanaka@redhat.com>
2024-05-03 15:01:43 +09:00
Ashley Cui
a140c74ba4 Fix machine volumes with long path and paths with dashes
AppleHV accepts a max 36 bytes for mount tags. Instead of using the fully qualified path for the mount tag, SHA256 the path, and truncate the shasum to 36 bytes.
Also correctly escape dashes in mounted paths.

Signed-off-by: Ashley Cui <acui@redhat.com>
2024-04-30 11:25:45 -04:00
openshift-merge-bot[bot]
02cfd71fe8 Merge pull request #22507 from ashley-cui/cache
Clean machine pull cache
2024-04-26 18:13:34 +00:00
Ashley Cui
e412eff33f Clean machine pull cache
Cache cleanups only happen if there is a cache miss, and we need to pull a new image

For quay.io/podman/machine-os, we remove all old images from the cache dir. This means we will delete any file that exists in the cache dir; this should be safe to do since the machine pull code should be the only thing touching this cache dir. OCI machine images will always have a different manifest, and won’t be updated with the same manifest, so if the version moves on, there isn’t a reason to keep the old version in the cache, it really doesn’t change.

For Fedora (WSL), we use the cache, so we go through the cache dir and remove any old cached images, on a cache miss. We also switch to using ~/.local/share/containers/podman/machine/wsl/cache as the cache dir rather than ~/.local/share/containers/podman/machine/wsl. Both these behaviors existed in v4.9, but are now added back into 5.x.

For generic files pulled from a URL or a non-default OCI image, we shouldn’t actually cache, so we delete the pulled file immediately after creating a machine image. This restores the behavior from v4.9.

For generic files from a local path, the original file will never be cleaned up

Unsure how to test, so:
[NO NEW TESTS NEEDED]

Signed-off-by: Ashley Cui <acui@redhat.com>
2024-04-26 12:31:42 -04:00
Brent Baude
d2c1de5993 Add krun support to podman machine
This PR adds libkrun support to podman machine.  This is an experimental feature and should not be marketed yet.  Before we unmark the experimental status on this function, we will need to have full CI support and a full podman point release has pased.

This work relies on the fact that vfkit and libkrun share a reasonably (if not perfectly) same API.  The --log-level debug option will not show a GUI screen for boots as krun is not capable of this.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-04-26 08:58:38 -05:00
findnature
abbfdb3622 Merge branch 'containers:main' into main 2024-04-26 10:07:05 +08:00
Matt Heon
30e2c923d6 Add the ability to automount images as volumes via play
Effectively, this is an ability to take an image already pulled
to the system, and automatically mount it into one or more
containers defined in Kubernetes YAML accepted by `podman play`.

Requirements:
- The image must already exist in storage.
- The image must have at least 1 volume directive.
- The path given by the volume directive will be mounted from the
  image into the container. For example, an image with a volume
  at `/test/test_dir` will have `/test/test_dir` in the image
  mounted to `/test/test_dir` in the container.
- Multiple images can be specified. If multiple images have a
  volume at a specific path, the last image specified trumps.
- The images are always mounted read-only.
- Images to mount are defined in the annotation
  "io.podman.annotations.kube.image.automount/$ctrname" as a
  semicolon-separated list. They are mounted into a single
  container in the pod, not the whole pod.

As we're using a nonstandard annotation, this is Podman only, any
Kubernetes install will just ignore this.

Underneath, this compiles down to an image volume
(`podman run --mount type=image,...`) with subpaths to specify
what bits we want to mount into the container.

Signed-off-by: Matt Heon <mheon@redhat.com>
2024-04-25 14:12:27 -04:00
Matt Heon
693ae0ebc6 Add support for image volume subpaths
Image volumes (the `--mount type=image,...` kind, not the
`podman volume create --driver image ...` kind - it's strange
that we have two) are needed for our automount scheme, but the
request is that we mount only specific subpaths from the image
into the container. To do that, we need image volume subpath
support. Not that difficult code-wise, mostly just plumbing.

Also, add support to the CLI; not strictly necessary, but it
doesn't hurt anything and will make testing easier.

Signed-off-by: Matt Heon <mheon@redhat.com>
2024-04-25 14:12:27 -04:00
findnature
c681df35c0 chore: fix function names in comment
Signed-off-by: findnature <cricis@aliyun.com>
2024-04-24 12:07:38 +08:00
Paul Holzinger
83dbbc3a51 Replace golang.org/x/exp/slices with slices from std
Use "slices" from the standard library, this package was added in go
1.21 so we can use it now.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-04-23 11:16:40 +02:00
openshift-merge-bot[bot]
c2cadfb5c5 Merge pull request #22322 from mheon/update_the_config
Make `podman update` changes persistent
2024-04-22 07:50:48 +00:00