Commit Graph

794 Commits

Author SHA1 Message Date
Chris Evich
457c64564a Temp. disable PM basic Volume ops test
Issue 23296

Signed-off-by: Chris Evich <cevich@redhat.com>
2024-08-01 15:01:46 -04:00
openshift-merge-bot[bot]
2015137eee Merge pull request #23367 from rhatdan/codespell
Run codespell on source
2024-07-23 23:11:32 +00:00
Arthur Sengileyev
71d6e2fbaf Add utility to convert VMFile to URL for UNIX sockets
This adds generic utility to convert file system path into URL structure.
Instead of string manipulation it uses URL parsing and building routines.
Appending absolute path to `unix:///` URL out of the box correctly
handles URL format on Windows platform, where filepath should be prepended
by additional `/` before drive letter.

Signed-off-by: Arthur Sengileyev <arthur.sengileyev@gmail.com>
2024-07-23 16:41:24 +03:00
Daniel J Walsh
7768cf235e Run codespell on source
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-07-23 07:28:23 -04:00
openshift-merge-bot[bot]
003527fedc Merge pull request #23254 from arixmkii/disable-mounts
Implement disable default mounts via command line
2024-07-21 10:49:17 +00:00
Paul Holzinger
f630eebcfa pkg/machine/compression: skip decompress bar for empty file
When the file is empty it is possible our code panics as bar.ProxyReader
returns nil when the bar is finished which is the case for 0 size as it
doesn't have to read anything from there. However as this happens on
different goroutines it is race and most of the time still works.

To fix this simply skip the progress bar setup for empty files.

While at it fix the deprecated argument in the tests.

Fixes #23281

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-07-18 13:23:00 +02:00
openshift-merge-bot[bot]
e225cae781 Merge pull request #23145 from afbjorklund/remove-machine-volume-driver
Remove the unused machine volume-driver
2024-07-15 20:36:19 +00:00
Arthur Sengileyev
d26f0ca90f Implement disable default mounts via command line
Signed-off-by: Arthur Sengileyev <arthur.sengileyev@gmail.com>
2024-07-15 15:27:19 +03:00
openshift-merge-bot[bot]
dad2d17e1c Merge pull request #23223 from baude/libkrundoc
add libkrun test docs
2024-07-09 14:45:51 +00:00
Brent Baude
6f6e0e7126 add libkrun test docs
add how to run the machine tests on macos with libkrun to the quick test readme.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-07-09 08:54:09 -05:00
Paul Holzinger
336c45f68e pkg/machine/e2e: run debug command only for macos
The commands only make sense on macos so do not clutter the logs on
linux/windows with the output.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-07-09 13:14:42 +02:00
Paul Holzinger
5e3d821814 pkg/machine/e2e: print tests timings at the end
Makes it easier to see which tests are slow.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-07-05 15:28:33 +02:00
Paul Holzinger
527c0f0bfa pkg/machine/e2e: run debug commands after init
To debug the slow machine init command. Let's see the disk image size.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-07-05 15:28:33 +02:00
Paul Holzinger
ada4e1a8c1 pkg/machine/e2e: improve timeout handling
In case of timeouts actually log the command again and make sure to send
SIGABRT to the process as go will create a useful stack strace where we
can see where things are hanging. It also kill the process unlike the
default Eventually().Should(Exit()) call the leaves the process around.

The output will be captured by default in the log so we just see the
stack trace there.

And while at it bump the timout up to 10 mins, we are hitting hard
flakes in CI where machine init takes longer than 5 mins for unknown
reasons but this seems to be good enough.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-07-05 15:28:33 +02:00
openshift-merge-bot[bot]
3b07ae4557 Merge pull request #23123 from baude/libkruntest
Small fixes for testing libkrun
2024-07-02 13:28:27 +00:00
openshift-merge-bot[bot]
f5d50a68bc Merge pull request #23154 from Luap99/machine-test-connection
pkg/machine/e2e: fix broken cleanup
2024-07-02 12:14:10 +00:00
openshift-merge-bot[bot]
3a41bccf7d Merge pull request #22941 from ashley-cui/machreset
Podman machine resets all providers
2024-07-01 19:24:18 +00:00
Paul Holzinger
3c0176b2d0 pkg/machine/e2e: fix broken cleanup
Currently all podman machine rm errors in AfterEach were ignored.
This means some leaked and caused issues later on, see #22844.

To fix it first rework the logic to only remove machines when needed at
the place were they are created using DeferCleanup(), however
DeferCleanup() does not work well together with AfterEach() as it always
run AfterEach() before DeferCleanup(). As AfterEach() deletes the dir
the podman machine rm call can not be done afterwards.

As such migrate all cleanup to use DeferCleanup() and while I have to
touch this fix the code to remove the per file duplciation and define
the setup/cleanup once in the global scope.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-07-01 14:23:11 +02:00
Paul Holzinger
f84f4a9cce pkg/machine/e2e: use tmp file for connections
On linux and macos the connections are stored under the home dir by
default so it is not a problem there but on windows we first check
the APPDATA env and use this dir as config storage. This has the problem
that it is not cleaned up after each test as such connections might leak
into the following test causing failues there.

Fixes #22844

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-07-01 13:04:03 +02:00
openshift-merge-bot[bot]
94ebb12bcf Merge pull request #23126 from baude/checkmem
Error when machine memory exceeds system memory
2024-07-01 10:05:14 +00:00
Anders F Björklund
fa75599569 Remove the unused machine volume-driver
The driver is now hardcoded again, and there can only be
one type of mounts at a time (which one changes over time)

Revert "Make it possible to select the volume driver"
This reverts commit 6630e5cf66.

Signed-off-by: Anders F Björklund <anders.f.bjorklund@gmail.com>
2024-06-30 20:25:59 +02:00
Brent Baude
786ea01a64 Error when machine memory exceeds system memory
Close loophole that would allow you to assign more memory than the
system has to a podman machine

Fixes: #18206

Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-06-28 10:02:11 -05:00
Christophe Fergeau
0d0418a5bf machine: Always use --log-file with gvproxy
The logs are not verbose if `--debug` is not set, and very useful to
have if gvproxy exits unexpectedly.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
2024-06-28 16:05:21 +02:00
Brent Baude
d2ca2058c6 Small fixes for testing libkrun
This PR is a couple of small fixes so that our CI would be capable of running the machine test suite on the libkrun provider.

RUN-2172

Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-06-27 13:41:39 -05:00
Ashley Cui
069eace84b Podman machine resets all providers
Podman machine reset now removes and resets machines from all providers availabe on the platform.

On windows, if the user is does not have admin privs, machine will only reset WSL, but will emit a warning that it is unable to remove hyperV machines without elevated privs.

Signed-off-by: Ashley Cui <acui@redhat.com>
2024-06-27 13:14:29 -04:00
openshift-merge-bot[bot]
d367d55d33 Merge pull request #23118 from Luap99/machine-flake
apple virtiofs: fix racy mount setup
2024-06-27 15:41:55 +00:00
openshift-merge-bot[bot]
b91d0faf6e Merge pull request #22922 from BlackHole1/improve-windows
refactor(machine,wsl): improve operations of Windows API
2024-06-27 12:49:35 +00:00
Paul Holzinger
fdb736d282 apple virtiofs: fix racy mount setup
One problem on FCOS is that the root directory is immutable, as such in
order to mount arbitrary paths from the host we must make it mutable
again and create these dir on boot in order to be able to mount there.

The current logic was racy as it used one unit for each path and they
all did chattr -i /; mkdir -p $path; chattr -i / and systemd can run
these units in parallel. That means it was possible for another unit to
make / immutable before the unit could do the mkdir. I pointed this out
on the original PR[1] but we never followed up on it...

Now this here changes several things. First have one unit that does the
chattr -i / (immutable-root-off.service), it is hooked into
remote-fs-pre.target which means it is executed before the network
mounts (virtiofs) are done.

Then we have another unit that does chattr +i /
(immutable-root-on.service) which turn the immutable root back on after
remote-fs.target which means all mount are done at this point.

Additionally the automount unit is removed because it does not add any
value for us and it was borken anyway as it used the virtiofs tag as
path so systemd just ignored it.

[1] https://github.com/containers/podman/pull/20612#discussion_r1384846241

Fixes #22569

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-06-27 14:24:07 +02:00
Paul Holzinger
7562f4ccdb pkg/machine/apple: machine stop timeout
The current timeout was not long enough. Systemd default is 90s so we
should wait for at least that long. Also it really doesn't make sense to
throw an error we saying we failed waiting for stop. We should hard
terminate the VM in case a graceful shutdown did not happen.

Fixes #22515

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-06-25 15:54:13 +02:00
openshift-merge-bot[bot]
0563fb4217 Merge pull request #22920 from cgwalters/virtiofsd-machine
machine/linux: Switch to virtiofs by default
2024-06-24 17:58:08 +00:00
Ashley Cui
4dc98e3a5a pkg/machine/e2e: Remove unnecessary copy of machine image.
Stop copying the pre-pulled uncompressed machine disk into the individual test dir. The machine pull code already makes a copy of the disk into the test's HOMEDIR/.local/share/containers/podman/machine, and works off that copy.

Before the change: TESTDIR/<image> is copied to TESTDIR/podman_test/<image> by the test, and then podman machine copies the image to TESTDIR/podman_test/.local/share/containers/podman/machine/provider/<image>

After the change: TESTDIR/<image> is copied to TESTDIR/podman_test/.local/share/containers/podman/machine/provider/<image> by podman machine

The image that is actually run is at TESTDIR/podman_test/.local/share/containers/podman/machine/provider/<image> in both instances.

Signed-off-by: Ashley Cui <acui@redhat.com>
2024-06-21 12:54:24 -04:00
Paul Holzinger
5c1e5cd026 pkg/machine/wsl: force terminate wsl instance
We do a soft stop via systemd to allow graceful shutdown behavior.
Hoewever for unknown reason we are hitting such a case in CI right now.
Regardless of the CI issue we should always to the hard terminate in
such case so only log the timeout as warning.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-06-17 17:52:01 +02:00
Paul Holzinger
bd906cb314 pkg/machine/wsl: wrap command errors
First of some commands ignored cmd.Wait() error which means it was
impossible to notice any command errors. And others only returned
the wait error as it which when a command fails is just
`exit status <code>` which is not helpful at all.

This commit should add proper error wrapping with stderr to get useful
strings back hopefully.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-06-17 17:46:23 +02:00
openshift-merge-bot[bot]
009a2441de Merge pull request #22759 from slp/krun-debug
Enable libkrun provider to open a debug console
2024-06-12 06:30:04 +00:00
Kevin Cui
0c587f0246 refactor(machine,wsl): improve operations of Windows API
1. Prefer using the built-in functions of `golang.org/x/sys/windows` rather than using `syscall` to directly call system APIs
2. Reduce bitwise operations to improve code maintainability
3. Minimize defining your own Flags, and prioritize using those already defined in `golang.org/x/sys/windows`

Signed-off-by: Kevin Cui <bh@bugs.cc>
2024-06-11 09:44:43 +08:00
Paul Holzinger
fa4f11facc update golangci-lint to v1.59.1
Includes fixes for new lint warnings from unparam and usestdlibvars.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-06-10 14:57:45 +02:00
Colin Walters
4b29c9dd73 machine/linux: Switch to virtiofs by default
Switch to using virtiofs by default, and delete the 9p code.
This is structured as a separate patch to make it easier
to revert if need be.

Signed-off-by: Colin Walters <walters@verbum.org>
2024-06-07 10:03:06 -04:00
Colin Walters
bf541c6740 machine/linux: Support virtiofs mounts (retain 9p default)
I'm hitting a bug with 9p when trying to transfer large files.
In RHEL at least 9p isn't supported because it's known to have a
lot of design flaws; virtiofsd is the supported and recommended
way to share files between a host and guest.

Add a new hidden `PODMAN_MACHINE_VIRTFS` environment
variable  that can be set to `virtiofs` to switch to virtiofsd.

Signed-off-by: Colin Walters <walters@verbum.org>
2024-06-07 10:03:06 -04:00
Colin Walters
406f130590 machine/linux: Use memory-backend-memfd by default
This is prep for using virtiofsd; it has no real
impact otherwise.

Signed-off-by: Colin Walters <walters@verbum.org>
2024-06-07 10:03:06 -04:00
Sergio Lopez
550cb07fc0 Enable libkrun provider to open a debug console
When running with "log-level=debug" and libkrun as machine provider,
spawn a Terminal to execute "krunkit" to enable users to have full
access to the VMs console for debugging purposes.

Users obtain an interactive, text console with scrollback. It's possible
to interact with both the kernel and GRUB2. To obtain even additional
debugging information, users can add "console=hvc0" to the linux kernel
command line through GRUB2 (it may be worth considering extending the
initial configuration of the VM to add that argument by default).

Signed-off-by: Sergio Lopez <slp@redhat.com>
2024-06-06 15:20:56 +02: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
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]
87bd77538e Merge pull request #22587 from gmpify/main
Fix updating connection when SSH port conflict happens
2024-05-14 17:30:26 +00: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
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
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