Commit Graph

306 Commits

Author SHA1 Message Date
Nathan Henrie 6014f26c47
Revert "Resolve symlink path for qemu directory if possible"
This reverts commit 6b6458916e (Resolve
symlink path for qemu directory if possible).

Fully resolving the symlink to qemu solves some issues for
aarch64-darwin nix with regards to finding `edk2-aarch64-code.fd`, but
unfortunately the fully resolved path includes the version number,
making it so that even patch updates break the path to
homebrew-installed qemu files.

Fixes https://github.com/containers/podman/issues/18111

[NO NEW TESTS NEEDED]

Signed-off-by: Nathan Henrie <nate@n8henrie.com>
2023-04-24 10:06:43 -06:00
Brent Baude 8019dc9e60 hyperv: add podman socket mapping
on machine start, create a socket representing the machine's podman
service socket so local (to the host) applications can take advanatge of
it.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-04-19 16:41:34 -05:00
Brent Baude 4b8230119e HyperV: wait on stop
When using podman machine with hyperv, stop was releasing the terminal
back top the user prematurely.  This resulted in users being able to run
subsequent commands while the vm was still stopped.  Commands like
machine stop were prone to failing.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-04-18 08:02:48 -05:00
Brent Baude 3222545ad5 Enabled network over vsock
podman machine with Microsoft HyperV will use hvsock on the guest and
vsock on the guest for its networking.  this pr enables the basics for
this to happen as well as changes to ignition to automatically set this
up with network manager.

the vm binary referenced in this pr is in containers/gvisor-tap-vsock
and will need to be added to distributions.

[NO NEW TESTS NEEDED]
Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-04-17 12:34:37 -05:00
Brent Baude f488d9890c Add support for HVSOCK on hyperv
Windows HyperV uses HVSocks (Windows adaptation of vsock) for
communicating between vms and the host.  Podman machine in Qemu uses a
virtual UDS to signal the host that the machine is booted.  In HyperV,
we can use a HVSOCK for the same purpose.

One of the big aspects of using HVSOCK on Windows is that the HVSOCK
must be entered into the Windows registry.  So now part of init and rm
of a podman machine, entries must be added and removed respectively.
Also duplicates are a no-no.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-04-14 13:53:25 -05:00
Jason T. Greene 3b2b1441ec Use atomic config writing strategy for podman machine config files
Windows: Flush machine config writes before renaming
Windows: Previously this code was changed to improve atomicity by changing
the persitence approach to a two-step process (write + rename).
However, the first-step write operation was not fully flushed,
leading to the possibility of incomplete writes.

[NO NEW TESTS NEEDED]

Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2023-04-10 14:57:49 -05:00
OpenShift Merge Robot ac2efdb862
Merge pull request #17949 from baude/hypervset
implement podman machine set for hyperv
2023-03-28 17:41:40 +02:00
Brent Baude 51d068ecc7 implement podman machine set for hyperv
add the ability to set cpu and processor counts on an existing vm.

Signed-off-by: Brent Baude <bbaude@redhat.com>

[NO NEW TESTS NEEDED]
2023-03-27 16:11:24 -05:00
Brent Baude 518eafaa34 hyperv: lookup machine on local filesystem first
when looking for a machine, look it up locally first to prevent
accidental collision with non-podman machine vms.  in the cast of
`podman machine ls`, only list podman machines found by json files

Enabled remove with force.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-03-27 10:17:06 -05:00
Brent Baude 0dac214f56 basic hypverv machine implementation
with libhvee, we are able to do the basics of podman machine management
on hyperv.  The basic functions like init, rm, stop, and start are all
functional.  Start and stop will periodically throw a benign error
processing the hyperv message being returned from the action.  The error
is described in the todo's below.

notable items:

* no podman commands will work (like ps, images, etc)
* the machine must be initialized with --image-path and fed a custom image.
* disk size is set to 100GB statically.
* the vm joins the default hyperv network which is TCP/IP network based.
* podman machine ssh does not work
* podman machine set does not work
* you can grab the ip address from hyperv and fake a machine connection
  with `podman system connection`.
* when booting, use the hyperv console to know the boot is complete.

TODOs:
* podman machine ssh
* podman machine set
* podman machine rm needs force bool
* disk size in NewMachine is set to 100GB
* podman start needs to wait until fully booted
* establish a boot complete signal from guest
* implement gvproxy like user networking
* fix benign failures in stop/start -> Error: error 2147749890 (FormatMessage failed with: The system cannot find message text for message number 0x%1 in the message file for %2.)

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-03-17 16:02:28 -05:00
Heniker 6363fb08f2 docs: fix cmd `set DOCKER_HOST` suggestion
Signed-off-by: Heniker <Heniker@mail.ru>
2023-03-13 08:11:45 +03:00
Jason T. Greene 0ab4b26147 Fix package restore
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2023-03-02 20:53:38 -06:00
Jordan Christiansen 9ac0d4f1a6 podman machine: Adjust Chrony makestep config
This allows Chrony to update the system time when it has drifted far
from NTP time. By default Chrony only makes slight adjustments, but in
the case where a user's laptop lid has been shut for a while and then
the machine is resumed, the VM system time could be hours or days behind
real time, and it may never catch up if Chrony only makes slight
changes.

[NO NEW TESTS NEEDED]

Fixes #11541

Signed-off-by: Jordan Christiansen <xordspar0@gmail.com>
2023-03-01 19:42:56 -06:00
OpenShift Merge Robot 77504b2582
Merge pull request #17113 from arixmkii/windows-qemu-machine-volume-mounts
Support for Windows paths in the source position of the volume mounts
2023-02-28 12:54:32 +01:00
Brent Baude 43eb35a772 Machine refactor for QEMU/AppleHV
in preparation for adding hyper as a machine option, several common
functions needed to be moved specifically from qemu to a common area in
pkg/machine.  this usually involved functions and variables related to
using fcos as a machine image as well as its compression, artifact, and
image format.

[NO NEW TESTS NEEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-02-22 09:00:24 -06:00
Brent Baude e838ad86b8 machine refactoring preparations for hyperv
before we can support hyperv as a virtualization option for podman
machine, several areas in machine will require cleanup.  this is the
first pass of these changes to keep the review burden low.  changes
include:

  * convert artifact, format (image format) and compression to enums
    with string methods
  * rename Provider interface to VirtProvider
  * change Provider implementation in QEMU to QEMUVirt
  * change Provider implementation in WSL to WSLVirt

as mentioned earlier, there will be several more of these refactoring
PRs because assumptions were made about associations of platforms and
virt providers as well as compression and image formats.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-02-22 08:21:07 -06:00
Brent Baude ebb45b5bdd machine refactoring preparations for hyperv
before we can support hyperv as a virtualization option for podman
machine, several areas in machine will require cleanup.  this is the
first pass of these changes to keep the review burden low.  changes
include:

  * convert artifact, format (image format) and compression to enums
    with string methods
  * rename Provider interface to VirtProvider
  * change Provider implementation in QEMU to QEMUVirt
  * change Provider implementation in WSL to WSLVirt

as mentioned earlier, there will be several more of these refactoring
PRs because assumptions were made about associations of platforms and
virt providers as well as compression and image formats.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-02-20 13:43:49 -06:00
Ashley Cui 9abe8c7853 Introduce podman machine os apply
Podman machine os apply takes a takes a OCI image with container native ostree functionality and rebases the machine os on that image.
Currently, this requires the guest os inside the vm to use rpm-ostree.

When specifying an image, any container transport may be specified. If a
container transport is not specified, OS apply will attempt to search
the local containers-storage for the image, and if it is not found, it
will then attempt to use the Docker transport to pull from a remote
registry.

The architecture of OS apply is as follows:
podman machine os apply ssh's into the machine and calls podman machine os
apply. on the secondary call to podman machine os apply, apply
recognizes that it is inside the machine and does image operations, and
finally calls rpm-ostree rebase.

Tests are written but commented out, due to the chicken-and-egg problem.

Signed-off-by: Ashley Cui <acui@redhat.com>
2023-02-15 14:48:12 -05:00
Erik Sjölund a5ca732256 Fix typos
Software version used
https://github.com/crate-ci/typos/releases/tag/v1.13.10

The binary was downloaded from
https://github.com/crate-ci/typos/releases/download/v1.13.10/typos-v1.13.10-x86_64-unknown-linux-musl.tar.gz

Command that was run:

typos --write-changes docs cmd cni contrib dependencies docs hack libpod pkg utils

False positives were manually removed.
A few marshaling/existant typos were manually fixed.

Signed-off-by: Erik Sjölund <erik.sjolund@gmail.com>
2023-02-11 18:23:24 +01:00
OpenShift Merge Robot c5bfacdf9d
Merge pull request #17027 from n8henrie/issue_17026
Resolve symlink path for qemu directory if possible
2023-02-08 09:16:31 -05:00
OpenShift Merge Robot 4368c587b0
Merge pull request #17342 from mtrmac/mpb
Update to github.com/vbauerster/mpb/v8
2023-02-08 05:52:46 -05:00
Nathan Henrie 6b6458916e Resolve symlink path for qemu directory if possible
Fixes https://github.com/containers/podman/issues/17026
Fixes https://github.com/NixOS/nixpkgs/issues/169118

[NO NEW TESTS NEEDED]

Related: https://github.com/NixOS/nixpkgs/pull/163015
Signed-off-by: Nathan Henrie <nate@n8henrie.com>
2023-02-07 08:57:55 -07:00
Arthur Sengileyev a909e2f2d5 Expose Podman named pipe in Inspect output
Signed-off-by: Arthur Sengileyev <arthur.sengileyev@gmail.com>
2023-02-03 00:05:28 +02:00
Miloslav Trmač be47eeb85c Update from /github.com/vbauerster/mpb/v7 to /v8
Also update to c/image after https://github.com/containers/image/pull/1821 ,
so that we don't ship two versions of the package simultaneously.

[NO NEW TESTS NEEDED]

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2023-02-02 20:01:06 +01:00
Arthur Sengileyev 952049fe52 Support for Windows paths in the source position of the volume mounts
There are 2 things added. First there is added support for handling drive
letters while doing value split. If drive letter is detected, then max number
of elements will be increased by one, but then first two will be concatenated
to reconstruct the path. Second part is basic, but working, conversion of Windows
path to Unix path to be used, when target path is not explicitly specified.

Signed-off-by: Arthur Sengileyev <arthur.sengileyev@gmail.com>
2023-01-30 23:33:33 +02:00
OpenShift Merge Robot f8f606bb07
Merge pull request #17269 from n1hility/add-comment
[CI:DOCS] Add comment to clarify error handling intention
2023-01-30 06:35:28 -05:00
OpenShift Merge Robot 1f9d2f4023
Merge pull request #17264 from nabbisen/17244-timedatectl_doesnt_exist_on_systemd_free_linux
fix #17244: use /etc/timezone where `timedatectl` is missing on Linux
2023-01-30 02:00:26 -05:00
Jason T. Greene ab8e49d74b Add comment to clarify error handling intention
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2023-01-29 13:43:03 -06:00
nabbisen 12d70446f4
fix #17244: use /etc/timezone where `timedatectl` is missing on Linux
Signed-off-by: nabbisen <nabbisen@scqr.net>
2023-01-30 00:36:37 +09:00
Jason T. Greene 063e273e94 Fix usage of absolute windows paths with --image-path
Only assume that http(s) scheme URLs (only ones supported by http.Client anyway) are URLs.
Treat everything else as a file path. (Windows paths can look like a URL scheme)

Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2023-01-28 18:37:03 -06:00
shblue21 b28519fd96
fix: running check error when podman is default in wsl
If podman is the default wsl distribution, the (default) string is appended and result is assigned false.

[NO NEW TESTS NEEDED]

Fixes #17227

Signed-off-by: shblue21 <jihunkimkw@gmail.com>
2023-01-27 19:43:51 +09:00
Brent Baude 7aef3301da WSL refactoring
Small amount of refactoring to make WSL specific stuff into the WSL
package where possible.  This is in preparation for the possibility of
adding more virtualization backends.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-01-23 10:48:32 -06:00
Arthur Sengileyev 35d2f61ec1 Updated options for QEMU on Windows hosts
Using "w" suffixed versions of QEMU binaries for correct background process
handling and not bind it to lifecycle of command prompt window. Stub for
arm64 version added to fix compilation issues of this target, when QEMU
machine will be finally enabled.

Signed-off-by: Arthur Sengileyev <arthur.sengileyev@gmail.com>
2023-01-09 23:58:47 +02:00
Jason T. Greene 86965f7580 Add support for Windows ARM64
Use system call instead of GOARCH to support Windows userspace x86 emulation, as well as native arm

Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2023-01-03 16:22:02 -06:00
Brent Baude 0c68058805 Remove references to qcow2
Issue #16928 rightly points out that qcow2 images are not used on all
podman architectures.

Fixes: #16928

Signed-off-by: Brent Baude <bbaude@redhat.com>
2022-12-25 10:49:47 -06:00
Paul Holzinger 4fa65ad0dc
libpod: remove CNI word were no longer applicable
We should have done this much earlier, most of the times CNI networks
just mean networks so I changed this and also fixed some function
names. This should make it more clear what actually refers to CNI and
what is just general network backend stuff.

[NO NEW TESTS NEEDED]

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-12-16 14:20:14 +01:00
Sorin Sbarnea 866426a93d
Make qemu security model none
On Mac machines security model none works, while "mapped-xattr"
causes symlinks to not work.

Update docs/source/markdown/podman-machine-init.1.md

[NO NEW TESTS NEEDED]

Related: https://github.com/containers/podman/discussions/16102

Co-authored-by: Tom Sweeney <tsweeney@redhat.com>
Signed-off-by: Sorin Sbarnea <sorin.sbarnea@gmail.com>
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-12-14 15:35:30 -05:00
OpenShift Merge Robot 9ef2d9dcd9
Merge pull request #16530 from elezar/bump-golang
Bump golang version to 1.18
2022-12-12 08:28:51 -05:00
Jason T. Greene 009f5ec672 Improve atomicity of VM state persistence on Windows
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2022-11-29 12:38:47 -06:00
OpenShift Merge Robot c49de2210c
Merge pull request #16651 from rhatdan/codespell
Run codespell on code
2022-11-28 16:44:19 -05:00
Daniel J Walsh f17479c711
Run codespell on code
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-11-28 15:13:43 -05:00
Evan Lezar dce7b3a5b9 Address golangci-lint issues
Signed-off-by: Evan Lezar <elezar@nvidia.com>
2022-11-28 13:17:57 +01:00
Arthur Sengileyev fbbef79c88 Documenting Hyper-V QEMU acceleration settings
Signed-off-by: Arthur Sengileyev <arthur.sengileyev@gmail.com>
2022-11-28 14:11:00 +02:00
OpenShift Merge Robot e4e7e41ce5
Merge pull request #16457 from bjorndown/feature/pass-ssl-cert-file-via-fw-cfg
podman machine: Propagate SSL_CERT_FILE and SSL_CERT_DIR to systemd e…
2022-11-28 06:31:35 -05:00
Paul Holzinger 2ddf1c5cbd
ginkgo tests: apply ginkgolinter fixes
I found the ginkgolinter[1] by accident, this looks for not optimal
matching and suggest how to do it better.

Overall these fixes seem to be all correct and they will give much
better error messages when something fails.
Check out the repo to see what the linter reports.

[1] https://github.com/nunnatsa/ginkgolinter

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-11-25 14:41:43 +01:00
Björn Mosler caa2dfe01b podman machine: Propagate SSL_CERT_FILE and SSL_CERT_DIR to systemd environment.
Fixes #16041.

Signed-off-by: Björn Mosler <dev@bjoern.mosler.ch>
2022-11-20 14:14:50 +01:00
Erik Sjölund 72966a32cd [CI:DOCS] Fix spelling and typos
Signed-off-by: Erik Sjölund <erik.sjolund@gmail.com>
2022-11-19 16:26:00 +01:00
Ashley Cui dd98e3cc64 Add --quiet and --no-info flags to podman machine start
Add quiet and no-info flags to podman machine start.
No-info suppresses helpful informational tips
Quiet suppresses machine start progress output, as well as informational
tips.

Signed-off-by: Ashley Cui <acui@redhat.com>
2022-11-11 16:14:20 -05:00
Jason T. Greene 85ae935afa Use single unqualified search registry on Windows
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2022-11-07 23:51:34 -06:00
Doug Rabson e23444fbc5 pkg/machine: Make this build on FreeBSD/arm64
[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-10-31 15:13:49 +00:00