745 Commits

Author SHA1 Message Date
0b861350c2 machine: add sparse file writer
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2024-02-20 15:57:24 +01:00
09095acf2b machine: Add ConnectionInfo to MachineConfig
Adds `ConnectionInfo()` to the `MachineConfig` and fills out
`InspectInfo` accordingly. Additionally fixes the "inspect with go format" test.

Changes `ConfigPath` to `ConfigDir` to better represent the
output.

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2024-02-20 09:08:11 -05:00
ec68f07c04 Fix Lint on Windows and enable the job
[NO NEW TESTS NEEDED] Purely refactoring

Signed-off-by: Matt Heon <mheon@redhat.com>
2024-02-20 08:06:18 -05:00
66f39eee5e machine: Remove unnecessary TODOs
Remove TODO to swap `Rootful` in Inspect with `HostUser`

It is unnecessary to remove the vfkit logfile in the provider-specific Remove function. Vfkit is fed the default logfile provided by mc.LogFile which is removed by the generic Remove function.

Removes TODO regarding moving the location of Stop. False TODO.

[NO NEW TESTS NEEDED]

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2024-02-19 19:51:49 -05:00
4f13b836bf Codespell code
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-02-19 15:23:56 -05:00
49400ecce1 Extract waitForGvProxy into shared utility function
Signed-off-by: Arthur Sengileyev <arthur.sengileyev@gmail.com>
2024-02-19 18:00:00 +02:00
89587a5d59 Merge pull request #21638 from ashley-cui/buildtag
Build tag out QEMU for Darwin
2024-02-19 13:31:58 +00:00
630bfbfdbd Merge pull request #21686 from arixmkii/qemu-machine-5-bugfixes
Improve cross platform support in QEMU machine sources
2024-02-18 23:27:12 +00:00
10d748f584 Introduce Podman machine reset
Podman machine reset is a new command that will "reset" your podman
machine environment.  Reset is defined as:

* Stop and Remove all VMs
* Remove the following directories:
    - configuration dir i.e. ~/.config/containers/podman/machine/qemu
    - data dir i.e. ~/.local/.share/containers/podman/machine/qemu

When deleting, if errors are encountered, they will be batched and spit
out at the end.  Podman will try to proceed even in error in doing what
it was told.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-02-18 08:43:12 -06:00
fbb4d5dca6 Merge pull request #21692 from Luap99/machine-cleanup
machine init: validate machine name and username
2024-02-17 12:33:23 +00:00
3b3423230c Merge pull request #21666 from n1hility/reenable-wsl-tests
Reenable wsl tests
2024-02-17 12:27:52 +00:00
f036476cfa fix usermode test
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2024-02-16 09:17:29 -06:00
2846027dc6 machine init: validate machine name and username
Validate the names with our name regex that we also use for
containers/pods. While we technically do not need to be that strict, I
think it makes sense to match containers. The most important bit of this
validation is that we exclude the use of / and \ which breaks all our
file paths as we just use this in the name an when machine write the
file it ends up being in a subdir which breaks the reading side. Also
other special characters could cause trouble for the URL parsing in the
machine connection URL.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-02-16 15:58:39 +01:00
30a18fc02d pkg/machine: make only one AddConnection() call
This function has to read/write the connections file as such it should
only ever be called once otherwise we read/write the same file twice
which makes no sense. Also cleanup the fucntion a bit and make it
private as there are no external callers.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-02-16 14:58:17 +01:00
d60757cca6 pkg/machine: cleanup MakeSSHURL
Remove unnecessary type redirection and just make it a normal function.
Also unexport it and move the test as it does not need to be public and
remove the default value assignments from the struct.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-02-16 14:41:14 +01:00
e0a7668547 Improve cross platform support in QEMU machine sources
Signed-off-by: Arthur Sengileyev <arthur.sengileyev@gmail.com>
2024-02-16 12:49:54 +02:00
1f64ae10f6 Prune FCOS related code
Given the switch to pulling oci artifacts for podman, we no longer need
a fair bit of fedora coreos code for automatically downloading images.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-02-15 21:05:17 -06:00
4fffa78eec Manually discover wsl.exe location
Works around a problem where recent Windows updates do not always redirect the
system wsl to the app store wsl version correctly.

Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2024-02-15 16:31:10 -06:00
5fc351a67a Merge pull request #21668 from Luap99/machine-pull-interrupt
machine: ocipull do not error if downloaddir exists
2024-02-15 21:35:54 +00:00
a9401deadd Build tag out QEMU for Darwin
Macs no longer support QEMU as a provider, build tag it out.

Signed-off-by: Ashley Cui <acui@redhat.com>
2024-02-15 15:53:06 -05:00
bed619ca3d Merge pull request #21664 from n1hility/wsl-fix-conflict
Fixes VM name conflict checking with WSL
2024-02-15 20:24:22 +00:00
d221e0b00a Remove log-level from runSystemCommand since wsl does not support it
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2024-02-15 11:54:46 -06:00
9ee17d4222 machine/qemu: use extra gvproxy socket
Right now the code used the same socket for gvproxy and the qemu qmp
socket, this was racy and no correct as the later overwrote the former.
The correct thing is to use to separate socket paths, just use the
GVProxySocket() helper like applehv does.

[NO NEW TESTS NEEDED]

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-02-15 16:25:38 +01:00
bcec7e6279 machine: ocipull do not error if downloaddir exists
If users cancel the image download with CTRL-C for example then the
blob dir will stay around. The next time we run the download we should
just start the download again and not complain about the existing
directory.

[NO NEW TESTS NEEDED]

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-02-15 15:08:52 +01:00
144e420bb9 Add testcase for WSL dist conflicts
Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-02-14 15:36:08 -06:00
d23dd35dc1 Correct VM existance check on WSL
Replaces GetHyperVisorVMs() with Exists() to better abstract the underlying
use-case and slightly imrpove efficiency.

Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2024-02-14 15:27:56 -06:00
9abc042320 Fix small bug in ocipull
This PR fixes a small bug in pulling disk artifacts where the machine os
was accidently being set to GOOS instead of "linux".  Also removed the
manifest type verification because it served no purpose.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-02-14 12:37:18 -06:00
760fc1e296 Merge pull request #21646 from jakecorrenti/set-guard
machine: `machine set` only in `Stopped` state
2024-02-14 12:33:11 +00:00
3d1f98e2f6 Merge pull request #21644 from baude/wslremovepanic
Replace panic with no-op
2024-02-14 09:40:00 +00:00
3de467d9f8 machine: Re-enable USBs check for wsl machine set
Re-enable USBs check in wsl `SetProviderAttrs` function to prevent the
user trying to set USB settings which isn't supported.

Additionally removes a TODO in wsl's `CreateVM` function to check if the
`opts.USBs` length is greater than 0. This check is done in a more
generic way higher up the stack.

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2024-02-13 16:50:34 -05:00
0e9d867555 machine: machine set only when machine's stopped
Requires that the specified machine's state is `define.Stopped` in order
to set settings.

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2024-02-13 16:50:22 -05:00
f9bc9a85bd Replace panic with no-op
Instead of panic'ing for provider.MountType(), we return the "Unknown"
voluem type

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-02-13 14:59:07 -06:00
001824b9f3 Windows uses USERPROFILE not HOME
When dealing with environment variables that set $HOME, we do not get
the desired result.  Windows will honor USERPROFILE.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-02-13 13:20:06 -06:00
c88c689584 Merge pull request #21602 from baude/ociartdisk
Allow podman machine to download from oci registry
2024-02-13 12:51:28 +00:00
66e292ebb9 Fix build on Main
Signed-off-by: Matt Heon <mheon@redhat.com>
2024-02-12 18:02:07 -05:00
fcd69c997e Merge pull request #21542 from jakecorrenti/bump-gvproxy
Enable passing logfile to gvproxy
2024-02-12 21:49:41 +00:00
2430fc71a0 Allow podman machine to download from oci registry
this pr represents a shift in how we download podman machine images.
these images will now be stored in oci registry and will replace the
default method of downloading an image.  you can still use a reference
to a disk image as a path or url too with the --image-path switch.

the final registry and location of the images has not been determined;
and will need to be updated in podman as well.

i dont think we need to allow --image-path to accept a registry/image
for the podman 5.0 release.  i do think there will be demand for this.

upgrades also need to be plumbed.  for example, updating from an oci
registry.

once we make decisions on final image locations/registrties as well as
some behaviors of init and the oci pull, we must update the machine-init
documentation.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-02-12 15:19:34 -06:00
f7f4d1064d Fix the build on main
[NO NEW TESTS NEEDED]

Signed-off-by: Matt Heon <mheon@redhat.com>
2024-02-12 14:34:46 -05:00
49aba43234 Merge pull request #21573 from baude/nofail
Don't panic on podman4 machine configs
2024-02-12 18:10:55 +00:00
c524da252e Merge pull request #21597 from n1hility/wsl-refactor
Complete WSL implementation in Podman 5
2024-02-12 18:05:45 +00:00
f8847ea047 Improve comments on waitOnProcess
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2024-02-12 09:17:56 -06:00
d3328d4f32 Don't panic on podman4 machine configs
we should not panic podman when it has to deal with a podman4 machine
config.  instead, we throw a soft error for `machine ls` and in all
other cases, we throw a hard error stating that the machine config is
incompatible.

a future PR will provide instructions on how to recover from this.
current idea is something like `podman machine reset` which blows
everything away machine-wise.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-02-12 09:10:46 -06:00
6d107a26fb Merge pull request #21604 from baude/springclean
Minor cleanup from podman 4
2024-02-12 09:06:34 +00:00
bb7d8fdc41 Workaround connection hangups in start/stop racing
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2024-02-11 17:04:15 -06:00
09b86e26d1 Improve robustness of pipe checks
Improve error reporting on ssh readiness check

Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2024-02-11 17:04:09 -06:00
487219d809 Complete WSL implementation, refactor a few areas
Also addresses a number of issues:
- StopHostNetworking isn't plumbed, win-sshproxy leaks on hyperv
- Wait api and print output doesn't work properly on Windows
- API forwarding doesn't work on WSL
- Terminal corruption with after start/stop on Windows
- Gvproxy is forcefully killed vs gracefully quit
- Switching rootful/rootless does not update /var/run/docker.sock on the guest
- File already closed error on init
- HyperV backend is publishing Unix sockets when it should be named pipes
- User-mode networking doesn't always work
- Stop state outside of lock boundaries
- WSL blocks parallel machined (should be supported)

[NO NEW TESTS NEEDED]

Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2024-02-11 12:58:11 -06:00
d7cb66492b wsl - wip
Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-02-11 12:58:11 -06:00
e74d268bf2 Minor cleanup from podman 4
This PR is only a few cleanup items where code is no longer used.  More
to come I'm sure

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-02-11 09:29:13 -06:00
2a61998f07 Fail if vm exists in hyperv already
Fix a bug where if a vm exists, created by some other process/user, and
you attempt to make a podman machine with the same name.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-02-10 14:49:34 -06:00
4ff00f46b2 Merge pull request #21591 from l0rd/crc-copysparse-vendoring
Get CopySparse from github.com/crc-org/crc/
2024-02-09 20:44:41 +00:00