Commit Graph

528 Commits

Author SHA1 Message Date
Christophe Fergeau 6c2a0196a9 machine: usb: Fix 'passtrough' typo
[NO NEW TESTS NEEDED]

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
2023-12-08 12:24:39 +01:00
Jason T. Greene 98df5b3978 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-06 14:46:12 -06:00
Chris Evich 2d46d05373
Implement bare-metal Mac M1 podman-machine testing
Setup and execute podman machine testing on bare-metal M1 Macs
using a pool of shared and semi-persistent hosts.  Automated
and manual processes outside this repository are responsible
for providing and maintaining all hosts.  Ref.
https://github.com/containers/automation/tree/main/mac_pw_pool

Update the `localmachine` make target to standardize execution
across platforms.  Update/simplify podman-machine e2e README to
reflect current reality.

Warning: This CI setup and supporting infrastructure was developed
in favor of expediency vs reliability and stability.  There are
many possible failure-modes (known and unknown) which may lead
to undefined test behaviors.  Future work may address some of
these as they are encountered or discovered.

[NO NEW TESTS NEEDED]

Signed-off-by: Chris Evich <cevich@redhat.com>
2023-12-04 10:40:13 -05:00
openshift-merge-bot[bot] cbb3e4d20f
Merge pull request #19518 from arixmkii/qemu_win_settings_qemu64
Change default QEMU CPU level to `qemu64` on Windows amd64
2023-12-04 13:39:53 +00:00
openshift-merge-bot[bot] d3d9293b2a
Merge pull request #20831 from Luap99/remote-exec-rm
fix podman-remote exec regression with v4.8
2023-12-01 09:59:21 +00:00
Ashley Cui 42ea211211 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-29 16:28:59 -05:00
Paul Holzinger 93bcd2a25d
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-11-29 13:22:46 +01:00
openshift-merge-bot[bot] 5ab4513b26
Merge pull request #20798 from n1hility/fix-user-mode-disable
Fix wsl.conf generation when user-mode-networking is disabled
2023-11-29 01:20:12 +00:00
Black-Hole1 a2bf8c6d50
refactor(machine): improve machine marker value
1. Set the marker to the current virtual machine type instead of fixed qemu.
2. Update containers/common

[NO NEW TESTS NEEDED]

Signed-off-by: Black-Hole1 <bh@bugs.cc>
2023-11-28 21:47:12 +08:00
Jason T. Greene 8e2d5e1912 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-27 11:49:03 -06:00
openshift-merge-bot[bot] d1236f46fc
Merge pull request #20750 from baude/removeversionhack
podman machine image from oci updates
2023-11-27 14:10:33 +00:00
openshift-merge-bot[bot] 6c29a870f7
Merge pull request #20528 from giuseppe/consolidate-xdg-runtime-code
Consolidate XDG_RUNTIME code
2023-11-24 09:27:30 +00:00
Giuseppe Scrivano cd21973f47
pkg/util: use code from c/storage
[NO NEW TESTS NEEDED] no new functionalities are added

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2023-11-23 21:36:42 +01:00
Brent Baude da9349ce42 podman machine image from oci updates
It makes more sense to key off the hypervisor/provider when pulling
disks from oci registries.

i.e. quay.io/libpod/podman-machine-images:5.0-qemu

Also, now that we are in 5.0-dev, I also removed the overrides always
making the podman version 4.6.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-11-22 13:21:24 -06:00
openshift-merge-bot[bot] b7ca114078
Merge pull request #18976 from jakecorrenti/fully-deprecate-machinevmv1-monitorv1
No longer support deprecated legacy QEMU machine structures
2023-11-22 13:43:12 +00:00
Arthur Sengileyev e85cedf43f Use configured timeout in list_test.go
Signed-off-by: Arthur Sengileyev <arthur.sengileyev@gmail.com>
2023-11-22 09:28:56 +02:00
Paul Holzinger 48cf44f233 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 13:31:16 -05:00
Jake Correnti 2b95700bca No longer support deprecated legacy QEMU machine structures
Removes the `MachineVMV1` and `MonitorV1` structures that have been
deprecated for a long enough period of time that it makes sense to no
longer support them.

Results in the removal of deprecated `getSocketAndPid` as well.

The migration code was added in commit
`6e0e1cbddd5e1c5dff51215ad2b41a99d890fad8` and made it into release `v4.1.0`

[NO NEW TESTS NEEDED]

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-11-21 12:04:13 -05: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
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
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] 7dd33b307d
Merge pull request #20540 from victortoso/usb-host-passthrough
qemu: add usb host passthrough
2023-11-13 16:03:30 +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
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
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
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
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] 48b8b372a6
Merge pull request #20417 from baude/checkforsystemconnection
check system connections before machine init
2023-11-02 21:49:33 +00:00
Brent Baude 613f50c7ad check system connections before machine init
we should exit early if a system connection name exists with the name of
the proposed podman machine (i.e. podman-machine-default).

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-11-02 10:31:49 -05:00
Brent Baude ea4775ec9e Consume OCI images for machine image
allow podman machine to extract its disk image from an oci registry or
oci-dir locally.  for now, the image must be relatively inflexible. it
must have 1 layer.  the layer must possess one image. so a dockerfile
like:

FROM scratch
COPY ./myimage.xz /myimage.xz

when using an oci dir, the directory structure must adhere to the
typical directory structure of a an oci image (with one layer).

── blobs
│   └── sha256
│       ├── 53735773573b3853bb1cae16dd21061beb416239ceb78d4ef1f2a0609f7e843b
│       ├── 80577866ec13c041693e17de61444b4696137623803c3d87f92e4f28a1f4e87b
│       └── af57637ac1ab12f833e3cfa886027cc9834a755a437d0e1cf48b5d4778af7a4e
├── index.json
└── oci-layout

in order to identify this new input, you must use a transport/schema to
differentiate from current podman machine init --image-path behavior. we
will support `oci-dir://` and `docker://` as transports.

when using the docker transport, you can only use an empty transport for
input.  for example, `podman machine init --image-path docker://`.  A
fully quailified image name will be supported in the next iteration.

the transport absent anything means, i want to pull the default fcos
image stored in a registry.  podman will determine its current version
and then look for its correlating manifest.  in this default use case,
it would look for:

quay.io/libpod/podman-machine-images:<version>

that manifest would then point to specific images that contain the
correct arch and provider disk image. i.e.

quay.io/libpod/podman-machine-images:4.6-qcow2

this PR does not enable something like
docker://quay.io/mycorp/myimage:latest yet.

names, addresses, andf schema/transports are all subject to change. the
plan is to keep this all undocumented until things firm up.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-11-02 10:23:14 -05:00
Jake Correnti ce9c1b9b86 Refactor machine socket mapping
Refactors machine socket mapping to prevent using similar/the same code
paths. Moves the shared code to `pkg/machine/sockets.go`.

[NO NEW TESTS NEEDED]

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-11-01 23:09:17 -04:00
Ashley Cui f6ec210f3b AppleHV: Fix machine rm error message
Fix machine not found error message on rm to be consistent with qemu.

Signed-off-by: Ashley Cui <acui@redhat.com>
2023-11-01 15:02:30 -04:00
Matt Heon 7153124f97 Log gvproxy and server9 to file on log-level=debug
Logging to os.Stdout and os.Stderr does not seem to work in
Powershell. I am not entirely certain why.

Logfiles are the best alternative I can think of.

Signed-off-by: Matt Heon <mheon@redhat.com>
2023-10-31 10:14:06 -04:00
Matt Heon d9c388e2fe Change to using gopsutil for cross-OS process ops
Instead of trying to write out own code to do basic process
operations (e.g. checking if a PID is still running in a multi-OS
friendly manner), use shirou/gopsutil, a multi-platform library
that should abstract all the complexity away. Unlike our previous
approach on Windows, this one should actually work.

Signed-off-by: Matt Heon <mheon@redhat.com>
2023-10-31 10:14:06 -04:00
Matthew Heon 642fa98976 Initial addition of 9p code to Podman
This includes two new hidden commands: a 9p server,
`podman machine server9p`, and a 9p client,
`podman machine client9p` with `server9p` currently only
configured to run on Windows and serve 9p via HyperV vsock, and
`client9p` only configured to run on Linux. The server is run by
`podman machine start` and has the same lifespan as gvproxy
(waits for the gvproxy PID to die before shutting down). The
client is run inside the VM, also by `podman machine start`, and
mounts uses kernel 9p mount code to complete the mount. It's
unfortunately not possible to use mount directly without the
wrapper; we need to set up the vsock and pass it to mount as an
FD.

In theory this can be generalized so that the server can run
anywhere and over almost any transport, but I haven't done this
here as I don't think we have a usecase other than HyperV right
now.

[NO NEW TESTS NEEDED] This requires changes to Podman in the VM,
so we need to wait until a build with this lands in FCOS to test.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2023-10-31 10:14:02 -04:00
Brent Baude 95a5ad258b Small fixes for wacko CI environments
In the unusual case where the `runtimeDir` is not already created, we
should do so on `machine init`.

When starting gvproxy from podman, we now ensure it is running (for
applehv) but waiting for the unixgram socket to appear in the filesystem
before moving on.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-10-27 10:33:39 -05:00
Alan Cha 1850670f1e
Fix typo
Signed-off-by: Alan Cha <Alan.cha1@ibm.com>
2023-10-23 23:21:55 -04:00
openshift-ci[bot] 3661c87d3c
Merge pull request #20412 from ashley-cui/lastup
hyperV: Update lastUp time
2023-10-21 18:05:48 +00:00
Ashley Cui d6f44d956d hyperV: Update lastUp time
LastUp now correctly reports the lastUp time for podman machine on
hyperv, for both inspect and list.

Signed-off-by: Ashley Cui <acui@redhat.com>
2023-10-20 15:00:48 -04:00
Paul Holzinger 64f43fed4d
lint: fix warnings found by inamedparam
Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-10-20 16:27:41 +02:00