Commit Graph

21626 Commits

Author SHA1 Message Date
Brent Baude d5eb8f3b71 AppleHV - make gz ops sparse
gz by definition is not able to preserve the sparse nature of files.  using some code from the crc project and gluing it together with our decompression code, we can re-create the sparseness of a file.  one downside is the operation is a little bit slower, but i think the gains from the sparse file are well worth it in IO alone.

there are a number of todo's in this PR that would be ripe for quick hitting fixes.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <baude@redhat.com>
2024-02-07 09:19:09 -06:00
Brent Baude 85d8281484 create machine dirs at discovery
in various use cases, the required machine dirs are not created.  the
machine dirs are runtimedir, datadir, and configdir.  Example in Linux
would be:

configDir /<HOME>/.config/containers/podman/machine/<provider>
dataDir /<HOME>/.local/share/containers/podman/machine/<provider>
runtimeDir /run/user/1000/podman/machine

now we blindly create them without checking for their existence (because
it is faster).

this fixes a bug where runtimedir does not exist on macos after a reboot

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <baude@redhat.com>
2024-02-07 09:19:00 -06:00
Brent Baude b1ce6ef9a8 podman machine 5 - hyperv
this pr represents the podman 5 maching refactoring for HyperV.  with
the exception of already skipped tests, all local tests pass.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-02-07 09:18:51 -06:00
Brent Baude 6b02c4894b Podman 5 machine refactor - applehv
this is the second provider done (qemu first).  all tests pass on arm64 hardware locally ... the hybrid pull from oci registries limit this to arm64 only.

calling gvproxy, waiting for it, and then vfkit seems to still be problematic.  this would be an area that should be cleaned up once all providers are implemented.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-02-07 09:18:45 -06:00
Brent Baude e8501ca991 Implement generic providers
The intial refactor used specifically qemu for testing and infra bring
up.  But the whole point was to have things interfaced.  This PR results
in an interface experience like podman 4 using the same term `provider`
to generically represent 'a provider' like qemu/applehv/etc.

This PR is required to move forward with new providers.

Also renamed pkg/machine/p5 to pkg/machine/shim.

[NO NEW TESTS REQUIRED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-02-07 09:18:38 -06:00
Brent Baude 9bb191df51 [CI:MACHINE]Podman5 QEMU refactor
The following PR is the leading PR for refactoring podman machine with
the following goals:

* less duplication/more re-use
* common configuration file between providers
* more consistentency in how machines are handled by providers

The goal of this PR is the rough refactor.  There are still rough spots
for sure, specifically around the podman socket and pipe.  This
implemention is only for Linux. All other providers are still present
but will not compile or work.  This is why tests for them have been
temporarily suspended.

The ready socket code is another area that needs to be smoothed over.
Right now, the ready socket code is still in QEMU.  Preferably it would
be moved to a generic spot where all three approaches to readiness
socket use can be defined.

It should also be noted:

* all machine related tests pass.
* make validate for Linux passes
* Apple QEMU was largely removed
* More code pruning is possible; will become clearer when other
  providers are complete.

the dir pkg/machine/p5 is not permanent.  i had to seperate this from
machine initially due to circular import problems.  i think when all
providers are done (or nearly done), it can be placed and named
properly.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-02-07 09:18:36 -06:00
openshift-merge-bot[bot] caee76ed57
Merge pull request #20790 from lsm5/rpm-remove-dnsname
[CI:BUILD] rpm: remove dnsname
2024-02-07 15:04:43 +00:00
Brent Baude b9bcfa4749 podman5 machine reconfig 1
this is a logical place to get changes upstream before they grow out of
control.  this pr is the first in an effort to deduplicate machine code
and streamline code flow.

a lot of code is simply moved to eliminate circular imports.  names and
specific paths can ultimately be changed.  i dont like some of the
descriptive interface names, etc.  ultimately, i think once we have the
"old" code sanitized, we can re-use some of those.

clearly some of what is in here is temporary and will either be deleted,
changed, or moved again as this effort comes to a close.

right now, the machine code does not use any of the "new" code.  you
will see in `init` and `rm` some commented out code that hooks it. i'm
afraid things will get worse before they get better (way worse).

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-02-07 08:17:43 -06:00
Andre Marianiello c89dd4a92f Use tmpfs mounts when creating a memory-backed emptyDir volume
Signed-off-by: Andre Marianiello <andremarianiello@users.noreply.github.com>
2024-02-07 08:17:43 -06:00
Matt Heon 3cf2f8ccf4 Handle more states during refresh
We were preserving ContainerStateExited, which is better than
nothing, but definitely not correct. A container that ran at any
point during the last boot should be moved to Exited state to
preserve the fact that they were run at least one. This means we
have to convert Running, Stopped, Stopping, Paused containers to
exited as well.

Signed-off-by: Matt Heon <mheon@redhat.com>
2024-02-07 08:33:56 -05:00
Giuseppe Scrivano 77847bd67a
docs: make --seccomp=profile.json clearer
There are not only allowed syscalls, also blocked ones or handled
differently.

[CI:DOCS]

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2024-02-07 13:16:35 +01:00
Christophe Fergeau 6ca6184ed6 gomod: Update containers/psgo to 1.9.0
This solves an issue with a non-existing module:

```
$ go mod tidy
[...]
github.com/mitchellh/osext@v0.0.0-20151018003038-5e2d6d41470f: invalid version
```

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
2024-02-07 12:31:35 +01:00
openshift-merge-bot[bot] 6b592bd4e4
Merge pull request #21524 from andremarianiello/memory-emptydir
Use tmpfs mounts when creating a memory-backed emptyDir volume
2024-02-07 06:46:27 +00:00
Vikas Goel a8b2256cc1 Set interface name to the network_interface name for macvlan and ipvlan networks
When interface_name attribute in containers.conf file is set to "device", then set interface names inside containers same as the network_interface names of the respective network.

The change applies to macvlan and ipvlan networks only. The interface_name attribute value has no impact on any other types of networks.

If the interface name is set in the user request, then that takes precedence.

Fixes: #21313

Signed-off-by: Vikas Goel <vikas.goel@gmail.com>
2024-02-06 19:05:16 -08:00
openshift-merge-bot[bot] f4f96a226f
Merge pull request #21518 from Luap99/strongunits
vendor: update c/common + libhvee to latest main and use pkg/strongunits from c/common
2024-02-07 01:46:06 +00:00
Matt Heon 6e0decbe03 Send container stats over API on a per-interface basis
This mirrors how the Docker API handles things, allowing us to be
more compatible with Docker and more verbose on the Libpod API.
Stats are given as per network interface in the container, but
still aggregated for `podman stats` and `podman pod stats`
display (so the CLI does not change, only the Libpod and Compat
APIs).

Signed-off-by: Matt Heon <mheon@redhat.com>
2024-02-06 17:05:07 -05:00
Matt Heon 9983e87440 Remove leftover autoremove containers during refresh
During system shutdown, Podman should go down gracefully, meaning
that we have time to spawn cleanup processes which remove any
containers set to autoremove. Unfortunately, this isn't always
the case. If we get a SIGKILL because the system is going down
immediately, we can't recover from this, and the autoremove
containers are not removed.

However, we can pick up any leftover autoremove containers when
we refesh the DB state, which is the first thing Podman does
after a reboot. By detecting any autoremove containers that have
actually run (a container that was created but never run doesn't
need to be removed) at that point and removing them, we keep the
fresh boot clean, even if Podman was terminated abnormally.

Fixes #21482

[NO NEW TESTS NEEDED] This requires a reboot to realistically
test.

Signed-off-by: Matt Heon <mheon@redhat.com>
2024-02-06 17:03:36 -05:00
Chris Evich 43a01d7dc2
Temporarily ignore windows-linting failures
As of this commit, there are several pages worth of lint findings for
windows.  Once they're all addressed, this commit may be reverted to
enable continuous checking.

Signed-off-by: Chris Evich <cevich@redhat.com>
2024-02-06 16:28:38 -05:00
Chris Evich defbf42376
Lint before windows-cross build
Signed-off-by: Chris Evich <cevich@redhat.com>
2024-02-06 16:28:38 -05:00
Chris Evich d44bafc3c4
Reimplement lint with improved compatibility
Specifically, Darwin's bash is very old so it doesn't support newer
features like `declare -A`.  Reduce the complexity of the script
so that it can be used for all platforms.  Comment heavily regarding the
scripts various execution contexts to prevent developers relying on
advanced features for any future modifications.

Signed-off-by: Chris Evich <cevich@redhat.com>
2024-02-06 16:28:38 -05:00
Daniel J Walsh c7910e75e3
Show network name network events with podman -remote events
Fixes: https://github.com/containers/podman/issues/21311

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-02-06 15:43:05 -05:00
openshift-merge-bot[bot] 22b1650619
Merge pull request #21530 from Luap99/netavark-skip
test/e2e: unskip netavark macvlan/ipvlan tests
2024-02-06 19:21:05 +00:00
Paul Holzinger 46fe7ef3bb
use pkg/strongunits from c/common
The code has been moved to c/common so it can be shared with libhvee.

[NO NEW TESTS NEEDED]

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-02-06 16:39:16 +01:00
Paul Holzinger 5de4bd5d13
vendor: update c/common + libhvee to latest main
Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-02-06 16:39:02 +01:00
Paul Holzinger a997d7d819
test/e2e: unskip netavark macvlan/ipvlan tests
These should all work with the latest netavark. The ipvlan case needs a
subnet because it does not support DHCP.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-02-06 15:49:34 +01:00
openshift-merge-bot[bot] 855a7cf0f4
Merge pull request #21413 from cevich/machine_cron
Include machine-tests in cirrus-cron jobs
2024-02-06 14:41:03 +00:00
openshift-merge-bot[bot] 75e6564138
Merge pull request #21497 from vikas-goel/volsfrom
Use semi-colon as the field separator for internal volumes-from inspect annotation
2024-02-06 14:35:34 +00:00
openshift-merge-bot[bot] f439f4e9da
Merge pull request #21431 from lsm5/cgroupv1-warn
Warn if cgroups-v1
2024-02-06 14:13:35 +00:00
Paul Holzinger 7d15bc2efb
fix userns + restart policy with slirp4netns
Currently we deadlock in the slirp4netns setup code as we try to
configure an non exissting netns. The problem happens because we tear
down the netns in the userns case correctly since commit bbd6281ecc but
that introduces this slirp4netns problem. The code does a proper new
network setup later so we should only use the short cut when not in a
userns.

Fixes #21477

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-02-06 13:50:07 +01:00
Daniel J Walsh fcae702205
Reuse timezone code from containers/common
Replaces: https://github.com/containers/podman/pull/21077

[NO NEW TESTS NEEDED] Existing tests should handle this.

Signed-off-by: Sohan Kunkerkar <sohank2602@gmail.com>
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-02-06 07:09:16 -05:00
Daniel J Walsh 85904e01f3
Vendor in containers/common
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-02-06 07:09:16 -05:00
Lokesh Mandvekar 01a8539ef0
Warn if cgroups-v1
Podman v5 will not support cgroups-v1. This commit will print a warning
if it detects a cgroups-v1 system. The warning can be hidden by setting
envvar `PODMAN_CGROUPSV1_WARNING`.

This warning is patched out for RHEL 9 builds as cgroups-v1 will still
be supported on RHEL 9 systems.

Resolves: https://issues.redhat.com/browse/RUN-1957

[NO NEW TESTS NEEDED]

Co-authored-by: Ed Santiago <santiago@redhat.com>
Co-authored-by: Sascha Grunert <sgrunert@redhat.com>
Co-authored-by: Giuseppe Scrivano <gscrivan@redhat.com>
Signed-off-by: Lokesh Mandvekar <lsm5@redhat.com>
2024-02-06 16:18:05 +05:30
openshift-merge-bot[bot] a2f0a44501
Merge pull request #21410 from ashley-cui/cnici
Do not test CNI in CI
2024-02-06 10:41:48 +00:00
openshift-merge-bot[bot] 8be1ce296a
Merge pull request #21501 from kanielrkirby/correct-stars-markdown
[CI:DOCS] Corrected markdown documentation for `--stars`
2024-02-05 22:02:48 +00:00
Andre Marianiello d3281cf887
Use tmpfs mounts when creating a memory-backed emptyDir volume
Signed-off-by: Andre Marianiello <andremarianiello@users.noreply.github.com>
2024-02-05 13:24:07 -08:00
Piratey7007 2eee3cd812 Corrected markdown documentation for `--stars`
The `--stars` option was incorrectly documented as meaning
the number of stars to filter by. This has been corrected
to indicate that it is the minimum number of stars to filter
by.

Tweaked wording of podman-search.md stars filter text

Signed-off-by: Kaniel Kirby <piratey7007@runbox.com>
2024-02-05 11:37:01 -06:00
Paul Holzinger 35d1f12213
make podman pod inspect output a json array
Just like all the other inspect commands that accept multiple args we
should just make podman pod inspect output a json array.
This makes the code more consistent and removes the extra workaround
which was needed before to support this.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-02-05 17:26:55 +01:00
Ashley Cui 26cd01ee51 Do not test CNI in CI
CNI is deprecated and is build tagged out for 5.0. Don't test it in our CI.
This commit also disables upgrade tests for now - those need more work since the old version of Podman only uses CNI. Upgrade tests will be re-vamped in a later commit.
Signed-off-by: Ashley Cui <acui@redhat.com>
2024-02-05 11:01:21 -05:00
openshift-merge-bot[bot] fc3ae73961
Merge pull request #21494 from containers/renovate/github.com-docker-docker-25.x
fix(deps): update module github.com/docker/docker to v25.0.2+incompatible
2024-02-05 15:43:21 +00:00
openshift-merge-bot[bot] bb6a561583
Merge pull request #21457 from containers/renovate/github.com-mattn-go-sqlite3-1.x
fix(deps): update module github.com/mattn/go-sqlite3 to v1.14.21
2024-02-05 14:53:48 +00:00
Ashley Cui ee923358c3 Vendor c/common
@main

Signed-off-by: Ashley Cui <acui@redhat.com>
2024-02-05 09:46:40 -05:00
Paul Holzinger 249474a84e
drop support for "pasta" as a network name
The pasta network mode has been added in podman v4.4 and this causes a
conflict with named networks that could also be called "pasta". To not
break anything we had special logic to prefer the named network over the
network mode. Now with 5.0 we can break this and remove this awkward
special handling from the code.

Containers created with 4.X that use a named network pasta will also
continue to work fine, this chnage will only effect the creation of new
containers with a named network pasta and instead always used the
network mode pasta. We now also block the creation of networks with the
name "pasta".

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-02-05 13:57:24 +01:00
Vikas Goel a098899104 Use semi-colon as the field separator for internal volumes-from inspect annotation
The current field separator comma of the inspect annotation conflicts with the mount options of --volumes-from as the mount options itself can be comma separated.

Signed-off-by: Vikas Goel <vikas.goel@gmail.com>
2024-02-05 00:16:53 -08:00
openshift-merge-bot[bot] daf7a2c069
Merge pull request #21372 from cevich/win_mac_lint
Run lint for mac builds
2024-02-03 13:19:30 +00:00
renovate[bot] d217de6424
[skip-ci] Update github/issue-labeler action to v3.4
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-02 23:24:07 +00:00
renovate[bot] 9e3d61a9d5
fix(deps): update module github.com/docker/docker to v25.0.2+incompatible
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-02 22:02:19 +00:00
openshift-merge-bot[bot] 2431fb3f0b
Merge pull request #21472 from mheon/vendor_runc_main
Update to runc main, removing pin to an older version
2024-02-02 22:01:02 +00:00
Chris Evich 39f22c3821
Include machine-tests in cirrus-cron jobs
Irrespective of reason/cause, a commit was merged into main that broke
podman-machine, and went unnoticed for several days.  Improve the
situation by including podman-machine testing in the daily cirrus-cron
builds.  These are monitored by e-mail when `Total Success` reports a
failure.

Also: Add a comment for Windows & Mac build tasks, documenting the
reason they don't execute on RHEL release branches.

Signed-off-by: Chris Evich <cevich@redhat.com>
2024-02-02 14:46:54 -05:00
Matt Heon 7de64b47f2 Vendor c/storage main
This picks up a further removal of the runc users package that
was breaking the build on Windows.

Signed-off-by: Matt Heon <mheon@redhat.com>
2024-02-02 13:30:07 -05:00
openshift-merge-bot[bot] 11c37d5c95
Merge pull request #21272 from rhatdan/VENDOR
Add tests to make sure mounts.conf does not warn on missing content
2024-02-02 16:03:39 +00:00