Commit Graph

105 Commits

Author SHA1 Message Date
Brent Baude
446df4379f machine e2e : set default disk size to 11
this default value for podman machine disk sizes is 100GB.  On CI
platforms where the IO is slow and some operations are not done
sparsely, this can really slow things down.

if no disk size is provided by the init command in the test suite, we
set it to 11G.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-12-13 12:14:42 -06:00
Brent Baude
e5c726daff Make hyperv pass
It seems CI generally needs a little more of a default timeout to
complete the init and boot process of a machine.  This extends the
timeout from 90 seconds to 240 seconds.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-12-12 08:30:03 -06:00
Brent Baude
e5a4f00b7d Podman 5 machine config file - Step 1
The following PR is the very first step in what will a series of steps
to apply a "common" machine configuration file to all providers.
Function names, method names, struct names, and field names are all up
for debate.  The purpose of this PR is to offer a glimpse at the
direction we intend to take.

This PR also contains temporary structs (i.e. aThing) that are not
exported.  These are merely placeholders.

The configuration work in this PR is also unused of yet.  But the code
is compiled.  Once merged, we can begin the next step of development.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-12-11 16:26:15 -06:00
Brent Baude
36e29a8432 Fix WSL machine test regressions
WSL is unable to set or change CPU/memory settings.  We should not test
for them.

Skip one test and filed issue #20978

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-12-11 08:10:47 -06:00
Brent Baude
1ebd507fbf Fix regression in e2e machine test suite
A simple regression was introduced to the test suite that overrode the
default image for hyperv testing.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-12-07 21:06:46 -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
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
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
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
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-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
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
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
openshift-ci[bot]
aa0e96e781 Merge pull request #20274 from ashley-cui/cleanup
Machine: Teardown on init failure
2023-10-13 14:22:46 +00:00
Daniel J Walsh
cb53bcf23f Run codespell
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-10-12 12:45:44 -04:00
Ashley Cui
61e0b64b91 Machine: Teardown on init failure
If init fails, or if a SIGINT is sent during init, podman machine should remove all files and configs
created during the init. This includes config jsons, image files, ssh
id's, and system connections. On Windows, the VM instances are also
unregistered.

Signed-off-by: Ashley Cui <acui@redhat.com>
2023-10-12 09:26:06 -04:00
OpenShift Merge Robot
26ae0ba851 Merge pull request #20190 from baude/issue20122
podman machine: disable zincati update service
2023-09-28 21:14:20 -04:00
Ashley Cui
bcfd9f3403 New machines should show Never as LastUp
After creating a podman machine, and before starting it, the LastUp value for podman machine ls should display Never. Previously, the LastUp value was the same as creation time. This also changes the LastUp value for inspect to ZeroTime instead of creation time.

Signed-off-by: Ashley Cui <acui@redhat.com>
2023-09-28 14:16:26 -04:00
Brent Baude
94818f5941 podman machine: disable zincati update service
As explained in #21022, there are all kinds of downsides to a machine
updating itself (via zincati) automatically, like interuption of
service, lost mounts, etc.

disabling zincati will at least allow stop these downsides.  we are
likely to contemplate if podman will take over the update process
externally where interuption of services will not occur etc.

Fixes #20122

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-09-28 13:01:52 -05:00
Brent Baude
0d4526e61c wsl: enable machine init tests
many of wsl's attributes are not as configurable as other providers.
small tweaks and conditional tests have been added.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-09-27 12:10:08 -05:00
Ashley Cui
127ebe2b27 Update machine tests README
Windows now has a winmake file for easier testing, so document that.

Signed-off-by: Ashley Cui <acui@redhat.com>
2023-09-26 15:51:33 -04:00
Ashley Cui
80952db0ba Fix podman machine info test for hyperV
We do not guarantee that the amount of machines that exist on the system
is 0 before running a test.

Signed-off-by: Ashley Cui <acui@redhat.com>
2023-09-26 15:49:55 -04:00
OpenShift Merge Robot
94f47d6f66 Merge pull request #20141 from baude/wslenablestop
pkg/machine/e2e: wsl stop
2023-09-26 13:37:52 -04:00
OpenShift Merge Robot
f64234969a Merge pull request #20135 from ashley-cui/hypervroot
hyperV: Respect rootful option on machine init
2023-09-26 10:54:46 -04:00
Brent Baude
8bad842a45 pkg/machine/e2e: wsl stop
allow the machine stop test to pass.

small change to WSL stop on an already stopped machine to allow for it
to behave like hyperv and qemu

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-09-26 09:27:51 -05:00
OpenShift Merge Robot
d2d121a389 Merge pull request #20152 from baude/wslenableinspect
wsl: machine tests for inspect
2023-09-26 10:23:15 -04:00
Brent Baude
217c4d5468 wsl: machine tests for inspect
small corrections for wsl between sockets and pipe

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-09-26 07:26:44 -05:00
Brent Baude
e4bfcfc254 wsl: machine tests for ssh
a couple of small corrections for the ssh tests on WSL.  we need to
check for a different os type and windows emits a warning in stderr.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-09-26 07:00:45 -05:00
OpenShift Merge Robot
a2434a9d37 Merge pull request #20144 from baude/wslenableset
wsl machine tests: set
2023-09-26 07:53:58 -04:00
OpenShift Merge Robot
72033cdc6a Merge pull request #20137 from baude/applehvenablee2e
Enable machine e2e test for applehv
2023-09-26 07:22:14 -04:00
Brent Baude
d3d5011dc4 wsl machine tests: set
wsl does not support changing the disk size, processor number, or memory
allocation.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-09-25 19:53:35 -05:00
OpenShift Merge Robot
aebfde2408 Merge pull request #20142 from baude/wslenablerm
wsl: machine tests for machine rm
2023-09-25 19:55:41 -04:00
Brent Baude
cc4917d81d wsl: machine tests
WSL does not use ignition therefore the test for the file is invalid.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-09-25 16:22:37 -05:00
Ashley Cui
ec68a74892 Skip proxy test for hyperV
Currently proxys are not supported on hyperV, skip the test and
document it for now.

Opened https://github.com/containers/podman/issues/20129 to track the
issue.

Signed-off-by: Ashley Cui <acui@redhat.com>
2023-09-25 16:48:35 -04:00
Brent Baude
33a92aa006 Enable machine e2e test for applehv
This PR allows you to run the pkg/machine/e2e tests for the applehv PROVIDER.  This does not mean they pass, only that they can run.  There also appears to be leftover gvproxy processes at the conclusion of a single test.  This will need to be corrected.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-09-25 15:45:26 -05:00
Ashley Cui
65ce034863 hyperV: Respect rootful option on machine init
Fixed a bug where the rootful option to the podman machine init command
would not be written to to the machine config, and the rootful docker
sock would not be set.

Signed-off-by: Ashley Cui <acui@redhat.com>
2023-09-25 16:13:55 -04:00
Brent Baude
41e51f4738 hyperv: machine e2e tests for set command
The usermode networking scenario is only for WSL.  Hyperv cannot run it.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-09-25 09:54:38 -05:00
OpenShift Merge Robot
3d5b9e80c6 Merge pull request #20114 from baude/hypervtzfix
Fix setting timezone on HyperV
2023-09-24 17:00:20 -04:00
Brent Baude
cd4f611810 Fix setting timezone on HyperV
the timezone was being set with the wrong path separator for hyperv
because it was being generated on Windows.

Fixes: coreos/fedora-coreos-tracker#1580

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-09-23 11:04:45 -05:00
Ashley Cui
d8e3057165 Adjust machine CPU tests
Machine cpu default has changed to cpus/2, so adjust the tests to reflect that.

Signed-off-by: Ashley Cui <acui@redhat.com>
2023-09-22 13:11:12 -04:00
Brent Baude
c66aa3b7bb fixes for pkg/machine/e2e on hyperv
some problems were found in machine tests on hyperv.

in the case of rootful, it is currently not implemented.  an issue #20092 has been
created for that problem.

there also seems to be a timezone issue between ignition and fcos right
now.  inquiries are in for that but no issue generated for that.  this
problem is not exclusive to hyperv by any means.

both of the above have been skipped or commented out.

otherwise, this fixes machine state reporting for consistency.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-09-21 16:14:57 -05:00
Brent Baude
5b3801776b Various updates for hyperv and machine e2e tests
This PR is a mishmash of updates needed so that the hyperv provider can
begin to passd the machine e2e tests.

Summary as follows:
* Added custom error handling for machine errors so that all providers
  can generate the same formatted error messages.  The ones implemented
  thus far are needed for the basic and init tests.  More will come as
  they are identified.
* Vendored new libhvee for better memory inspection.  The memory type
  changed from uint32 to uint64.
* Some machine e2e tests used linux-specific utilities to check various
  error conditions and messages (like pgrep).  Those were made into
  functions and implemented on an operating system level.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-09-21 08:52:02 -05:00
Brent Baude
38f5ead331 Enable machine e2e tests for WSL
this pr allows us to run the machine e2e tests with the wsl provider.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-09-19 17:16:45 -05:00
Brent Baude
919dce1315 Plumbing to run machine tests with hyperv
this pr has the basic plumbing that allows the e2e machine tests to run
with the hyperv provider.

it requires a special fcos image right now because gvforwarder was not
in the upstream fcos images for hyperv.

changed the way "provider" is set; moved GetProvider functions to
pkg/machine/provider.  provider is now set at the machine level.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-09-14 15:57:35 -05:00