Commit graph

5743 commits

Author SHA1 Message Date
Giuseppe Scrivano
b2d22610b5
system: enhance check for re-exec into rootless userns
Previously, the setup only checked for the CAP_SYS_ADMIN capability,
which could be not enough with containerized Podman where
CAP_SYS_ADMIN might be set for an unprivileged user.

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

[NO NEW TESTS NEEDED] needs containerized Podman

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
(cherry picked from commit 41a6b992aa)
2024-01-30 15:57:56 +01:00
Urvashi Mohnani
fde6029dcb Fix push endpoint stream
The push binding endpoint wasn't actually writing the
output data to the stream when quiet=false and there
was no push error.
Do not hard code quiet=true anymore, take into account the
user input.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2024-01-22 15:01:13 -05:00
Urvashi Mohnani
25e0f22c25 farm build: push built images to registry
Update farm build to directly push images to a registry
after all the builds are complete on all the nodes.
A manifest list is then created locally and pushed to
the registry as well.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2024-01-22 09:56:34 -05:00
openshift-merge-bot[bot]
9d375e4cd0
Merge pull request #21276 from n1hility/net-recovery-49
[v4.9] Add a net health recovery service to qemu machines
2024-01-18 08:20:02 +00:00
Jason T. Greene
6c173c0cef Add a net health recovery service to Qemu machines
There is a network stability issue in qemu + virtio, affecting
some users after long periods of usage, which can lead to
suspended queue delivery. Until the issue is resolved, add a
temporary recovery service which restarts networking when host
communication becomes inoperable.

[NO NEW TESTS NEEDED]

Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2024-01-17 19:48:56 -06:00
Brent Baude
e6792457fb Set up podman machine remote user correctly
The remote user functionality was not quite correct.  This PR breaks out
the accumulation of user descriptions into a separate function.  One
odditiy is ignition must be told to NOT create the core user (or it will
by default) by "adding" the core user with a set bool.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-01-17 17:00:55 +00:00
Matt Heon
023a354de7 Remove Libpod special-init conditions
Before this, for some special Podman commands (system reset,
system migrate, system renumber), Podman would create a first
Libpod runtime to do initialization and flag parsing, then stop
that runtime and create an entirely new runtime to perform the
actual task. This is an artifact of the pre-Podman 2.0 days, when
there was almost no indirection between Libpod and the CLI, and
we only used one runtime because we didn't need a second runtime
for flag parsing and basic init.

This system was clunky, and apparently, very buggy. When we
migrated to SQLite, some logic was introduced where we'd select a
different database location based on whether or not Libpod's
StaticDir was manually set - which differed between the first
invocation of Libpod and the second. So we'd get a different
database for some commands (like `system reset`) and they would
not be able to see existing containers, meaning they would not
function properly.

The immediate cause is obviously the SQLite behavior, but I'm
certain there's a lot more baggage hiding behind this multiple
Libpod runtime logic, so let's just refactor it out. It doesn't
make sense, and complicates the code. Instead, make Reset,
Renumber, and Migrate methods of the libpod Runtime. For Reset
and Renumber, we can shut the runtime down afterwards to achieve
the desired effect (no valid runtime after). Then pipe all of
them through the ContainerEngine so cmd/podman can access them.

As part of this, remove the SystemEngine part of pkg/domain. This
was supposed to encompass these "special" commands, but every
command in SystemEngine is actually a ContainerEngine command.
Reset, Renumber, Migrate - they all need a full Libpod and access
to all containers. There's no point to a separate engine if it
just wraps Libpod in the exact same way as ContainerEngine. This
consolidation saves us a bit more code and complexity.

Signed-off-by: Matt Heon <mheon@redhat.com>

<MH: Fixed cherry-pick conflicts for v4.8 branch>

Signed-off-by: Matt Heon <mheon@redhat.com>
2024-01-15 12:14:17 -05:00
Florent Benoit
fe84d68f1d feat: disable pid max in the podman machine
fix https://github.com/containers/podman-desktop/issues/5282

With FCOS we have a limit of 2048 files
But when launching containers like kind containers, we're reaching
easily the limit.
AFAIK as it's inside a dedicated machine, limit should be max
Limit should be only at the container level.

Signed-off-by: Florent Benoit <fbenoit@redhat.com>
2024-01-10 11:20:39 -05:00
Ashley Cui
c7013425fe Add API forwarding support for HyperV
Provides Docker API client access, allowing compose to work by default
for HyperV. Basically the HyperV equiv of the work done here by #12916.

[NO NEW TESTS NEEDED]

Signed-off-by: Ashley Cui <acui@redhat.com>
2024-01-08 16:26:27 -05:00
Matt Heon
ef7bb994e8 Error on HyperV VM start when gvproxy has failed to start
After the VM has successfully started, check that gvproxy is
still running. If it is not, throw an error and refuse to
complete machine start.

[NO NEW TESTS NEEDED] I don't think we can deliberately trigger a
bad gvproxy start without a bad Podman binary. We could try and
kill gvproxy after it starts but before the machine is booted but
that's very prone to races.

Slightly restructure code so that starting shares happens later
and has its own configuration write - so the VM is still recorded
as running if starting shares fails.

Signed-off-by: Matt Heon <mheon@redhat.com>
2023-12-14 20:54:09 +00:00
Ygal Blum
7750543436
Kube Play - set ReportWriter when building an image
Add test for a specific crash
Update play build test to expect message in stderr

Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
(cherry picked from commit a943be7e8e)
Signed-off-by: Lokesh Mandvekar <lsm5@redhat.com>
2023-12-11 16:05:26 +05:30
Jason T. Greene
1864ea94fb Fix user-mode net init flag on first time install
Previously the WSL user-mode networking distribution was only installed as part
of a change, when it should have been also applied installs. This mean that the
init flag usage only worked after a previous set command.

[NO NEW TESTS NEEDED]

Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2023-12-07 15:14:51 +00:00
openshift-merge-bot[bot]
3f3e19f9f4
Merge pull request #20825 from openshift-cherrypick-robot/cherry-pick-20798-to-v4.8
[v4.8] Fix wsl.conf generation when user-mode-networking is disabled
2023-12-04 14:23:46 +00:00
Paul Holzinger
a8b8dc5706 pkg/bindings: add new APIVersionError error type
When a new API call is added to the bindings we should guard it based on
the version and throw a useful error. Right now an old server that does
not implement a given endpoint would throw a "NOT FOUND" error which is
not good for callers.

Instead implement a custom error type to give a usefule error instead.
This allows bindings users to call errors.As() to know if they call and
to old version.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-12-01 10:00:07 +00:00
Paul Holzinger
86bb91001a fix podman-remote exec regression with v4.8
Commit f48a706abc added a new API endpoint to remove exec session
correctly. And the bindings try to call that endpoint for exec every
time. Now since client and server must not be the same version this
causes a problem if a new 4.8 client calls an older 4.7 server as it has
no idea about such endpoint and throws an ugly error. This is a common
scenario for podman machine setups.

The client does know the server version so it should make sure to not
call such endpoint if the server is older than 4.8.

I added a exec test to the machine tests as this can be reproduced with
podman machine as at the moment at least the VM image does not contain
podman 4.8. And it should at least make sure podman exec keeps working
for podman machine without regressions.

Fixes #20821

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-12-01 10:00:07 +00:00
Ashley Cui
a72c39a534 Fix locking error in WSL machine rm -f
Fixed a bug where `podman machine rm -f` would cause a deadlock when
running with WSL.

The deadlock is caused by the Remove() function calling the Stop()
function after Remove() locks the VM. Stop() also has a lock call, which
fails and deadlocks because Remove() already claimed lock. Fix this by
moving the stop call before the lock

[NO NEW TESTS NEEDED]

Signed-off-by: Ashley Cui <acui@redhat.com>
2023-11-30 14:01:28 +00:00
Daniel J Walsh
a62b81d905 If API calls for kube play --replace, then replace pod
Currently if user specifies podman kube play --replace, the
pod is removed on the client side, not the server side.  If
the API is called with replace=true, the pod was not being removed
and this called the API to fail. This PR removes the pod if it
exists and the caller specifies replace=true.

Fixes: https://github.com/containers/podman/discussions/20705

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-11-29 12:25:54 +00:00
Jason T. Greene
70ba64f4c4 Fix wsl.conf generation when user-mode-networking is disabled
[NO NEW TESTS NEEDED]

Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2023-11-29 01:21:08 +00:00
Paul Holzinger
697e66c784 machine applehv: create better error on start failure
If gvproxy or vfkit exit we can error right away, so while we wait for
the socket to get ready we also keep checking the process status with
wait4() and WNOHANG so it does not block forever.

This is completely untested as I do not have acces to apple machine.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>

<MH: Added no new tests needed to pass CI>
[NO NEW TESTS NEEDED]

Signed-off-by: Matt Heon <mheon@redhat.com>
2023-11-21 22:58:47 +00:00
Brent Baude
d32f61d91b vmtypes names cannot be used as machine names
florent found a bug where he used "applehv" as a machine name.  it turns out when we use a vmtype name, esp. the active type, it really messes up directory structures for configuration and images alike.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-11-17 12:24:21 -06:00
openshift-merge-bot[bot]
638199c495
Merge pull request #20671 from ygalblum/quadlet-uidmap
Quadlet - add support for UID and GID Mapping
2023-11-16 15:40:37 +00:00
Ashley Cui
3d88f614f7 [CI:DOCS] Machine test timeout env var
Introduce MACHINE_TEST_TIMEOUT, which sets the timeout for machine tests, in seconds.

Signed-off-by: Ashley Cui <acui@redhat.com>
2023-11-15 16:00:57 -05:00
Ygal Blum
e35fc92c02 Quadlet - add support for UID and GID Mapping
Support UIDMap, GIDMap, SubUIDMap and SubGIDMap
If any of them are set disregard the deprecated Remap keys
Add tests and man

Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
2023-11-15 12:10:22 +02:00
openshift-merge-bot[bot]
1d49773bb8
Merge pull request #20683 from baude/applehvsshkeys
Avoid empty SSH keys on applehv
2023-11-14 12:57:27 +00:00
Brent Baude
ea89eaa1c1 Avoid empty SSH keys on applehv
[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-11-13 13:07:35 -06:00
Aditya R
33ddd79e26
qemu,parseUSB: minor refactor
Some comments from https://github.com/containers/podman/pull/20540

[NO NEW TESTS NEEDED]

Signed-off-by: Aditya R <arajan@redhat.com>
2023-11-13 22:35:47 +05:30
openshift-merge-bot[bot]
a9a74dada2
Merge pull request #20673 from edsantiago/emergency_ci_fix
(Temporary) Emergency CI fix: quay search is broken
2023-11-13 16:52:57 +00:00
openshift-merge-bot[bot]
b7cfceaeab
Merge pull request #20601 from giuseppe/use-rootless-from-storage
rootless: use functionalities from c/storage
2023-11-13 16:30:58 +00:00
openshift-merge-bot[bot]
7dd33b307d
Merge pull request #20540 from victortoso/usb-host-passthrough
qemu: add usb host passthrough
2023-11-13 16:03:30 +00:00
Ed Santiago
047da19b5f (Temporary) Emergency CI fix: quay search is broken
Someone please revert this once quay search is fixed.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-11-13 06:52:10 -07:00
Giuseppe Scrivano
d636ce8d76
rootless: use functionalities from c/storage
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2023-11-10 22:03:47 +01:00
openshift-merge-bot[bot]
7d107b9892
Merge pull request #19879 from rhatdan/ulimits
Support passing of Ulimits as -1 to mean max
2023-11-10 10:47:43 +00:00
openshift-merge-bot[bot]
79eec47f5f
Merge pull request #20626 from jakecorrenti/ignition-builder
Refactor Ignition configuration for virt providers
2023-11-09 19:54:00 +00:00
Jake Correnti
39d647a2f6 Fix socket mapping socket mapping nits
Fixes nits that were suggested in #20420. The caller of
`ListenAndWaitOnSocket` did not use the value returned by the conn
channel, therefore it was better to just close the conn in the
`ListenAndWaitOnSocket` function instead.

[NO NEW TESTS NEEDED]

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-11-09 10:41:50 -05:00
Victor Toso
c23963d7a8 machine: qemu: add usb host passthrough
QEMU usb-host driver which is the one for passthrough, supports two
options for selecting an USB devices in the host to provide it to the
VM:
 - Bus and Device number the device is plugged
 - Vendor and Product information of the USB devices

    https://qemu-project.gitlab.io/qemu/system/devices/usb.html

This commit allows a user to configure podman machine with either of
options, with new --usb command line option for podman machine init.

Examples
  podman machine init tosovm4 --usb vendor=13d3,product=5406
  podman machine init tosovm3 --usb bus=1,devnum=4 --usb bus=1,devnum=3

This commit also allows a user to change the USBs configured with
--usb command line option for podman machine set.

Note that this commit does not handle host device permissions nor
verify that the USB devices exists.

Signed-off-by: Victor Toso <victortoso@redhat.com>
2023-11-08 23:38:53 +01:00
openshift-merge-bot[bot]
01fd9e906b
Merge pull request #20620 from baude/codecleanup
Automatic code cleanups - JetBrains
2023-11-08 22:14:36 +00:00
Jake Correnti
b2c56365b2 Refactor Ignition configuration for virt providers
Creates a common SetIgnitionFile function in pkg/machine/ignition.go which
creates the new VMFile that will represent the machine's ignition file. It
assigns the VMFile to the provided location.

Creates an IgnitionBuilder type to generate the ignition configuration for a
given virt provider.

[NO NEW TESTS NEEDED]

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-11-08 13:39:34 -05:00
openshift-merge-bot[bot]
6bb2edd215
Merge pull request #20608 from rhatdan/codespell
Run codespell on podman
2023-11-08 08:30:43 +00:00
Brent Baude
78798cab00 Automatic code cleanups - JetBrains
A bunch of cleanups as suggested by linters/etc in JetBrains IDE.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-11-07 14:05:15 -06:00
Brent Baude
a45ba06d02 Refactor key machine objects
In #20538, I was asked to consider refactoring the new OCI pull code
from within the generic machine directory.  This is something I had
tried when originally coding it but it became apparent that a much
larger refactor to prevent circular deps was needed.  Because I did not
want to pollute the initial PR with that refactor, I asked for the PR to
merge first.  This is the refactor that needed to be done.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-11-07 08:30:44 -06:00
openshift-merge-bot[bot]
f47a85f4ff
Merge pull request #20612 from baude/applehvvirtiosfsmounts
applehv: allow virtiofs to mount to /
2023-11-07 12:13:47 +00:00
Brent Baude
d44f71c13d applehv: allow virtiofs to mount to /
FCOS has a security limitation where new directories cannot be added to the root / directory of its filesystem.  This PR uses the work-around discussed in https://github.com/coreos/rpm-ostree/issues/337#issuecomment-1000923022 to temporarily disable the limitation, perform the mkdir, and then re-enable the limitation.

This PR allows mounts on the applehv to actually work.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-11-06 14:29:57 -06:00
Daniel J Walsh
c2de6d34ca
Run codespell on podman
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-11-06 09:23:16 -06:00
openshift-merge-bot[bot]
715451f69b
Merge pull request #20580 from RiRa12621/main
adjust string to use default machine name instead of helper path in helper message
2023-11-06 09:39:39 +00:00
renovate[bot]
942bcf34b8 Update container-device-interface (CDI) to v0.6.2
This updates the container-device-interface dependency to v0.6.2 and renames the import to
tags.cncf.io/container-device-interface to make use of the new vanity URL.

[NO NEW TESTS NEEDED]

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: Evan Lezar <elezar@nvidia.com>
2023-11-04 01:12:06 +01:00
Rick Rackow
375b0cc132
fix: adjust helper string in machine_common
[NO NEW TESTS NEEDED]

Signed-off-by: Rick Rackow <rick.rackow@gmail.com>
2023-11-03 21:24:05 +01:00
Rick Rackow
9e05fb14a4
fix: adjust helper string in machine_common
[NO NEW TESTS NEEDED]

Signed-off-by: Rick Rackow <rick.rackow@gmail.com>
2023-11-03 20:32:20 +01:00
openshift-ci[bot]
5fc7585334
Merge pull request #20420 from jakecorrenti/refactor-socket-mapping
Refactor machine socket mapping
2023-11-03 18:33:54 +00:00
Rick Rackow
b5f854458d
fix: adjust helper string in machine_common
[NO NEW TESTS NEEDED]

Signed-off-by: Rick Rackow <rick.rackow@gmail.com>
2023-11-03 15:42:00 +01:00
openshift-ci[bot]
0904c19422
Merge pull request #20568 from giuseppe/update-c-common
vendor: update containers/common
2023-11-02 22:34:25 +00:00